@towns-labs/sdk 2.0.11 → 2.0.13

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 (508) hide show
  1. package/dist/client.d.ts +13 -31
  2. package/dist/client.d.ts.map +1 -1
  3. package/dist/client.js +113 -328
  4. package/dist/client.js.map +1 -1
  5. package/dist/clientDecryptionExtensions.d.ts.map +1 -1
  6. package/dist/clientDecryptionExtensions.js +10 -28
  7. package/dist/clientDecryptionExtensions.js.map +1 -1
  8. package/dist/createApp.d.ts +1 -1
  9. package/dist/createApp.d.ts.map +1 -1
  10. package/dist/createApp.js +6 -2
  11. package/dist/createApp.js.map +1 -1
  12. package/dist/id.d.ts +1 -17
  13. package/dist/id.d.ts.map +1 -1
  14. package/dist/id.js +1 -53
  15. package/dist/id.js.map +1 -1
  16. package/dist/index.d.ts +0 -22
  17. package/dist/index.d.ts.map +1 -1
  18. package/dist/index.js +0 -22
  19. package/dist/index.js.map +1 -1
  20. package/dist/migrations/snapshotMigration0001.d.ts.map +1 -1
  21. package/dist/migrations/snapshotMigration0001.js +0 -4
  22. package/dist/migrations/snapshotMigration0001.js.map +1 -1
  23. package/dist/migrations/snapshotMigration0002.d.ts.map +1 -1
  24. package/dist/migrations/snapshotMigration0002.js +1 -19
  25. package/dist/migrations/snapshotMigration0002.js.map +1 -1
  26. package/dist/migrations/snapshotMigration0004.d.ts.map +1 -1
  27. package/dist/migrations/snapshotMigration0004.js +1 -27
  28. package/dist/migrations/snapshotMigration0004.js.map +1 -1
  29. package/dist/migrations/snapshotMigration0005.d.ts.map +1 -1
  30. package/dist/migrations/snapshotMigration0005.js +1 -26
  31. package/dist/migrations/snapshotMigration0005.js.map +1 -1
  32. package/dist/notificationsClient.d.ts +1 -5
  33. package/dist/notificationsClient.d.ts.map +1 -1
  34. package/dist/notificationsClient.js +2 -103
  35. package/dist/notificationsClient.js.map +1 -1
  36. package/dist/persistenceStore.d.ts.map +1 -1
  37. package/dist/persistenceStore.js +6 -18
  38. package/dist/persistenceStore.js.map +1 -1
  39. package/dist/streamEvents.d.ts +0 -6
  40. package/dist/streamEvents.d.ts.map +1 -1
  41. package/dist/streamStateView.d.ts +0 -9
  42. package/dist/streamStateView.d.ts.map +1 -1
  43. package/dist/streamStateView.js +3 -64
  44. package/dist/streamStateView.js.map +1 -1
  45. package/dist/streamStateView_MemberMetadata.d.ts +3 -36
  46. package/dist/streamStateView_MemberMetadata.d.ts.map +1 -1
  47. package/dist/streamStateView_MemberMetadata.js +3 -83
  48. package/dist/streamStateView_MemberMetadata.js.map +1 -1
  49. package/dist/streamStateView_Members.d.ts +1 -5
  50. package/dist/streamStateView_Members.d.ts.map +1 -1
  51. package/dist/streamStateView_Members.js +4 -91
  52. package/dist/streamStateView_Members.js.map +1 -1
  53. package/dist/streamStateView_User.d.ts.map +1 -1
  54. package/dist/streamStateView_User.js +1 -0
  55. package/dist/streamStateView_User.js.map +1 -1
  56. package/dist/streamStateView_UserInbox.d.ts.map +1 -1
  57. package/dist/streamStateView_UserInbox.js +1 -0
  58. package/dist/streamStateView_UserInbox.js.map +1 -1
  59. package/dist/streamStateView_UserMetadata.d.ts.map +1 -1
  60. package/dist/streamStateView_UserMetadata.js +1 -0
  61. package/dist/streamStateView_UserMetadata.js.map +1 -1
  62. package/dist/streamStateView_UserSettings.d.ts.map +1 -1
  63. package/dist/streamStateView_UserSettings.js +9 -1
  64. package/dist/streamStateView_UserSettings.js.map +1 -1
  65. package/dist/streamUtils.d.ts.map +1 -1
  66. package/dist/streamUtils.js +0 -8
  67. package/dist/streamUtils.js.map +1 -1
  68. package/dist/sync/SyncedStreamsControllerLite.d.ts.map +1 -1
  69. package/dist/sync/SyncedStreamsControllerLite.js +7 -11
  70. package/dist/sync/SyncedStreamsControllerLite.js.map +1 -1
  71. package/dist/sync-agent/db.d.ts +1 -6
  72. package/dist/sync-agent/db.d.ts.map +1 -1
  73. package/dist/sync-agent/db.js +0 -10
  74. package/dist/sync-agent/db.js.map +1 -1
  75. package/dist/sync-agent/gdms/gdms.d.ts +5 -6
  76. package/dist/sync-agent/gdms/gdms.d.ts.map +1 -1
  77. package/dist/sync-agent/gdms/gdms.js +12 -27
  78. package/dist/sync-agent/gdms/gdms.js.map +1 -1
  79. package/dist/sync-agent/gdms/models/gdm.d.ts +10 -8
  80. package/dist/sync-agent/gdms/models/gdm.d.ts.map +1 -1
  81. package/dist/sync-agent/gdms/models/gdm.js +29 -34
  82. package/dist/sync-agent/gdms/models/gdm.js.map +1 -1
  83. package/dist/sync-agent/members/members.d.ts +6 -18
  84. package/dist/sync-agent/members/members.d.ts.map +1 -1
  85. package/dist/sync-agent/members/members.js +25 -124
  86. package/dist/sync-agent/members/members.js.map +1 -1
  87. package/dist/sync-agent/members/models/member.d.ts +3 -45
  88. package/dist/sync-agent/members/models/member.d.ts.map +1 -1
  89. package/dist/sync-agent/members/models/member.js +15 -114
  90. package/dist/sync-agent/members/models/member.js.map +1 -1
  91. package/dist/sync-agent/members/models/myself.d.ts +1 -11
  92. package/dist/sync-agent/members/models/myself.d.ts.map +1 -1
  93. package/dist/sync-agent/members/models/myself.js +1 -84
  94. package/dist/sync-agent/members/models/myself.js.map +1 -1
  95. package/dist/sync-agent/river-connection/riverConnection.d.ts +6 -17
  96. package/dist/sync-agent/river-connection/riverConnection.d.ts.map +1 -1
  97. package/dist/sync-agent/river-connection/riverConnection.js +30 -37
  98. package/dist/sync-agent/river-connection/riverConnection.js.map +1 -1
  99. package/dist/sync-agent/syncAgent.d.ts +11 -22
  100. package/dist/sync-agent/syncAgent.d.ts.map +1 -1
  101. package/dist/sync-agent/syncAgent.js +3 -20
  102. package/dist/sync-agent/syncAgent.js.map +1 -1
  103. package/dist/sync-agent/user/models/userInbox.d.ts +4 -17
  104. package/dist/sync-agent/user/models/userInbox.d.ts.map +1 -1
  105. package/dist/sync-agent/user/models/userInbox.js +14 -61
  106. package/dist/sync-agent/user/models/userInbox.js.map +1 -1
  107. package/dist/sync-agent/user/models/userMemberships.d.ts +6 -22
  108. package/dist/sync-agent/user/models/userMemberships.d.ts.map +1 -1
  109. package/dist/sync-agent/user/models/userMemberships.js +16 -68
  110. package/dist/sync-agent/user/models/userMemberships.js.map +1 -1
  111. package/dist/sync-agent/user/models/userMetadata.d.ts +4 -17
  112. package/dist/sync-agent/user/models/userMetadata.d.ts.map +1 -1
  113. package/dist/sync-agent/user/models/userMetadata.js +14 -61
  114. package/dist/sync-agent/user/models/userMetadata.js.map +1 -1
  115. package/dist/sync-agent/user/models/userSettings.d.ts +5 -8
  116. package/dist/sync-agent/user/models/userSettings.d.ts.map +1 -1
  117. package/dist/sync-agent/user/models/userSettings.js +15 -42
  118. package/dist/sync-agent/user/models/userSettings.js.map +1 -1
  119. package/dist/sync-agent/user/user.d.ts +2 -6
  120. package/dist/sync-agent/user/user.d.ts.map +1 -1
  121. package/dist/sync-agent/user/user.js +9 -20
  122. package/dist/sync-agent/user/user.js.map +1 -1
  123. package/dist/syncedStreamsExtension.d.ts.map +1 -1
  124. package/dist/syncedStreamsExtension.js +10 -22
  125. package/dist/syncedStreamsExtension.js.map +1 -1
  126. package/dist/syncedStreamsLoop.d.ts.map +1 -1
  127. package/dist/syncedStreamsLoop.js +4 -18
  128. package/dist/syncedStreamsLoop.js.map +1 -1
  129. package/dist/tests/bob_testUtils.d.ts.map +1 -1
  130. package/dist/tests/bob_testUtils.js +35 -69
  131. package/dist/tests/bob_testUtils.js.map +1 -1
  132. package/dist/tests/multi_ne/aliceAndFriends10for10.test.js +1 -1
  133. package/dist/tests/multi_ne/aliceAndFriends10for10.test.js.map +1 -1
  134. package/dist/tests/multi_ne/aliceAndFriendslongAndRandom.test.js +1 -1
  135. package/dist/tests/multi_ne/aliceAndFriendslongAndRandom.test.js.map +1 -1
  136. package/dist/tests/multi_ne/bobFlushes.test.js.map +1 -1
  137. package/dist/tests/multi_ne/channels.test.js +6 -9
  138. package/dist/tests/multi_ne/channels.test.js.map +1 -1
  139. package/dist/tests/multi_ne/client.test.js +24 -98
  140. package/dist/tests/multi_ne/client.test.js.map +1 -1
  141. package/dist/tests/multi_ne/clientCrypto.test.js +3 -3
  142. package/dist/tests/multi_ne/clientCrypto.test.js.map +1 -1
  143. package/dist/tests/multi_ne/clientDecryptionExtensions.test.js +12 -47
  144. package/dist/tests/multi_ne/clientDecryptionExtensions.test.js.map +1 -1
  145. package/dist/tests/multi_ne/ephemeralEvents.test.js +1 -1
  146. package/dist/tests/multi_ne/ephemeralEvents.test.js.map +1 -1
  147. package/dist/tests/multi_ne/id.test.js +6 -20
  148. package/dist/tests/multi_ne/id.test.js.map +1 -1
  149. package/dist/tests/multi_ne/media.test.js +20 -61
  150. package/dist/tests/multi_ne/media.test.js.map +1 -1
  151. package/dist/tests/multi_ne/memberMetadata.test.d.ts +0 -3
  152. package/dist/tests/multi_ne/memberMetadata.test.d.ts.map +1 -1
  153. package/dist/tests/multi_ne/memberMetadata.test.js +14 -582
  154. package/dist/tests/multi_ne/memberMetadata.test.js.map +1 -1
  155. package/dist/tests/multi_ne/outboundGroupSession.test.js +15 -13
  156. package/dist/tests/multi_ne/outboundGroupSession.test.js.map +1 -1
  157. package/dist/tests/multi_ne/restart.test.js +11 -34
  158. package/dist/tests/multi_ne/restart.test.js.map +1 -1
  159. package/dist/tests/multi_ne/sign.test.js +2 -2
  160. package/dist/tests/multi_ne/sign.test.js.map +1 -1
  161. package/dist/tests/multi_ne/streamMembershipHardening.test.js +0 -3
  162. package/dist/tests/multi_ne/streamMembershipHardening.test.js.map +1 -1
  163. package/dist/tests/multi_ne/streamRpcClient.test.js +58 -349
  164. package/dist/tests/multi_ne/streamRpcClient.test.js.map +1 -1
  165. package/dist/tests/multi_ne/streamRpcClientSync.test.js +63 -124
  166. package/dist/tests/multi_ne/streamRpcClientSync.test.js.map +1 -1
  167. package/dist/tests/multi_ne/streamStateView_User.test.js +23 -20
  168. package/dist/tests/multi_ne/streamStateView_User.test.js.map +1 -1
  169. package/dist/tests/{multi/spaceDapp.test.d.ts → multi_ne/sync-agent/gdms.test.d.ts} +1 -1
  170. package/dist/tests/multi_ne/sync-agent/gdms.test.d.ts.map +1 -0
  171. package/dist/tests/multi_ne/sync-agent/gdms.test.js +34 -0
  172. package/dist/tests/multi_ne/sync-agent/gdms.test.js.map +1 -0
  173. package/dist/tests/{multi/legacySpace.test.d.ts → multi_ne/sync-agent/member.test.d.ts} +1 -1
  174. package/dist/tests/multi_ne/sync-agent/member.test.d.ts.map +1 -0
  175. package/dist/tests/multi_ne/sync-agent/member.test.js +31 -0
  176. package/dist/tests/multi_ne/sync-agent/member.test.js.map +1 -0
  177. package/dist/tests/{multi/disableSpace.test.d.ts → multi_ne/sync-agent/members.test.d.ts} +1 -1
  178. package/dist/tests/multi_ne/sync-agent/members.test.d.ts.map +1 -0
  179. package/dist/tests/multi_ne/sync-agent/members.test.js +40 -0
  180. package/dist/tests/multi_ne/sync-agent/members.test.js.map +1 -0
  181. package/dist/tests/multi_ne/sync-agent/riverConnection.test.d.ts +5 -0
  182. package/dist/tests/multi_ne/sync-agent/riverConnection.test.d.ts.map +1 -0
  183. package/dist/tests/multi_ne/sync-agent/riverConnection.test.js +39 -0
  184. package/dist/tests/multi_ne/sync-agent/riverConnection.test.js.map +1 -0
  185. package/dist/tests/multi_ne/sync-agent/streams.test.d.ts +5 -0
  186. package/dist/tests/multi_ne/sync-agent/streams.test.d.ts.map +1 -0
  187. package/dist/tests/multi_ne/sync-agent/streams.test.js +27 -0
  188. package/dist/tests/multi_ne/sync-agent/streams.test.js.map +1 -0
  189. package/dist/tests/multi_ne/sync-agent/syncAgent.test.d.ts +5 -0
  190. package/dist/tests/multi_ne/sync-agent/syncAgent.test.d.ts.map +1 -0
  191. package/dist/tests/multi_ne/sync-agent/syncAgent.test.js +66 -0
  192. package/dist/tests/multi_ne/sync-agent/syncAgent.test.js.map +1 -0
  193. package/dist/tests/multi_ne/sync-agent/syncAgents.test.d.ts +5 -0
  194. package/dist/tests/multi_ne/sync-agent/syncAgents.test.d.ts.map +1 -0
  195. package/dist/tests/multi_ne/sync-agent/syncAgents.test.js +117 -0
  196. package/dist/tests/multi_ne/sync-agent/syncAgents.test.js.map +1 -0
  197. package/dist/tests/multi_ne/sync-agent/timeline.test.d.ts +2 -0
  198. package/dist/tests/multi_ne/sync-agent/timeline.test.d.ts.map +1 -0
  199. package/dist/tests/multi_ne/sync-agent/timeline.test.js +155 -0
  200. package/dist/tests/multi_ne/sync-agent/timeline.test.js.map +1 -0
  201. package/dist/tests/multi_ne/sync-agent/user.test.d.ts +5 -0
  202. package/dist/tests/multi_ne/sync-agent/user.test.d.ts.map +1 -0
  203. package/dist/tests/multi_ne/sync-agent/user.test.js +53 -0
  204. package/dist/tests/multi_ne/sync-agent/user.test.js.map +1 -0
  205. package/dist/tests/multi_ne/syncWithBlocks.test.d.ts +3 -0
  206. package/dist/tests/multi_ne/syncWithBlocks.test.d.ts.map +1 -1
  207. package/dist/tests/multi_ne/syncWithBlocks.test.js +47 -77
  208. package/dist/tests/multi_ne/syncWithBlocks.test.js.map +1 -1
  209. package/dist/tests/multi_ne/syncedStream.test.js +1 -1
  210. package/dist/tests/multi_ne/syncedStream.test.js.map +1 -1
  211. package/dist/tests/multi_ne/syncedStreams.test.js +1 -1
  212. package/dist/tests/multi_ne/syncedStreams.test.js.map +1 -1
  213. package/dist/tests/multi_ne/userInboxMessage.test.js +4 -4
  214. package/dist/tests/multi_ne/userInboxMessage.test.js.map +1 -1
  215. package/dist/tests/multi_ne/userSettings.test.js +3 -16
  216. package/dist/tests/multi_ne/userSettings.test.js.map +1 -1
  217. package/dist/tests/multi_ne/workflows.test.js +22 -50
  218. package/dist/tests/multi_ne/workflows.test.js.map +1 -1
  219. package/dist/tests/testDriver_testUtils.d.ts.map +1 -1
  220. package/dist/tests/testDriver_testUtils.js +6 -22
  221. package/dist/tests/testDriver_testUtils.js.map +1 -1
  222. package/dist/tests/testUtils.d.ts +3 -104
  223. package/dist/tests/testUtils.d.ts.map +1 -1
  224. package/dist/tests/testUtils.js +6 -625
  225. package/dist/tests/testUtils.js.map +1 -1
  226. package/dist/tests/unit/snapshotMigration0001.test.js +4 -20
  227. package/dist/tests/unit/snapshotMigration0001.test.js.map +1 -1
  228. package/dist/tests/unit/snapshotMigration0004.test.js +5 -43
  229. package/dist/tests/unit/snapshotMigration0004.test.js.map +1 -1
  230. package/dist/tests/unit/snapshotMigration0005.test.js +5 -43
  231. package/dist/tests/unit/snapshotMigration0005.test.js.map +1 -1
  232. package/dist/tests/unit/streamUtils.test.js +21 -22
  233. package/dist/tests/unit/streamUtils.test.js.map +1 -1
  234. package/dist/tests/unit/tags.test.js +5 -7
  235. package/dist/tests/unit/tags.test.js.map +1 -1
  236. package/dist/types.d.ts +1 -21
  237. package/dist/types.d.ts.map +1 -1
  238. package/dist/types.js +2 -231
  239. package/dist/types.js.map +1 -1
  240. package/dist/views/models/timelineEvent.d.ts.map +1 -1
  241. package/dist/views/models/timelineEvent.js +132 -157
  242. package/dist/views/models/timelineEvent.js.map +1 -1
  243. package/dist/views/models/timelineTypes.d.ts +51 -30
  244. package/dist/views/models/timelineTypes.d.ts.map +1 -1
  245. package/dist/views/models/timelineTypes.js +3 -4
  246. package/dist/views/models/timelineTypes.js.map +1 -1
  247. package/dist/views/streams/timelines.d.ts +1 -1
  248. package/dist/views/streams/timelines.d.ts.map +1 -1
  249. package/dist/views/streams/timelines.js +3 -3
  250. package/dist/views/streams/timelines.js.map +1 -1
  251. package/dist/views/streams/userInboxStreams.d.ts +3 -0
  252. package/dist/views/streams/userInboxStreams.d.ts.map +1 -1
  253. package/dist/views/streams/userInboxStreams.js +15 -4
  254. package/dist/views/streams/userInboxStreams.js.map +1 -1
  255. package/dist/views/streams/userMetadataStreams.d.ts +3 -0
  256. package/dist/views/streams/userMetadataStreams.d.ts.map +1 -1
  257. package/dist/views/streams/userMetadataStreams.js +15 -4
  258. package/dist/views/streams/userMetadataStreams.js.map +1 -1
  259. package/dist/views/streams/userSettingsStreams.d.ts +3 -0
  260. package/dist/views/streams/userSettingsStreams.d.ts.map +1 -1
  261. package/dist/views/streams/userSettingsStreams.js +17 -6
  262. package/dist/views/streams/userSettingsStreams.js.map +1 -1
  263. package/dist/views/streams/userStreamsView.d.ts +3 -0
  264. package/dist/views/streams/userStreamsView.d.ts.map +1 -1
  265. package/dist/views/streams/userStreamsView.js +21 -10
  266. package/dist/views/streams/userStreamsView.js.map +1 -1
  267. package/dist/views/streamsView.d.ts +0 -6
  268. package/dist/views/streamsView.d.ts.map +1 -1
  269. package/dist/views/streamsView.js +0 -11
  270. package/dist/views/streamsView.js.map +1 -1
  271. package/dist/views/transforms/dmsAndGdmsTransform.d.ts +0 -2
  272. package/dist/views/transforms/dmsAndGdmsTransform.d.ts.map +1 -1
  273. package/dist/views/transforms/dmsAndGdmsTransform.js +1 -26
  274. package/dist/views/transforms/dmsAndGdmsTransform.js.map +1 -1
  275. package/dist/views/transforms/dmsAndGdmsUnreadIdsTransform.d.ts +1 -2
  276. package/dist/views/transforms/dmsAndGdmsUnreadIdsTransform.d.ts.map +1 -1
  277. package/dist/views/transforms/dmsAndGdmsUnreadIdsTransform.js +2 -5
  278. package/dist/views/transforms/dmsAndGdmsUnreadIdsTransform.js.map +1 -1
  279. package/dist/views/transforms/spaceIdsTransform.d.ts +1 -1
  280. package/dist/views/transforms/spaceIdsTransform.d.ts.map +1 -1
  281. package/dist/views/transforms/spaceIdsTransform.js +3 -10
  282. package/dist/views/transforms/spaceIdsTransform.js.map +1 -1
  283. package/dist/views/transforms/spaceMentionsTransform.d.ts.map +1 -1
  284. package/dist/views/transforms/spaceMentionsTransform.js +13 -14
  285. package/dist/views/transforms/spaceMentionsTransform.js.map +1 -1
  286. package/dist/views/transforms/spaceUnreadsTransform.d.ts.map +1 -1
  287. package/dist/views/transforms/spaceUnreadsTransform.js +21 -22
  288. package/dist/views/transforms/spaceUnreadsTransform.js.map +1 -1
  289. package/dist/views/transforms/unreadMarkersTransform.js +2 -4
  290. package/dist/views/transforms/unreadMarkersTransform.js.map +1 -1
  291. package/package.json +10 -9
  292. package/dist/memberMetadata_DisplayNames.d.ts +0 -26
  293. package/dist/memberMetadata_DisplayNames.d.ts.map +0 -1
  294. package/dist/memberMetadata_DisplayNames.js +0 -95
  295. package/dist/memberMetadata_DisplayNames.js.map +0 -1
  296. package/dist/memberMetadata_EnsAddresses.d.ts +0 -25
  297. package/dist/memberMetadata_EnsAddresses.d.ts.map +0 -1
  298. package/dist/memberMetadata_EnsAddresses.js +0 -86
  299. package/dist/memberMetadata_EnsAddresses.js.map +0 -1
  300. package/dist/memberMetadata_Nft.d.ts +0 -31
  301. package/dist/memberMetadata_Nft.d.ts.map +0 -1
  302. package/dist/memberMetadata_Nft.js +0 -95
  303. package/dist/memberMetadata_Nft.js.map +0 -1
  304. package/dist/memberMetadata_Usernames.d.ts +0 -35
  305. package/dist/memberMetadata_Usernames.d.ts.map +0 -1
  306. package/dist/memberMetadata_Usernames.js +0 -162
  307. package/dist/memberMetadata_Usernames.js.map +0 -1
  308. package/dist/streamStateView_Channel.d.ts +0 -16
  309. package/dist/streamStateView_Channel.d.ts.map +0 -1
  310. package/dist/streamStateView_Channel.js +0 -76
  311. package/dist/streamStateView_Channel.js.map +0 -1
  312. package/dist/streamStateView_DMChannel.d.ts +0 -25
  313. package/dist/streamStateView_DMChannel.d.ts.map +0 -1
  314. package/dist/streamStateView_DMChannel.js +0 -114
  315. package/dist/streamStateView_DMChannel.js.map +0 -1
  316. package/dist/streamStateView_Space.d.ts +0 -31
  317. package/dist/streamStateView_Space.d.ts.map +0 -1
  318. package/dist/streamStateView_Space.js +0 -193
  319. package/dist/streamStateView_Space.js.map +0 -1
  320. package/dist/sync-agent/dms/dms.d.ts +0 -24
  321. package/dist/sync-agent/dms/dms.d.ts.map +0 -1
  322. package/dist/sync-agent/dms/dms.js +0 -60
  323. package/dist/sync-agent/dms/dms.js.map +0 -1
  324. package/dist/sync-agent/dms/models/dm.d.ts +0 -74
  325. package/dist/sync-agent/dms/models/dm.d.ts.map +0 -1
  326. package/dist/sync-agent/dms/models/dm.js +0 -149
  327. package/dist/sync-agent/dms/models/dm.js.map +0 -1
  328. package/dist/sync-agent/river-connection/models/transactionalClient.d.ts +0 -11
  329. package/dist/sync-agent/river-connection/models/transactionalClient.d.ts.map +0 -1
  330. package/dist/sync-agent/river-connection/models/transactionalClient.js +0 -14
  331. package/dist/sync-agent/river-connection/models/transactionalClient.js.map +0 -1
  332. package/dist/sync-agent/spaces/models/channel.d.ts +0 -121
  333. package/dist/sync-agent/spaces/models/channel.d.ts.map +0 -1
  334. package/dist/sync-agent/spaces/models/channel.js +0 -182
  335. package/dist/sync-agent/spaces/models/channel.js.map +0 -1
  336. package/dist/sync-agent/spaces/models/space.d.ts +0 -57
  337. package/dist/sync-agent/spaces/models/space.d.ts.map +0 -1
  338. package/dist/sync-agent/spaces/models/space.js +0 -125
  339. package/dist/sync-agent/spaces/models/space.js.map +0 -1
  340. package/dist/sync-agent/spaces/spaces.d.ts +0 -28
  341. package/dist/sync-agent/spaces/spaces.d.ts.map +0 -1
  342. package/dist/sync-agent/spaces/spaces.js +0 -71
  343. package/dist/sync-agent/spaces/spaces.js.map +0 -1
  344. package/dist/tests/multi/channelSpaceSettings.test.d.ts +0 -5
  345. package/dist/tests/multi/channelSpaceSettings.test.d.ts.map +0 -1
  346. package/dist/tests/multi/channelSpaceSettings.test.js +0 -204
  347. package/dist/tests/multi/channelSpaceSettings.test.js.map +0 -1
  348. package/dist/tests/multi/disableChannel.test.d.ts +0 -5
  349. package/dist/tests/multi/disableChannel.test.d.ts.map +0 -1
  350. package/dist/tests/multi/disableChannel.test.js +0 -30
  351. package/dist/tests/multi/disableChannel.test.js.map +0 -1
  352. package/dist/tests/multi/disableSpace.test.d.ts.map +0 -1
  353. package/dist/tests/multi/disableSpace.test.js +0 -37
  354. package/dist/tests/multi/disableSpace.test.js.map +0 -1
  355. package/dist/tests/multi/entitlements/channelEntitlementPermissions.test.d.ts +0 -5
  356. package/dist/tests/multi/entitlements/channelEntitlementPermissions.test.d.ts.map +0 -1
  357. package/dist/tests/multi/entitlements/channelEntitlementPermissions.test.js +0 -129
  358. package/dist/tests/multi/entitlements/channelEntitlementPermissions.test.js.map +0 -1
  359. package/dist/tests/multi/entitlements/channelWithThreeNestedEntitlement.test.d.ts +0 -5
  360. package/dist/tests/multi/entitlements/channelWithThreeNestedEntitlement.test.d.ts.map +0 -1
  361. package/dist/tests/multi/entitlements/channelWithThreeNestedEntitlement.test.js +0 -44
  362. package/dist/tests/multi/entitlements/channelWithThreeNestedEntitlement.test.js.map +0 -1
  363. package/dist/tests/multi/entitlements/channelsWithComplexEntitlements.test.d.ts +0 -5
  364. package/dist/tests/multi/entitlements/channelsWithComplexEntitlements.test.d.ts.map +0 -1
  365. package/dist/tests/multi/entitlements/channelsWithComplexEntitlements.test.js +0 -125
  366. package/dist/tests/multi/entitlements/channelsWithComplexEntitlements.test.js.map +0 -1
  367. package/dist/tests/multi/entitlements/channelsWithEntitlementLoss.test.d.ts +0 -5
  368. package/dist/tests/multi/entitlements/channelsWithEntitlementLoss.test.d.ts.map +0 -1
  369. package/dist/tests/multi/entitlements/channelsWithEntitlementLoss.test.js +0 -72
  370. package/dist/tests/multi/entitlements/channelsWithEntitlementLoss.test.js.map +0 -1
  371. package/dist/tests/multi/entitlements/channelsWithEntitlements.test.d.ts +0 -5
  372. package/dist/tests/multi/entitlements/channelsWithEntitlements.test.d.ts.map +0 -1
  373. package/dist/tests/multi/entitlements/channelsWithEntitlements.test.js +0 -57
  374. package/dist/tests/multi/entitlements/channelsWithEntitlements.test.js.map +0 -1
  375. package/dist/tests/multi/entitlements/channelsWithErc20Entitlements.test.d.ts +0 -5
  376. package/dist/tests/multi/entitlements/channelsWithErc20Entitlements.test.d.ts.map +0 -1
  377. package/dist/tests/multi/entitlements/channelsWithErc20Entitlements.test.js +0 -86
  378. package/dist/tests/multi/entitlements/channelsWithErc20Entitlements.test.js.map +0 -1
  379. package/dist/tests/multi/entitlements/channelsWithErc721Entitlements.test.d.ts +0 -5
  380. package/dist/tests/multi/entitlements/channelsWithErc721Entitlements.test.d.ts.map +0 -1
  381. package/dist/tests/multi/entitlements/channelsWithErc721Entitlements.test.js +0 -69
  382. package/dist/tests/multi/entitlements/channelsWithErc721Entitlements.test.js.map +0 -1
  383. package/dist/tests/multi/entitlements/channelsWithEthBalanceEntitlements.test.d.ts +0 -5
  384. package/dist/tests/multi/entitlements/channelsWithEthBalanceEntitlements.test.d.ts.map +0 -1
  385. package/dist/tests/multi/entitlements/channelsWithEthBalanceEntitlements.test.js +0 -145
  386. package/dist/tests/multi/entitlements/channelsWithEthBalanceEntitlements.test.js.map +0 -1
  387. package/dist/tests/multi/entitlements/channelsWithUserEntitlements.test.d.ts +0 -5
  388. package/dist/tests/multi/entitlements/channelsWithUserEntitlements.test.d.ts.map +0 -1
  389. package/dist/tests/multi/entitlements/channelsWithUserEntitlements.test.js +0 -53
  390. package/dist/tests/multi/entitlements/channelsWithUserEntitlements.test.js.map +0 -1
  391. package/dist/tests/multi/entitlements/membershipRenewals.test.d.ts +0 -5
  392. package/dist/tests/multi/entitlements/membershipRenewals.test.d.ts.map +0 -1
  393. package/dist/tests/multi/entitlements/membershipRenewals.test.js +0 -150
  394. package/dist/tests/multi/entitlements/membershipRenewals.test.js.map +0 -1
  395. package/dist/tests/multi/entitlements/spaceWithComplexEntitlements.test.d.ts +0 -5
  396. package/dist/tests/multi/entitlements/spaceWithComplexEntitlements.test.d.ts.map +0 -1
  397. package/dist/tests/multi/entitlements/spaceWithComplexEntitlements.test.js +0 -131
  398. package/dist/tests/multi/entitlements/spaceWithComplexEntitlements.test.js.map +0 -1
  399. package/dist/tests/multi/entitlements/spaceWithEntitlements.test.d.ts +0 -5
  400. package/dist/tests/multi/entitlements/spaceWithEntitlements.test.d.ts.map +0 -1
  401. package/dist/tests/multi/entitlements/spaceWithEntitlements.test.js +0 -109
  402. package/dist/tests/multi/entitlements/spaceWithEntitlements.test.js.map +0 -1
  403. package/dist/tests/multi/entitlements/spaceWithErc20Entitlements.test.d.ts +0 -5
  404. package/dist/tests/multi/entitlements/spaceWithErc20Entitlements.test.d.ts.map +0 -1
  405. package/dist/tests/multi/entitlements/spaceWithErc20Entitlements.test.js +0 -103
  406. package/dist/tests/multi/entitlements/spaceWithErc20Entitlements.test.js.map +0 -1
  407. package/dist/tests/multi/entitlements/spaceWithErc721Entitlements.test.d.ts +0 -5
  408. package/dist/tests/multi/entitlements/spaceWithErc721Entitlements.test.d.ts.map +0 -1
  409. package/dist/tests/multi/entitlements/spaceWithErc721Entitlements.test.js +0 -84
  410. package/dist/tests/multi/entitlements/spaceWithErc721Entitlements.test.js.map +0 -1
  411. package/dist/tests/multi/entitlements/spaceWithEthBalanceEntitlements.test.d.ts +0 -5
  412. package/dist/tests/multi/entitlements/spaceWithEthBalanceEntitlements.test.d.ts.map +0 -1
  413. package/dist/tests/multi/entitlements/spaceWithEthBalanceEntitlements.test.js +0 -168
  414. package/dist/tests/multi/entitlements/spaceWithEthBalanceEntitlements.test.js.map +0 -1
  415. package/dist/tests/multi/entitlements/spaceWithThreeNestedEntitlement.test.d.ts +0 -5
  416. package/dist/tests/multi/entitlements/spaceWithThreeNestedEntitlement.test.d.ts.map +0 -1
  417. package/dist/tests/multi/entitlements/spaceWithThreeNestedEntitlement.test.js +0 -45
  418. package/dist/tests/multi/entitlements/spaceWithThreeNestedEntitlement.test.js.map +0 -1
  419. package/dist/tests/multi/entitlements/spaceWithUserEntitlements.test.d.ts +0 -5
  420. package/dist/tests/multi/entitlements/spaceWithUserEntitlements.test.d.ts.map +0 -1
  421. package/dist/tests/multi/entitlements/spaceWithUserEntitlements.test.js +0 -79
  422. package/dist/tests/multi/entitlements/spaceWithUserEntitlements.test.js.map +0 -1
  423. package/dist/tests/multi/legacySpace.test.d.ts.map +0 -1
  424. package/dist/tests/multi/legacySpace.test.js +0 -48
  425. package/dist/tests/multi/legacySpace.test.js.map +0 -1
  426. package/dist/tests/multi/mediaWithEntitlements.test.d.ts +0 -5
  427. package/dist/tests/multi/mediaWithEntitlements.test.d.ts.map +0 -1
  428. package/dist/tests/multi/mediaWithEntitlements.test.js +0 -152
  429. package/dist/tests/multi/mediaWithEntitlements.test.js.map +0 -1
  430. package/dist/tests/multi/membershipManagement.test.d.ts +0 -5
  431. package/dist/tests/multi/membershipManagement.test.d.ts.map +0 -1
  432. package/dist/tests/multi/membershipManagement.test.js +0 -76
  433. package/dist/tests/multi/membershipManagement.test.js.map +0 -1
  434. package/dist/tests/multi/riverAirdropDapp.test.d.ts +0 -5
  435. package/dist/tests/multi/riverAirdropDapp.test.d.ts.map +0 -1
  436. package/dist/tests/multi/riverAirdropDapp.test.js +0 -43
  437. package/dist/tests/multi/riverAirdropDapp.test.js.map +0 -1
  438. package/dist/tests/multi/spaceDapp.test.d.ts.map +0 -1
  439. package/dist/tests/multi/spaceDapp.test.js +0 -61
  440. package/dist/tests/multi/spaceDapp.test.js.map +0 -1
  441. package/dist/tests/multi/spaceWithVariousPriceConfigurations.test.d.ts +0 -2
  442. package/dist/tests/multi/spaceWithVariousPriceConfigurations.test.d.ts.map +0 -1
  443. package/dist/tests/multi/spaceWithVariousPriceConfigurations.test.js +0 -63
  444. package/dist/tests/multi/spaceWithVariousPriceConfigurations.test.js.map +0 -1
  445. package/dist/tests/multi/withEntitlements.test.d.ts +0 -5
  446. package/dist/tests/multi/withEntitlements.test.d.ts.map +0 -1
  447. package/dist/tests/multi/withEntitlements.test.js +0 -125
  448. package/dist/tests/multi/withEntitlements.test.js.map +0 -1
  449. package/dist/tests/multi_ne/dms.test.d.ts +0 -5
  450. package/dist/tests/multi_ne/dms.test.d.ts.map +0 -1
  451. package/dist/tests/multi_ne/dms.test.js +0 -131
  452. package/dist/tests/multi_ne/dms.test.js.map +0 -1
  453. package/dist/tests/multi_ne/memberMetadata_DisplayNames.test.d.ts +0 -5
  454. package/dist/tests/multi_ne/memberMetadata_DisplayNames.test.d.ts.map +0 -1
  455. package/dist/tests/multi_ne/memberMetadata_DisplayNames.test.js +0 -54
  456. package/dist/tests/multi_ne/memberMetadata_DisplayNames.test.js.map +0 -1
  457. package/dist/tests/multi_ne/memberMetadata_EnsAddresses.test.d.ts +0 -5
  458. package/dist/tests/multi_ne/memberMetadata_EnsAddresses.test.d.ts.map +0 -1
  459. package/dist/tests/multi_ne/memberMetadata_EnsAddresses.test.js +0 -37
  460. package/dist/tests/multi_ne/memberMetadata_EnsAddresses.test.js.map +0 -1
  461. package/dist/tests/multi_ne/memberMetadata_Nft.test.d.ts +0 -5
  462. package/dist/tests/multi_ne/memberMetadata_Nft.test.d.ts.map +0 -1
  463. package/dist/tests/multi_ne/memberMetadata_Nft.test.js +0 -49
  464. package/dist/tests/multi_ne/memberMetadata_Nft.test.js.map +0 -1
  465. package/dist/tests/multi_ne/memberMetadata_Usernames.test.d.ts +0 -5
  466. package/dist/tests/multi_ne/memberMetadata_Usernames.test.d.ts.map +0 -1
  467. package/dist/tests/multi_ne/memberMetadata_Usernames.test.js +0 -126
  468. package/dist/tests/multi_ne/memberMetadata_Usernames.test.js.map +0 -1
  469. package/dist/tests/multi_ne/space.test.d.ts +0 -5
  470. package/dist/tests/multi_ne/space.test.d.ts.map +0 -1
  471. package/dist/tests/multi_ne/space.test.js +0 -284
  472. package/dist/tests/multi_ne/space.test.js.map +0 -1
  473. package/dist/tests/multi_v2/entitlements/channelsWithCrossChainEntitlements.test.d.ts +0 -6
  474. package/dist/tests/multi_v2/entitlements/channelsWithCrossChainEntitlements.test.d.ts.map +0 -1
  475. package/dist/tests/multi_v2/entitlements/channelsWithCrossChainEntitlements.test.js +0 -78
  476. package/dist/tests/multi_v2/entitlements/channelsWithCrossChainEntitlements.test.js.map +0 -1
  477. package/dist/tests/multi_v2/entitlements/channelsWithErc1155Entitlement.test.d.ts +0 -6
  478. package/dist/tests/multi_v2/entitlements/channelsWithErc1155Entitlement.test.d.ts.map +0 -1
  479. package/dist/tests/multi_v2/entitlements/channelsWithErc1155Entitlement.test.js +0 -89
  480. package/dist/tests/multi_v2/entitlements/channelsWithErc1155Entitlement.test.js.map +0 -1
  481. package/dist/tests/multi_v2/entitlements/spaceWithCrossChainEntitlements.test.d.ts +0 -6
  482. package/dist/tests/multi_v2/entitlements/spaceWithCrossChainEntitlements.test.d.ts.map +0 -1
  483. package/dist/tests/multi_v2/entitlements/spaceWithCrossChainEntitlements.test.js +0 -88
  484. package/dist/tests/multi_v2/entitlements/spaceWithCrossChainEntitlements.test.js.map +0 -1
  485. package/dist/tests/multi_v2/entitlements/spaceWithErc1155Entitlements.test.d.ts +0 -6
  486. package/dist/tests/multi_v2/entitlements/spaceWithErc1155Entitlements.test.d.ts.map +0 -1
  487. package/dist/tests/multi_v2/entitlements/spaceWithErc1155Entitlements.test.js +0 -105
  488. package/dist/tests/multi_v2/entitlements/spaceWithErc1155Entitlements.test.js.map +0 -1
  489. package/dist/tests/multi_v2/updateRole.test.d.ts +0 -5
  490. package/dist/tests/multi_v2/updateRole.test.d.ts.map +0 -1
  491. package/dist/tests/multi_v2/updateRole.test.js +0 -25
  492. package/dist/tests/multi_v2/updateRole.test.js.map +0 -1
  493. package/dist/tests/unit/snapshotMigration0002.test.d.ts +0 -2
  494. package/dist/tests/unit/snapshotMigration0002.test.d.ts.map +0 -1
  495. package/dist/tests/unit/snapshotMigration0002.test.js +0 -31
  496. package/dist/tests/unit/snapshotMigration0002.test.js.map +0 -1
  497. package/dist/views/streams/channelStreams.d.ts +0 -8
  498. package/dist/views/streams/channelStreams.d.ts.map +0 -1
  499. package/dist/views/streams/channelStreams.js +0 -9
  500. package/dist/views/streams/channelStreams.js.map +0 -1
  501. package/dist/views/streams/dmStreams.d.ts +0 -13
  502. package/dist/views/streams/dmStreams.d.ts.map +0 -1
  503. package/dist/views/streams/dmStreams.js +0 -33
  504. package/dist/views/streams/dmStreams.js.map +0 -1
  505. package/dist/views/streams/spaceStreams.d.ts +0 -17
  506. package/dist/views/streams/spaceStreams.d.ts.map +0 -1
  507. package/dist/views/streams/spaceStreams.js +0 -52
  508. package/dist/views/streams/spaceStreams.js.map +0 -1
package/dist/client.js CHANGED
@@ -1,21 +1,21 @@
1
1
  import { create, toBinary, toJsonString } from '@bufbuild/protobuf';
2
2
  import { SpaceAddressFromSpaceId, SpaceReviewAction, } from '@towns-labs/web3';
3
- import { MembershipOp, ChannelOp, Err, BlockchainTransactionReceipt_LogSchema, BlockchainTransactionReceiptSchema, ChannelPropertiesSchema, FullyReadMarkersSchema, ChunkedMediaSchema, EncryptedDataSchema, UserBioSchema, MemberPayload_NftSchema, ChannelMessageSchema, SolanaBlockchainTransactionReceiptSchema, SessionKeysSchema, EnvelopeSchema, MessageInteractionType, InteractionRequestPayloadSchema, InteractionResponsePayloadSchema, EncryptedDataVersion, } from '@towns-labs/proto';
4
- import { bin_fromHexString, bin_toHexString, shortenHexString, check, dlog, dlogError, bin_fromString, bin_toBase64, } from '@towns-labs/utils';
5
- import { AES_GCM_DERIVED_ALGORITHM, EncryptionAlgorithmId, GroupEncryptionAlgorithmId, GroupEncryptionCrypto, } from '@towns-labs/encryption';
3
+ import { MembershipOp, Err, BlockchainTransactionReceipt_LogSchema, BlockchainTransactionReceiptSchema, ChannelPropertiesSchema, FullyReadMarkersSchema, ChunkedMediaSchema, EncryptedDataSchema, UserBioSchema, ChannelMessageSchema, SolanaBlockchainTransactionReceiptSchema, SessionKeysSchema, EnvelopeSchema, MessageInteractionType, InteractionRequestPayloadSchema, InteractionResponsePayloadSchema, EncryptedDataVersion, } from '@towns-labs/proto';
4
+ import { bin_fromHexString, bin_toHexString, shortenHexString, check, dlog, dlogError, bin_toBase64, } from '@towns-labs/utils';
5
+ import { AES_GCM_DERIVED_ALGORITHM, EncryptionAlgorithmId, GroupEncryptionAlgorithmId, GroupEncryptionCrypto, parseGroupEncryptionAlgorithmId, } from '@towns-labs/encryption';
6
6
  import { makeSessionKeys, } from './decryptionExtensions';
7
7
  import { ClientDecryptionExtensions } from './clientDecryptionExtensions';
8
8
  import { getMaxTimeoutMs, getMiniblocks } from './makeStreamRpcClient';
9
9
  import { errorContains, errorContainsMessage, getRpcErrorProperty } from './rpcInterceptors';
10
10
  import { assert, isDefined, logNever } from './check';
11
11
  import EventEmitter from 'events';
12
- import { isChannelStreamId, isDMChannelStreamId, isGDMChannelStreamId, isSpaceStreamId, makeDMStreamId, makeUniqueGDMChannelStreamId, makeUniqueMediaStreamId, makeUserMetadataStreamId, makeUserSettingsStreamId, makeUserStreamId, makeUserInboxStreamId, userIdFromAddress, addressFromUserId, streamIdAsBytes, streamIdAsString, makeSpaceStreamId, STREAM_ID_STRING_LENGTH, contractAddressFromSpaceId, isUserId, spaceIdFromChannelId, } from './id';
12
+ import { isGDMChannelStreamId, makeUniqueGDMChannelStreamId, makeUniqueMediaStreamId, makeUserMetadataStreamId, makeUserSettingsStreamId, makeUserStreamId, makeUserInboxStreamId, userIdFromAddress, addressFromUserId, streamIdAsBytes, streamIdAsString, isUserId, } from './id';
13
13
  import { makeEvent, unpackStream, unpackStreamEx, waitForStreamEx, } from './sign';
14
14
  import { StreamStateView } from './streamStateView';
15
- import { make_UserMetadataPayload_Inception, make_ChannelPayload_Inception, make_ChannelPayload_Message, make_MemberPayload_Membership2, make_SpacePayload_Inception, make_UserPayload_Inception, make_SpacePayload_ChannelUpdate, make_UserSettingsPayload_FullyReadMarkers, make_UserSettingsPayload_UserBlock, make_UserSettingsPayload_Inception, make_MediaPayload_Inception, make_MediaPayload_Chunk, make_DMChannelPayload_Inception, make_DMChannelPayload_Message, make_GDMChannelPayload_Inception, make_GDMChannelPayload_Message, make_UserInboxPayload_Ack, make_UserInboxPayload_Inception, make_UserMetadataPayload_EncryptionDevice, make_UserInboxPayload_GroupEncryptionSessions, make_GDMChannelPayload_ChannelProperties, make_UserPayload_UserMembershipAction, make_UserPayload_UserMembership, make_MemberPayload_DisplayName, make_MemberPayload_Username, getRefEventIdFromChannelMessage, make_payload_Redaction, make_MemberPayload_EnsAddress, make_MemberPayload_Nft, make_MemberPayload_Pin, make_MemberPayload_Unpin, make_SpacePayload_UpdateChannelAutojoin, make_SpacePayload_UpdateChannelHideUserJoinLeaveEvents, make_SpacePayload_SpaceImage, make_UserMetadataPayload_ProfileImage, make_UserMetadataPayload_Bio, make_UserPayload_BlockchainTransaction, make_MemberPayload_EncryptionAlgorithm, isSolanaTransactionReceipt, make_payload_InteractionRequest, make_payload_InteractionResponse, } from './types';
15
+ import { make_UserMetadataPayload_Inception, make_MemberPayload_Membership2, make_UserPayload_Inception, make_UserSettingsPayload_FullyReadMarkers, make_UserSettingsPayload_UserBlock, make_UserSettingsPayload_Inception, make_MediaPayload_Inception, make_MediaPayload_Chunk, make_GDMChannelPayload_Inception, make_GDMChannelPayload_Message, make_UserInboxPayload_Ack, make_UserInboxPayload_Inception, make_UserMetadataPayload_EncryptionDevice, make_UserInboxPayload_GroupEncryptionSessions, make_GDMChannelPayload_ChannelProperties, make_UserPayload_UserMembershipAction, make_UserPayload_UserMembership, getRefEventIdFromChannelMessage, make_payload_Redaction, make_MemberPayload_Pin, make_MemberPayload_Unpin, make_UserMetadataPayload_ProfileImage, make_UserMetadataPayload_Bio, make_UserPayload_BlockchainTransaction, make_MemberPayload_EncryptionAlgorithm, isSolanaTransactionReceipt, make_payload_InteractionRequest, make_payload_InteractionResponse, } from './types';
16
16
  import { applyExclusionFilterToMiniblocks } from './streamUtils';
17
17
  import debug from 'debug';
18
- import { ethereumAddressAsBytes, getTime, isEthereumAddress, stripUndefinedMetadata, usernameChecksum, } from './utils';
18
+ import { ethereumAddressAsBytes, getTime, isEthereumAddress } from './utils';
19
19
  import { isEncryptedContentKind, toDecryptedContent } from './encryptedContentTypes';
20
20
  import { PersistenceStore, StubPersistenceStore, } from './persistenceStore';
21
21
  import { SyncedStreams } from './syncedStreams';
@@ -76,8 +76,6 @@ export class Client extends EventEmitter {
76
76
  syncedStreamsExtensions;
77
77
  persistenceStore;
78
78
  defaultGroupEncryptionAlgorithm;
79
- pendingUsernames = new Map();
80
- pendingUsernameTimeouts = new Map();
81
79
  constructor(signerContext, appAddress, rpcClient, cryptoStore, opts) {
82
80
  super();
83
81
  this.opts = opts;
@@ -93,7 +91,7 @@ export class Client extends EventEmitter {
93
91
  this.userId = userIdFromAddress(signerContext.creatorAddress);
94
92
  this.appAddress = appAddress;
95
93
  this.streamsView = new StreamsView(this.userId, {
96
- isDMMessageEventBlocked: (event) => {
94
+ isGDMMessageEventBlocked: (event) => {
97
95
  if (!this?.userSettingsStreamId) {
98
96
  return false;
99
97
  }
@@ -183,8 +181,7 @@ export class Client extends EventEmitter {
183
181
  this.on('streamUpToDate', (s) => void this.onStreamUpToDate(s));
184
182
  const streamIds = Object.entries(stream.view.userContent.streamMemberships).reduce((acc, [streamId, payload]) => {
185
183
  if (payload?.op === MembershipOp.SO_JOIN ||
186
- (payload?.op === MembershipOp.SO_INVITE &&
187
- (isDMChannelStreamId(streamId) || isGDMChannelStreamId(streamId)))) {
184
+ (payload?.op === MembershipOp.SO_INVITE && isGDMChannelStreamId(streamId))) {
188
185
  acc.push(streamId);
189
186
  }
190
187
  return acc;
@@ -199,27 +196,16 @@ export class Client extends EventEmitter {
199
196
  const appOwnerAddress = opts?.appOwnerAddress
200
197
  ? ethereumAddressAsBytes(opts.appOwnerAddress)
201
198
  : undefined;
202
- if (opts?.installedAppAddress && !isEthereumAddress(opts.installedAppAddress)) {
203
- throw Error('installedAppAddress must be an ethereum address');
204
- }
205
- const spaceId = opts?.spaceId ? streamIdAsBytes(opts?.spaceId) : undefined;
206
- const installedAppAddress = opts?.installedAppAddress
207
- ? ethereumAddressAsBytes(opts.installedAppAddress)
208
- : undefined;
209
- const initMetadata = {
210
- spaceId,
211
- installedAppAddress,
212
- };
213
199
  const initializeUserStartTime = performance.now();
214
200
  this.logCall('initializeUser', this.userId);
215
201
  assert(this.userStreamId === undefined, 'already initialized');
216
202
  const initCrypto = await getTime(() => this.initCrypto(opts?.encryptionDeviceInit));
217
203
  check(isDefined(this.decryptionExtensions), 'decryptionExtensions must be defined');
218
204
  const [initUserStream, initUserInboxStream, initUserMetadataStream, initUserSettingsStream,] = await Promise.all([
219
- getTime(() => this.initUserStream(initMetadata, appOwnerAddress)),
220
- getTime(() => this.initUserInboxStream(initMetadata, appOwnerAddress)),
221
- getTime(() => this.initUserMetadataStream(initMetadata, appOwnerAddress)),
222
- getTime(() => this.initUserSettingsStream(initMetadata, appOwnerAddress)),
205
+ getTime(() => this.initUserStream({ appOwnerAddress })),
206
+ getTime(() => this.initUserInboxStream({ appOwnerAddress })),
207
+ getTime(() => this.initUserMetadataStream({ appOwnerAddress })),
208
+ getTime(() => this.initUserSettingsStream({ appOwnerAddress })),
223
209
  ]);
224
210
  this.initUserJoinedStreams();
225
211
  if (!opts?.skipSync) {
@@ -243,27 +229,27 @@ export class Client extends EventEmitter {
243
229
  onNetworkStatusChanged(isOnline) {
244
230
  this.streams.onNetworkStatusChanged(isOnline);
245
231
  }
246
- async initUserStream(metadata, appOwnerAddress) {
232
+ async initUserStream(args) {
247
233
  this.userStreamId = makeUserStreamId(this.userId);
248
234
  const userStream = this.createSyncedStream(this.userStreamId);
249
235
  if (!(await userStream.initializeFromPersistence())) {
250
236
  const response = (await this.getUserStream(this.userStreamId)) ??
251
- (await this.createUserStream(this.userStreamId, metadata, appOwnerAddress));
237
+ (await this.createUserStream(this.userStreamId, args));
252
238
  await userStream.initializeFromResponse(response);
253
239
  }
254
240
  check(userStream.view.userContent.appAddress === this.appAddress, 'appAddress mismatch after initializing user stream');
255
241
  }
256
- async initUserInboxStream(metadata, appOwnerAddress) {
242
+ async initUserInboxStream(args) {
257
243
  this.userInboxStreamId = makeUserInboxStreamId(this.userId);
258
244
  const userInboxStream = this.createSyncedStream(this.userInboxStreamId);
259
245
  if (!(await userInboxStream.initializeFromPersistence())) {
260
246
  const response = (await this.getUserStream(this.userInboxStreamId)) ??
261
- (await this.createUserInboxStream(this.userInboxStreamId, metadata, appOwnerAddress));
247
+ (await this.createUserInboxStream(this.userInboxStreamId, args));
262
248
  await userInboxStream.initializeFromResponse(response);
263
249
  }
264
250
  check(userInboxStream.view.userInboxContent.appAddress === this.appAddress, 'appAddress mismatch after initializing user inbox stream');
265
251
  }
266
- async initUserMetadataStream(metadata, appOwnerAddress) {
252
+ async initUserMetadataStream(args) {
267
253
  this.userMetadataStreamId = makeUserMetadataStreamId(this.userId);
268
254
  const userMetadataStream = this.createSyncedStream(this.userMetadataStreamId);
269
255
  let initUserMetadataStreamInitFromPersistenceTime = 0;
@@ -285,7 +271,7 @@ export class Client extends EventEmitter {
285
271
  else {
286
272
  const createUserMetadataStreamResponse = await getTime(() => {
287
273
  check(!!this.userMetadataStreamId, 'userMetadataStreamId must be set');
288
- return this.createUserMetadataStream(this.userMetadataStreamId, metadata, appOwnerAddress);
274
+ return this.createUserMetadataStream(this.userMetadataStreamId, args);
289
275
  });
290
276
  initUserMetadataStreamCreateUserMetadataStreamTime =
291
277
  createUserMetadataStreamResponse.time;
@@ -313,12 +299,12 @@ export class Client extends EventEmitter {
313
299
  };
314
300
  return times;
315
301
  }
316
- async initUserSettingsStream(metadata, appOwnerAddress) {
302
+ async initUserSettingsStream(args) {
317
303
  this.userSettingsStreamId = makeUserSettingsStreamId(this.userId);
318
304
  const userSettingsStream = this.createSyncedStream(this.userSettingsStreamId);
319
305
  if (!(await userSettingsStream.initializeFromPersistence())) {
320
306
  const response = (await this.getUserStream(this.userSettingsStreamId)) ??
321
- (await this.createUserSettingsStream(this.userSettingsStreamId, metadata, appOwnerAddress));
307
+ (await this.createUserSettingsStream(this.userSettingsStreamId, args));
322
308
  await userSettingsStream.initializeFromResponse(response);
323
309
  }
324
310
  check(userSettingsStream.view.userSettingsContent.appAddress === this.appAddress, 'appAddress mismatch after initializing user settings stream');
@@ -335,7 +321,8 @@ export class Client extends EventEmitter {
335
321
  return undefined;
336
322
  }
337
323
  }
338
- async createUserStream(userStreamId, metadata, appOwnerAddress) {
324
+ async createUserStream(userStreamId, args) {
325
+ const { appOwnerAddress } = args;
339
326
  check(isDefined(this.appAddress) == isDefined(appOwnerAddress), 'appAddress and appOwnerAddress must both be set or both be undefined');
340
327
  const userEvents = [
341
328
  await makeEvent(this.signerContext, make_UserPayload_Inception({
@@ -344,15 +331,15 @@ export class Client extends EventEmitter {
344
331
  appOwnerAddress,
345
332
  })),
346
333
  ];
347
- const encoded = metadata ? stripUndefinedMetadata(metadata) : metadata;
348
334
  const response = await this.rpcClient.createStream({
349
335
  events: userEvents,
350
336
  streamId: streamIdAsBytes(userStreamId),
351
- metadata: encoded,
337
+ metadata: undefined,
352
338
  });
353
339
  return unpackStream(response.stream, this.opts?.unpackEnvelopeOpts);
354
340
  }
355
- async createUserMetadataStream(userMetadataStreamId, metadata, appOwnerAddress) {
341
+ async createUserMetadataStream(userMetadataStreamId, args) {
342
+ const { appOwnerAddress } = args;
356
343
  check(isDefined(this.appAddress) == isDefined(appOwnerAddress), 'appAddress and appOwnerAddress must both be set or both be undefined');
357
344
  const userDeviceKeyEvents = [
358
345
  await makeEvent(this.signerContext, make_UserMetadataPayload_Inception({
@@ -361,15 +348,15 @@ export class Client extends EventEmitter {
361
348
  appOwnerAddress,
362
349
  })),
363
350
  ];
364
- const encoded = metadata ? stripUndefinedMetadata(metadata) : metadata;
365
351
  const response = await this.rpcClient.createStream({
366
352
  events: userDeviceKeyEvents,
367
353
  streamId: streamIdAsBytes(userMetadataStreamId),
368
- metadata: encoded,
354
+ metadata: undefined,
369
355
  });
370
356
  return unpackStream(response.stream, this.opts?.unpackEnvelopeOpts);
371
357
  }
372
- async createUserInboxStream(userInboxStreamId, metadata, appOwnerAddress) {
358
+ async createUserInboxStream(userInboxStreamId, args) {
359
+ const { appOwnerAddress } = args;
373
360
  check(isDefined(this.appAddress) == isDefined(appOwnerAddress), 'appAddress and appOwnerAddress must both be set or both be undefined');
374
361
  const userInboxEvents = [
375
362
  await makeEvent(this.signerContext, make_UserInboxPayload_Inception({
@@ -378,15 +365,15 @@ export class Client extends EventEmitter {
378
365
  appOwnerAddress,
379
366
  })),
380
367
  ];
381
- const encoded = metadata ? stripUndefinedMetadata(metadata) : metadata;
382
368
  const response = await this.rpcClient.createStream({
383
369
  events: userInboxEvents,
384
370
  streamId: streamIdAsBytes(userInboxStreamId),
385
- metadata: encoded,
371
+ metadata: undefined,
386
372
  });
387
373
  return unpackStream(response.stream, this.opts?.unpackEnvelopeOpts);
388
374
  }
389
- async createUserSettingsStream(inUserSettingsStreamId, metadata, appOwnerAddress) {
375
+ async createUserSettingsStream(inUserSettingsStreamId, args) {
376
+ const { appOwnerAddress } = args;
390
377
  check(isDefined(this.appAddress) == isDefined(appOwnerAddress), 'appAddress and appOwnerAddress must both be set or both be undefined');
391
378
  const userSettingsStreamId = streamIdAsBytes(inUserSettingsStreamId);
392
379
  const userSettingsEvents = [
@@ -396,11 +383,10 @@ export class Client extends EventEmitter {
396
383
  appOwnerAddress,
397
384
  })),
398
385
  ];
399
- const encoded = metadata ? stripUndefinedMetadata(metadata) : metadata;
400
386
  const response = await this.rpcClient.createStream({
401
387
  events: userSettingsEvents,
402
388
  streamId: userSettingsStreamId,
403
- metadata: encoded,
389
+ metadata: undefined,
404
390
  });
405
391
  return unpackStream(response.stream, this.opts?.unpackEnvelopeOpts);
406
392
  }
@@ -429,83 +415,20 @@ export class Client extends EventEmitter {
429
415
  }
430
416
  return { streamId: streamId };
431
417
  }
432
- // createSpace
433
- // param spaceAddress: address of the space contract, or address made with makeSpaceStreamId
434
418
  async createSpace(spaceAddressOrId) {
435
- const oSpaceId = spaceAddressOrId.length === STREAM_ID_STRING_LENGTH
436
- ? spaceAddressOrId
437
- : makeSpaceStreamId(spaceAddressOrId);
438
- const spaceId = streamIdAsBytes(oSpaceId);
439
- this.logCall('createSpace', spaceId);
440
- assert(this.userStreamId !== undefined, 'streamId must be set');
441
- assert(isSpaceStreamId(spaceId), 'spaceId must be a valid streamId');
442
- // create utf8 encoder
443
- const inceptionEvent = await makeEvent(this.signerContext, make_SpacePayload_Inception({
444
- streamId: spaceId,
445
- }));
446
- const joinEvent = await makeEvent(this.signerContext, make_MemberPayload_Membership2({
447
- userId: this.userId,
448
- op: MembershipOp.SO_JOIN,
449
- initiatorId: this.userId,
450
- }));
451
- return this.createStreamAndSync({
452
- events: [inceptionEvent, joinEvent],
453
- streamId: spaceId,
454
- metadata: {},
455
- });
419
+ this.logCall('createSpace', spaceAddressOrId);
420
+ throw new Error('Space streams are not supported');
456
421
  }
457
422
  async createChannel(spaceId, _channelName, _channelTopic, inChannelId, streamSettings, channelSettings) {
458
- const channelId = streamIdAsBytes(inChannelId);
459
- const channelIdStr = streamIdAsString(inChannelId);
460
- const spaceIdstr = streamIdAsString(spaceId);
461
- this.logCall('createChannel', channelId, spaceId);
462
- const derivedSpaceId = spaceIdFromChannelId(channelIdStr);
463
- assert(derivedSpaceId === spaceIdstr, 'derivedSpaceId must be the same as spaceId');
464
- assert(this.userStreamId !== undefined, 'userStreamId must be set');
465
- assert(isSpaceStreamId(spaceId), 'spaceId must be a valid streamId');
466
- assert(isChannelStreamId(channelId), 'channelId must be a valid streamId');
467
- const inceptionEvent = await makeEvent(this.signerContext, make_ChannelPayload_Inception({
468
- streamId: channelId,
469
- settings: streamSettings,
470
- channelSettings: channelSettings,
471
- }));
472
- const joinEvent = await makeEvent(this.signerContext, make_MemberPayload_Membership2({
473
- userId: this.userId,
474
- op: MembershipOp.SO_JOIN,
475
- initiatorId: this.userId,
476
- }));
477
- return this.createStreamAndSync({
478
- events: [inceptionEvent, joinEvent],
479
- streamId: channelId,
480
- metadata: {},
481
- });
423
+ this.logCall('createChannel', streamIdAsString(inChannelId), streamIdAsString(spaceId));
424
+ void streamSettings;
425
+ void channelSettings;
426
+ throw new Error('Channel streams are not supported');
482
427
  }
483
428
  async createDMChannel(userId, appAddress, streamSettings) {
484
- const channelIdStr = makeDMStreamId(this.userId, userId);
485
- const channelId = streamIdAsBytes(channelIdStr);
486
- const inceptionEvent = await makeEvent(this.signerContext, make_DMChannelPayload_Inception({
487
- streamId: channelId,
488
- firstPartyAddress: this.signerContext.creatorAddress,
489
- secondPartyAddress: addressFromUserId(userId),
490
- secondPartyAppAddress: appAddress ? bin_fromHexString(appAddress) : undefined,
491
- settings: streamSettings,
492
- }));
493
- const joinEvent = await makeEvent(this.signerContext, make_MemberPayload_Membership2({
494
- userId: this.userId,
495
- op: MembershipOp.SO_JOIN,
496
- initiatorId: this.userId,
497
- }));
498
- const inviteEvent = await makeEvent(this.signerContext, make_MemberPayload_Membership2({
499
- userId: userId,
500
- op: MembershipOp.SO_JOIN,
501
- initiatorId: this.userId,
502
- appAddress,
503
- }));
504
- return this.createStreamAndSync({
505
- events: [inceptionEvent, joinEvent, inviteEvent],
506
- streamId: channelId,
507
- metadata: {},
508
- });
429
+ this.logCall('createDMChannel', userId, appAddress);
430
+ void streamSettings;
431
+ throw new Error('DM streams are not supported');
509
432
  }
510
433
  async createGDMChannel(users, channelProperties, streamSettings) {
511
434
  const channelIdStr = makeUniqueGDMChannelStreamId();
@@ -545,12 +468,10 @@ export class Client extends EventEmitter {
545
468
  throw Error('channelId, spaceId or userId must be set');
546
469
  }
547
470
  if (spaceId) {
548
- assert(isSpaceStreamId(spaceId), 'spaceId must be a valid streamId');
471
+ throw Error('spaceId is not supported for media streams');
549
472
  }
550
473
  if (channelId) {
551
- assert(isChannelStreamId(channelId) ||
552
- isDMChannelStreamId(channelId) ||
553
- isGDMChannelStreamId(channelId), 'channelId must be a valid streamId');
474
+ assert(isGDMChannelStreamId(channelId), 'channelId must be a valid GDM streamId');
554
475
  }
555
476
  if (userId) {
556
477
  assert(isUserId(userId), 'userId must be a valid userId');
@@ -562,7 +483,7 @@ export class Client extends EventEmitter {
562
483
  events.push(await makeEvent(this.signerContext, make_MediaPayload_Inception({
563
484
  streamId: streamIdAsBytes(streamId),
564
485
  channelId: channelId ? streamIdAsBytes(channelId) : undefined,
565
- spaceId: spaceId ? streamIdAsBytes(spaceId) : undefined,
486
+ spaceId: undefined,
566
487
  userId: userId ? addressFromUserId(userId) : undefined,
567
488
  chunkCount,
568
489
  settings: streamSettings,
@@ -585,33 +506,15 @@ export class Client extends EventEmitter {
585
506
  }
586
507
  async updateChannel(spaceId, channelId, unused1, unused2) {
587
508
  this.logCall('updateChannel', channelId, spaceId, unused1, unused2);
588
- assert(isSpaceStreamId(spaceId), 'spaceId must be a valid streamId');
589
- assert(isChannelStreamId(channelId), 'channelId must be a valid streamId');
590
- return this.makeEventAndAddToStream(spaceId, // we send events to the stream of the space where updated channel belongs to
591
- make_SpacePayload_ChannelUpdate({
592
- op: ChannelOp.CO_UPDATED,
593
- channelId: streamIdAsBytes(channelId),
594
- }), { method: 'updateChannel' });
509
+ throw new Error('Channel streams are not supported');
595
510
  }
596
511
  async updateChannelAutojoin(spaceId, channelId, autojoin) {
597
512
  this.logCall('updateChannelAutojoin', channelId, spaceId, autojoin);
598
- assert(isSpaceStreamId(spaceId), 'spaceId must be a valid streamId');
599
- assert(isChannelStreamId(channelId), 'channelId must be a valid streamId');
600
- return this.makeEventAndAddToStream(spaceId, // we send events to the stream of the space where updated channel belongs to
601
- make_SpacePayload_UpdateChannelAutojoin({
602
- channelId: streamIdAsBytes(channelId),
603
- autojoin: autojoin,
604
- }), { method: 'updateChannelAutojoin' });
513
+ throw new Error('Channel streams are not supported');
605
514
  }
606
515
  async updateChannelHideUserJoinLeaveEvents(spaceId, channelId, hideUserJoinLeaveEvents) {
607
516
  this.logCall('updateChannelHideUserJoinLeaveEvents', channelId, spaceId, hideUserJoinLeaveEvents);
608
- assert(isSpaceStreamId(spaceId), 'spaceId must be a valid streamId');
609
- assert(isChannelStreamId(channelId), 'channelId must be a valid streamId');
610
- return this.makeEventAndAddToStream(spaceId, // we send events to the stream of the space where updated channel belongs to
611
- make_SpacePayload_UpdateChannelHideUserJoinLeaveEvents({
612
- channelId: streamIdAsBytes(channelId),
613
- hideUserJoinLeaveEvents,
614
- }), { method: 'updateChannelHideUserJoinLeaveEvents' });
517
+ throw new Error('Channel streams are not supported');
615
518
  }
616
519
  async updateGDMChannelProperties(streamId, channelName, channelTopic) {
617
520
  this.logCall('updateGDMChannelProperties', streamId, channelName, channelTopic);
@@ -628,10 +531,7 @@ export class Client extends EventEmitter {
628
531
  });
629
532
  }
630
533
  async setStreamEncryptionAlgorithm(streamId, encryptionAlgorithm) {
631
- assert(isChannelStreamId(streamId) ||
632
- isSpaceStreamId(streamId) ||
633
- isDMChannelStreamId(streamId) ||
634
- isGDMChannelStreamId(streamId), 'channelId must be a valid streamId');
534
+ assert(isGDMChannelStreamId(streamId), 'streamId must be a valid GDM streamId');
635
535
  const stream = this.stream(streamId);
636
536
  check(isDefined(stream), 'stream not found');
637
537
  check(stream.view.membershipContent.encryptionAlgorithm != encryptionAlgorithm, `encryptionAlgorithm is already set to ${encryptionAlgorithm}`);
@@ -657,15 +557,11 @@ export class Client extends EventEmitter {
657
557
  if (!isDefined(this.userSettingsStreamId)) {
658
558
  throw Error('userSettingsStreamId is not defined');
659
559
  }
660
- const dmStreamId = makeDMStreamId(this.userId, userId);
661
560
  const lastBlock = this.stream(this.userSettingsStreamId)?.view.userSettingsContent.getLastBlock(userId);
662
561
  if (lastBlock?.isBlocked === isBlocked) {
663
562
  throw Error(`updateUserBlock isBlocked<${isBlocked}> must be different from existing value`);
664
563
  }
665
- let eventNum = this.stream(dmStreamId)?.view.lastEventNum ?? 0n;
666
- if (lastBlock && lastBlock.eventNum >= eventNum) {
667
- eventNum = lastBlock.eventNum + 1n;
668
- }
564
+ const eventNum = (lastBlock?.eventNum ?? 0n) + 1n;
669
565
  return this.makeEventAndAddToStream(this.userSettingsStreamId, make_UserSettingsPayload_UserBlock({
670
566
  userId: addressFromUserId(userId),
671
567
  isBlocked: isBlocked,
@@ -674,20 +570,7 @@ export class Client extends EventEmitter {
674
570
  }
675
571
  async setSpaceImage(spaceStreamId, chunkedMediaInfo) {
676
572
  this.logCall('setSpaceImage', spaceStreamId, chunkedMediaInfo.streamId, chunkedMediaInfo.info);
677
- // create the chunked media to be added
678
- const spaceAddress = contractAddressFromSpaceId(spaceStreamId);
679
- const context = spaceAddress.toLowerCase();
680
- // encrypt the chunked media
681
- // use the lowercased spaceId as the key phrase
682
- const { key, iv } = await deriveKeyAndIV(context);
683
- const { ciphertext } = await encryptAESGCM(toBinary(ChunkedMediaSchema, create(ChunkedMediaSchema, chunkedMediaInfo)), key, iv);
684
- const encryptedData = create(EncryptedDataSchema, {
685
- ciphertext: uint8ArrayToBase64(ciphertext),
686
- algorithm: AES_GCM_DERIVED_ALGORITHM,
687
- }); // aellis this should probably include `satisfies PlainMessage<EncryptedData>`
688
- // add the event to the stream
689
- const event = make_SpacePayload_SpaceImage(encryptedData);
690
- return this.makeEventAndAddToStream(spaceStreamId, event, { method: 'setSpaceImage' });
573
+ throw new Error('Space streams are not supported');
691
574
  }
692
575
  async setUserProfileImage(chunkedMediaInfo, userId) {
693
576
  this.logCall('setUserProfileImage', userId, chunkedMediaInfo.streamId, chunkedMediaInfo.info);
@@ -739,79 +622,6 @@ export class Client extends EventEmitter {
739
622
  const streamId = makeUserMetadataStreamId(userId);
740
623
  return this.stream(streamId)?.view.userMetadataContent.getBio();
741
624
  }
742
- async setDisplayName(streamId, displayName) {
743
- check(isDefined(this.cryptoBackend));
744
- const encryptedData = await this.cryptoBackend.encryptGroupEvent(streamId, new TextEncoder().encode(displayName), this.defaultGroupEncryptionAlgorithm);
745
- await this.makeEventAndAddToStream(streamId, make_MemberPayload_DisplayName(encryptedData), { method: 'displayName' });
746
- }
747
- async setUsername(streamId, username, force = false, options) {
748
- check(isDefined(this.cryptoBackend));
749
- check(username.length > 0, 'username cannot be empty');
750
- const stream = this.stream(streamId);
751
- check(isDefined(stream), 'stream not found');
752
- // Clear any existing timeout first
753
- const existingTimeout = this.pendingUsernameTimeouts.get(streamId);
754
- if (existingTimeout) {
755
- clearTimeout(existingTimeout);
756
- this.pendingUsernameTimeouts.delete(streamId);
757
- }
758
- stream.view.getMemberMetadata().usernames.setLocalUsername(this.userId, username, this);
759
- // be very careful about setting a username for a large group, we don't want to inject
760
- // more sessions than needed into the group. unless a session has been received in 60 seconds,
761
- // we will force set the username.
762
- const memberCount = stream.view.membershipContent.joined.size;
763
- const hasHybridSession = (await this.cryptoBackend?.hasHybridSession?.(streamId)) ?? false;
764
- const largeGroupThreshold = options?.largeGroupThreshold ?? 100;
765
- const delayMs = options?.delayMs ?? 60000;
766
- if (memberCount > largeGroupThreshold && !hasHybridSession && !force) {
767
- this.pendingUsernames.set(streamId, username);
768
- const timeout = setTimeout(() => {
769
- void this.setUsername(streamId, username, true, options);
770
- }, delayMs);
771
- this.pendingUsernameTimeouts.set(streamId, timeout);
772
- return;
773
- }
774
- // Clean up pending state
775
- this.pendingUsernames.delete(streamId);
776
- this.pendingUsernameTimeouts.delete(streamId);
777
- try {
778
- const encryptedData = await this.cryptoBackend.encryptGroupEvent(streamId, new TextEncoder().encode(username), this.defaultGroupEncryptionAlgorithm);
779
- encryptedData.checksum = usernameChecksum(username, streamId);
780
- await this.makeEventAndAddToStream(streamId, make_MemberPayload_Username(encryptedData), { method: 'username' });
781
- }
782
- catch (err) {
783
- stream.view.getMemberMetadata().usernames.resetLocalUsername(this.userId);
784
- // Clean up pending state on error
785
- this.pendingUsernames.delete(streamId);
786
- this.pendingUsernameTimeouts.delete(streamId);
787
- throw err;
788
- }
789
- }
790
- async setPendingUsernames() {
791
- await Promise.all(Array.from(this.pendingUsernames.entries()).map(([streamId, pendingUsername]) => {
792
- this.pendingUsernames.delete(streamId);
793
- return this.setUsername(streamId, pendingUsername);
794
- }));
795
- }
796
- async setEnsAddress(streamId, walletAddress) {
797
- check(isDefined(this.cryptoBackend));
798
- const bytes = typeof walletAddress === 'string' ? addressFromUserId(walletAddress) : walletAddress;
799
- await this.makeEventAndAddToStream(streamId, make_MemberPayload_EnsAddress(bytes), {
800
- method: 'ensAddress',
801
- });
802
- }
803
- async setNft(streamId, tokenId, chainId, contractAddress) {
804
- const payload = tokenId.length > 0
805
- ? create(MemberPayload_NftSchema, {
806
- chainId: chainId,
807
- contractAddress: bin_fromHexString(contractAddress),
808
- tokenId: bin_fromString(tokenId),
809
- })
810
- : create(MemberPayload_NftSchema);
811
- await this.makeEventAndAddToStream(streamId, make_MemberPayload_Nft(payload), {
812
- method: 'nft',
813
- });
814
- }
815
625
  async getPersistedEvent(streamId, eventId) {
816
626
  const timelineEvent = this.streamsView.timelinesView.value.timelines[streamId]?.find((e) => e.eventId === eventId);
817
627
  if (!timelineEvent) {
@@ -865,11 +675,6 @@ export class Client extends EventEmitter {
865
675
  });
866
676
  return result;
867
677
  }
868
- isUsernameAvailable(streamId, username) {
869
- const stream = this.streams.get(streamId);
870
- check(isDefined(stream), 'stream not found');
871
- return (stream.view.getMemberMetadata().usernames.cleartextUsernameAvailable(username) ?? false);
872
- }
873
678
  async waitForStream(inStreamId, opts) {
874
679
  this.logCall('waitForStream', inStreamId);
875
680
  const timeoutMs = opts?.timeoutMs ?? getMaxTimeoutMs(this.rpcClient.opts);
@@ -1054,7 +859,7 @@ export class Client extends EventEmitter {
1054
859
  };
1055
860
  onInvitedToStream = async (streamId) => {
1056
861
  this.logEvent('onInvitedToStream', streamId);
1057
- if (isDMChannelStreamId(streamId) || isGDMChannelStreamId(streamId)) {
862
+ if (isGDMChannelStreamId(streamId)) {
1058
863
  await this.initStream(streamId);
1059
864
  }
1060
865
  };
@@ -1062,39 +867,7 @@ export class Client extends EventEmitter {
1062
867
  this.logEvent('onLeftStream', streamId);
1063
868
  return await this.streams.removeStreamFromSync(streamId);
1064
869
  };
1065
- onStreamUpToDate = (streamId) => {
1066
- // we're migrating away from the old megolm based encryption to the new `grpaes` encryption,
1067
- // this is to avoid too many active crypto sessions active in the same stream
1068
- // this function will:
1069
- // - check if the user's username is encrypted with the old algorithm
1070
- // - check if the user has a hybrid session ready to go (hasHybridSession)
1071
- // - re-encrypt the username with the new algorithm
1072
- const updateUsernameEncryptionIfNeeded = async () => {
1073
- if (!isSpaceStreamId(streamId)) {
1074
- return;
1075
- }
1076
- const hasHybridSession = (await this.cryptoBackend?.hasHybridSession(streamId)) ?? false;
1077
- if (!hasHybridSession) {
1078
- return;
1079
- }
1080
- const stream = this.stream(streamId);
1081
- if (!stream) {
1082
- return;
1083
- }
1084
- const currentUsernameEncryptedData = stream.view.membershipContent.memberMetadata.usernames.currentUsernameEncryptedData;
1085
- if (!currentUsernameEncryptedData ||
1086
- currentUsernameEncryptedData.algorithm ===
1087
- GroupEncryptionAlgorithmId.HybridGroupEncryption) {
1088
- return;
1089
- }
1090
- const currentUsername = stream.view.membershipContent.memberMetadata.usernames.info(this.userId);
1091
- if (!currentUsername || currentUsername.username.length === 0) {
1092
- return;
1093
- }
1094
- await this.setUsername(streamId, currentUsername.username);
1095
- };
1096
- void updateUsernameEncryptionIfNeeded();
1097
- };
870
+ onStreamUpToDate = (_streamId) => { };
1098
871
  startSync() {
1099
872
  this.syncedStreamsExtensions.setStartSyncRequested(true);
1100
873
  }
@@ -1157,23 +930,7 @@ export class Client extends EventEmitter {
1157
930
  throw new Error('failed to encrypt message');
1158
931
  }
1159
932
  message.refEventId = getRefEventIdFromChannelMessage(payload);
1160
- if (isChannelStreamId(streamId)) {
1161
- return this.makeEventAndAddToStream(streamId, make_ChannelPayload_Message(message), {
1162
- method: 'sendMessage',
1163
- localId,
1164
- cleartext,
1165
- tags,
1166
- });
1167
- }
1168
- else if (isDMChannelStreamId(streamId)) {
1169
- return this.makeEventAndAddToStream(streamId, make_DMChannelPayload_Message(message), {
1170
- method: 'sendMessageDM',
1171
- localId,
1172
- cleartext,
1173
- tags,
1174
- });
1175
- }
1176
- else if (isGDMChannelStreamId(streamId)) {
933
+ if (isGDMChannelStreamId(streamId)) {
1177
934
  return this.makeEventAndAddToStream(streamId, make_GDMChannelPayload_Message(message), {
1178
935
  method: 'sendMessageGDM',
1179
936
  localId,
@@ -1181,9 +938,7 @@ export class Client extends EventEmitter {
1181
938
  tags,
1182
939
  });
1183
940
  }
1184
- else {
1185
- throw new Error(`invalid streamId: ${streamId}`);
1186
- }
941
+ throw new Error(`invalid streamId: ${streamId}`);
1187
942
  }
1188
943
  async sendChannelMessage_Text(streamId, payload, opts) {
1189
944
  const { content, ...options } = payload;
@@ -1230,6 +985,21 @@ export class Client extends EventEmitter {
1230
985
  },
1231
986
  }, opts);
1232
987
  }
988
+ async sendChannelMessage_ConversationSeedResponse(streamId, payload, opts) {
989
+ const { content, ...options } = payload;
990
+ return this.sendChannelMessage(streamId, {
991
+ payload: {
992
+ case: 'post',
993
+ value: {
994
+ ...options,
995
+ content: {
996
+ case: 'conversationSeedResponse',
997
+ value: content,
998
+ },
999
+ },
1000
+ },
1001
+ }, opts);
1002
+ }
1233
1003
  async sendMediaPayload(creationCookie, last, data, chunkIndex, iv) {
1234
1004
  const payload = make_MediaPayload_Chunk({
1235
1005
  data: data,
@@ -1480,16 +1250,6 @@ export class Client extends EventEmitter {
1480
1250
  async leaveStream(streamId) {
1481
1251
  this.logCall('leaveStream', streamId);
1482
1252
  check(isDefined(this.userStreamId));
1483
- if (isSpaceStreamId(streamId)) {
1484
- const channelIds = Object.keys(this.stream(streamId)?.view.spaceContent.spaceChannelsMetadata ?? {});
1485
- const userStream = this.stream(this.userStreamId);
1486
- for (const channelId of channelIds) {
1487
- if (userStream?.view.userContent.streamMemberships[channelId]?.op ===
1488
- MembershipOp.SO_JOIN) {
1489
- await this.leaveStream(channelId);
1490
- }
1491
- }
1492
- }
1493
1253
  return this.makeEventAndAddToStream(this.userStreamId, make_UserPayload_UserMembership({
1494
1254
  op: MembershipOp.SO_LEAVE,
1495
1255
  streamId: streamIdAsBytes(streamId),
@@ -1498,25 +1258,6 @@ export class Client extends EventEmitter {
1498
1258
  async removeUser(streamId, userId) {
1499
1259
  check(isDefined(this.userStreamId));
1500
1260
  this.logCall('removeUser', streamId, userId);
1501
- if (isSpaceStreamId(streamId)) {
1502
- const channelIds = Object.keys(this.stream(streamId)?.view.spaceContent.spaceChannelsMetadata ?? {});
1503
- const userStreamId = makeUserStreamId(userId);
1504
- const userStream = await this.getStream(userStreamId);
1505
- for (const channelId of channelIds) {
1506
- if (userStream.userContent.streamMemberships[channelId]?.op === MembershipOp.SO_JOIN) {
1507
- try {
1508
- await this.removeUser(channelId, userId);
1509
- }
1510
- catch (error) {
1511
- this.logError('Failed to remove user from channel', {
1512
- channelId,
1513
- userId,
1514
- error,
1515
- });
1516
- }
1517
- }
1518
- }
1519
- }
1520
1261
  return this.makeEventAndAddToStream(this.userStreamId, make_UserPayload_UserMembershipAction({
1521
1262
  op: MembershipOp.SO_LEAVE,
1522
1263
  userId: addressFromUserId(userId),
@@ -1976,6 +1717,50 @@ export class Client extends EventEmitter {
1976
1717
  check(isDefined(this.cryptoBackend), 'crypto backend not initialized');
1977
1718
  return this.cryptoBackend.ensureOutboundSession(streamId, this.defaultGroupEncryptionAlgorithm, opts);
1978
1719
  }
1720
+ async exportInviteEncryptionData(inStreamId) {
1721
+ const streamId = streamIdAsString(inStreamId);
1722
+ await this.ensureOutboundSession(streamId);
1723
+ check(isDefined(this.cryptoBackend), 'crypto backend not initialized');
1724
+ const sessionIds = await this.cryptoBackend.getGroupSessionIds(streamId);
1725
+ const sessions = [];
1726
+ for (const sessionId of sessionIds) {
1727
+ const session = await this.cryptoBackend.exportGroupSession(streamId, sessionId);
1728
+ if (session) {
1729
+ sessions.push(session);
1730
+ }
1731
+ }
1732
+ check(sessions.length > 0, 'no group sessions found for stream');
1733
+ check(new Set(sessions.map((session) => session.algorithm)).size === 1, 'group sessions must all use the same algorithm');
1734
+ return {
1735
+ streamId: streamIdAsBytes(streamId),
1736
+ algorithm: sessions[0].algorithm,
1737
+ sessions: sessions.map((session) => ({
1738
+ sessionId: session.sessionId,
1739
+ sessionKey: session.sessionKey,
1740
+ })),
1741
+ };
1742
+ }
1743
+ async importInviteEncryptionData(inStreamId, inviteEncryptionData) {
1744
+ const streamId = streamIdAsString(inStreamId);
1745
+ check(isDefined(this.cryptoBackend), 'crypto backend not initialized');
1746
+ check(isDefined(inviteEncryptionData), 'invite encryption data is required');
1747
+ const inviteStreamId = streamIdAsString(inviteEncryptionData.streamId);
1748
+ check(inviteStreamId === streamId, 'invite encryption stream id must match target stream');
1749
+ check(inviteEncryptionData.sessions.length > 0, 'invite encryption data must contain at least one session');
1750
+ const parsedAlgorithm = parseGroupEncryptionAlgorithmId(inviteEncryptionData.algorithm);
1751
+ check(parsedAlgorithm.kind === 'matched', `unsupported invite encryption algorithm: ${inviteEncryptionData.algorithm}`);
1752
+ const sessions = inviteEncryptionData.sessions.map((session, index) => {
1753
+ check(session.sessionId !== '', `invite encryption session ${index} is missing sessionId`);
1754
+ check(session.sessionKey !== '', `invite encryption session ${index} is missing sessionKey`);
1755
+ return {
1756
+ streamId,
1757
+ sessionId: session.sessionId,
1758
+ sessionKey: session.sessionKey,
1759
+ algorithm: parsedAlgorithm.value,
1760
+ };
1761
+ });
1762
+ await this.cryptoBackend.importSessionKeys(streamId, sessions);
1763
+ }
1979
1764
  /**
1980
1765
  * decrypts and updates the decrypted event
1981
1766
  */