@towns-labs/sdk 2.0.12 → 2.1.0

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 (436) hide show
  1. package/dist/client.d.ts +11 -31
  2. package/dist/client.d.ts.map +1 -1
  3. package/dist/client.js +68 -327
  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 -20
  17. package/dist/index.d.ts.map +1 -1
  18. package/dist/index.js +0 -20
  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/streamUtils.d.ts.map +1 -1
  54. package/dist/streamUtils.js +0 -8
  55. package/dist/streamUtils.js.map +1 -1
  56. package/dist/sync/SyncedStreamsControllerLite.d.ts.map +1 -1
  57. package/dist/sync/SyncedStreamsControllerLite.js +7 -11
  58. package/dist/sync/SyncedStreamsControllerLite.js.map +1 -1
  59. package/dist/sync-agent/db.d.ts +13 -0
  60. package/dist/sync-agent/db.d.ts.map +1 -0
  61. package/dist/sync-agent/db.js +24 -0
  62. package/dist/sync-agent/db.js.map +1 -0
  63. package/dist/sync-agent/gdms/models/gdm.d.ts +3 -3
  64. package/dist/sync-agent/gdms/models/gdm.d.ts.map +1 -1
  65. package/dist/sync-agent/river-connection/riverConnection.d.ts +1 -6
  66. package/dist/sync-agent/river-connection/riverConnection.d.ts.map +1 -1
  67. package/dist/sync-agent/river-connection/riverConnection.js +3 -8
  68. package/dist/sync-agent/river-connection/riverConnection.js.map +1 -1
  69. package/dist/sync-agent/syncAgent.d.ts +0 -6
  70. package/dist/sync-agent/syncAgent.d.ts.map +1 -1
  71. package/dist/sync-agent/syncAgent.js +0 -8
  72. package/dist/sync-agent/syncAgent.js.map +1 -1
  73. package/dist/syncedStreamsExtension.d.ts.map +1 -1
  74. package/dist/syncedStreamsExtension.js +10 -22
  75. package/dist/syncedStreamsExtension.js.map +1 -1
  76. package/dist/syncedStreamsLoop.d.ts.map +1 -1
  77. package/dist/syncedStreamsLoop.js +4 -18
  78. package/dist/syncedStreamsLoop.js.map +1 -1
  79. package/dist/tests/bob_testUtils.d.ts.map +1 -1
  80. package/dist/tests/bob_testUtils.js +35 -69
  81. package/dist/tests/bob_testUtils.js.map +1 -1
  82. package/dist/tests/multi_ne/aliceAndFriends10for10.test.js +1 -1
  83. package/dist/tests/multi_ne/aliceAndFriends10for10.test.js.map +1 -1
  84. package/dist/tests/multi_ne/aliceAndFriendslongAndRandom.test.js +1 -1
  85. package/dist/tests/multi_ne/aliceAndFriendslongAndRandom.test.js.map +1 -1
  86. package/dist/tests/multi_ne/bobFlushes.test.js.map +1 -1
  87. package/dist/tests/multi_ne/channels.test.js +6 -9
  88. package/dist/tests/multi_ne/channels.test.js.map +1 -1
  89. package/dist/tests/multi_ne/client.test.js +24 -98
  90. package/dist/tests/multi_ne/client.test.js.map +1 -1
  91. package/dist/tests/multi_ne/clientCrypto.test.js +3 -3
  92. package/dist/tests/multi_ne/clientCrypto.test.js.map +1 -1
  93. package/dist/tests/multi_ne/clientDecryptionExtensions.test.js +12 -47
  94. package/dist/tests/multi_ne/clientDecryptionExtensions.test.js.map +1 -1
  95. package/dist/tests/multi_ne/ephemeralEvents.test.js +1 -1
  96. package/dist/tests/multi_ne/ephemeralEvents.test.js.map +1 -1
  97. package/dist/tests/multi_ne/id.test.js +6 -20
  98. package/dist/tests/multi_ne/id.test.js.map +1 -1
  99. package/dist/tests/multi_ne/media.test.js +20 -61
  100. package/dist/tests/multi_ne/media.test.js.map +1 -1
  101. package/dist/tests/multi_ne/memberMetadata.test.d.ts +0 -3
  102. package/dist/tests/multi_ne/memberMetadata.test.d.ts.map +1 -1
  103. package/dist/tests/multi_ne/memberMetadata.test.js +14 -582
  104. package/dist/tests/multi_ne/memberMetadata.test.js.map +1 -1
  105. package/dist/tests/multi_ne/outboundGroupSession.test.js +15 -13
  106. package/dist/tests/multi_ne/outboundGroupSession.test.js.map +1 -1
  107. package/dist/tests/multi_ne/restart.test.js +11 -34
  108. package/dist/tests/multi_ne/restart.test.js.map +1 -1
  109. package/dist/tests/multi_ne/sign.test.js +2 -2
  110. package/dist/tests/multi_ne/sign.test.js.map +1 -1
  111. package/dist/tests/multi_ne/streamMembershipHardening.test.js +0 -3
  112. package/dist/tests/multi_ne/streamMembershipHardening.test.js.map +1 -1
  113. package/dist/tests/multi_ne/streamRpcClient.test.js +58 -349
  114. package/dist/tests/multi_ne/streamRpcClient.test.js.map +1 -1
  115. package/dist/tests/multi_ne/streamRpcClientSync.test.js +63 -124
  116. package/dist/tests/multi_ne/streamRpcClientSync.test.js.map +1 -1
  117. package/dist/tests/multi_ne/streamStateView_User.test.js +23 -20
  118. package/dist/tests/multi_ne/streamStateView_User.test.js.map +1 -1
  119. package/dist/tests/{multi/spaceDapp.test.d.ts → multi_ne/sync-agent/gdms.test.d.ts} +1 -1
  120. package/dist/tests/multi_ne/sync-agent/gdms.test.d.ts.map +1 -0
  121. package/dist/tests/multi_ne/sync-agent/gdms.test.js +34 -0
  122. package/dist/tests/multi_ne/sync-agent/gdms.test.js.map +1 -0
  123. package/dist/tests/multi_ne/sync-agent/member.test.d.ts +3 -0
  124. package/dist/tests/multi_ne/sync-agent/member.test.d.ts.map +1 -1
  125. package/dist/tests/multi_ne/sync-agent/member.test.js +19 -8
  126. package/dist/tests/multi_ne/sync-agent/member.test.js.map +1 -1
  127. package/dist/tests/multi_ne/sync-agent/members.test.d.ts +3 -0
  128. package/dist/tests/multi_ne/sync-agent/members.test.d.ts.map +1 -1
  129. package/dist/tests/multi_ne/sync-agent/members.test.js +24 -19
  130. package/dist/tests/multi_ne/sync-agent/members.test.js.map +1 -1
  131. package/dist/tests/multi_ne/sync-agent/streams.test.d.ts +3 -0
  132. package/dist/tests/multi_ne/sync-agent/streams.test.d.ts.map +1 -1
  133. package/dist/tests/multi_ne/sync-agent/streams.test.js +14 -14
  134. package/dist/tests/multi_ne/sync-agent/streams.test.js.map +1 -1
  135. package/dist/tests/multi_ne/sync-agent/syncAgent.test.d.ts +3 -0
  136. package/dist/tests/multi_ne/sync-agent/syncAgent.test.d.ts.map +1 -1
  137. package/dist/tests/multi_ne/sync-agent/syncAgent.test.js +23 -15
  138. package/dist/tests/multi_ne/sync-agent/syncAgent.test.js.map +1 -1
  139. package/dist/tests/multi_ne/sync-agent/syncAgents.test.d.ts +3 -0
  140. package/dist/tests/multi_ne/sync-agent/syncAgents.test.d.ts.map +1 -1
  141. package/dist/tests/multi_ne/sync-agent/syncAgents.test.js +34 -70
  142. package/dist/tests/multi_ne/sync-agent/syncAgents.test.js.map +1 -1
  143. package/dist/tests/multi_ne/sync-agent/timeline.test.js +68 -119
  144. package/dist/tests/multi_ne/sync-agent/timeline.test.js.map +1 -1
  145. package/dist/tests/multi_ne/sync-agent/user.test.js +10 -5
  146. package/dist/tests/multi_ne/sync-agent/user.test.js.map +1 -1
  147. package/dist/tests/multi_ne/syncWithBlocks.test.d.ts +3 -0
  148. package/dist/tests/multi_ne/syncWithBlocks.test.d.ts.map +1 -1
  149. package/dist/tests/multi_ne/syncWithBlocks.test.js +47 -77
  150. package/dist/tests/multi_ne/syncWithBlocks.test.js.map +1 -1
  151. package/dist/tests/multi_ne/syncedStream.test.js +1 -1
  152. package/dist/tests/multi_ne/syncedStream.test.js.map +1 -1
  153. package/dist/tests/multi_ne/syncedStreams.test.js +1 -1
  154. package/dist/tests/multi_ne/syncedStreams.test.js.map +1 -1
  155. package/dist/tests/multi_ne/userInboxMessage.test.js +4 -4
  156. package/dist/tests/multi_ne/userInboxMessage.test.js.map +1 -1
  157. package/dist/tests/multi_ne/userSettings.test.js +3 -16
  158. package/dist/tests/multi_ne/userSettings.test.js.map +1 -1
  159. package/dist/tests/multi_ne/workflows.test.js +22 -50
  160. package/dist/tests/multi_ne/workflows.test.js.map +1 -1
  161. package/dist/tests/testDriver_testUtils.d.ts.map +1 -1
  162. package/dist/tests/testDriver_testUtils.js +6 -22
  163. package/dist/tests/testDriver_testUtils.js.map +1 -1
  164. package/dist/tests/testUtils.d.ts +3 -104
  165. package/dist/tests/testUtils.d.ts.map +1 -1
  166. package/dist/tests/testUtils.js +6 -625
  167. package/dist/tests/testUtils.js.map +1 -1
  168. package/dist/tests/unit/snapshotMigration0001.test.js +4 -20
  169. package/dist/tests/unit/snapshotMigration0001.test.js.map +1 -1
  170. package/dist/tests/unit/snapshotMigration0004.test.js +5 -43
  171. package/dist/tests/unit/snapshotMigration0004.test.js.map +1 -1
  172. package/dist/tests/unit/snapshotMigration0005.test.js +5 -43
  173. package/dist/tests/unit/snapshotMigration0005.test.js.map +1 -1
  174. package/dist/tests/unit/streamUtils.test.js +21 -22
  175. package/dist/tests/unit/streamUtils.test.js.map +1 -1
  176. package/dist/tests/unit/tags.test.js +5 -7
  177. package/dist/tests/unit/tags.test.js.map +1 -1
  178. package/dist/types.d.ts +1 -21
  179. package/dist/types.d.ts.map +1 -1
  180. package/dist/types.js +2 -231
  181. package/dist/types.js.map +1 -1
  182. package/dist/views/models/timelineEvent.d.ts.map +1 -1
  183. package/dist/views/models/timelineEvent.js +1 -178
  184. package/dist/views/models/timelineEvent.js.map +1 -1
  185. package/dist/views/models/timelineTypes.d.ts +3 -29
  186. package/dist/views/models/timelineTypes.d.ts.map +1 -1
  187. package/dist/views/models/timelineTypes.js +0 -4
  188. package/dist/views/models/timelineTypes.js.map +1 -1
  189. package/dist/views/streams/timelines.d.ts +1 -1
  190. package/dist/views/streams/timelines.d.ts.map +1 -1
  191. package/dist/views/streams/timelines.js +3 -3
  192. package/dist/views/streams/timelines.js.map +1 -1
  193. package/dist/views/streamsView.d.ts +0 -6
  194. package/dist/views/streamsView.d.ts.map +1 -1
  195. package/dist/views/streamsView.js +0 -11
  196. package/dist/views/streamsView.js.map +1 -1
  197. package/dist/views/transforms/dmsAndGdmsTransform.d.ts +0 -2
  198. package/dist/views/transforms/dmsAndGdmsTransform.d.ts.map +1 -1
  199. package/dist/views/transforms/dmsAndGdmsTransform.js +1 -26
  200. package/dist/views/transforms/dmsAndGdmsTransform.js.map +1 -1
  201. package/dist/views/transforms/dmsAndGdmsUnreadIdsTransform.d.ts +1 -2
  202. package/dist/views/transforms/dmsAndGdmsUnreadIdsTransform.d.ts.map +1 -1
  203. package/dist/views/transforms/dmsAndGdmsUnreadIdsTransform.js +2 -5
  204. package/dist/views/transforms/dmsAndGdmsUnreadIdsTransform.js.map +1 -1
  205. package/dist/views/transforms/spaceIdsTransform.d.ts +1 -1
  206. package/dist/views/transforms/spaceIdsTransform.d.ts.map +1 -1
  207. package/dist/views/transforms/spaceIdsTransform.js +3 -10
  208. package/dist/views/transforms/spaceIdsTransform.js.map +1 -1
  209. package/dist/views/transforms/spaceMentionsTransform.d.ts.map +1 -1
  210. package/dist/views/transforms/spaceMentionsTransform.js +13 -14
  211. package/dist/views/transforms/spaceMentionsTransform.js.map +1 -1
  212. package/dist/views/transforms/spaceUnreadsTransform.d.ts.map +1 -1
  213. package/dist/views/transforms/spaceUnreadsTransform.js +21 -22
  214. package/dist/views/transforms/spaceUnreadsTransform.js.map +1 -1
  215. package/dist/views/transforms/unreadMarkersTransform.js +2 -4
  216. package/dist/views/transforms/unreadMarkersTransform.js.map +1 -1
  217. package/package.json +9 -9
  218. package/dist/memberMetadata_DisplayNames.d.ts +0 -26
  219. package/dist/memberMetadata_DisplayNames.d.ts.map +0 -1
  220. package/dist/memberMetadata_DisplayNames.js +0 -95
  221. package/dist/memberMetadata_DisplayNames.js.map +0 -1
  222. package/dist/memberMetadata_EnsAddresses.d.ts +0 -25
  223. package/dist/memberMetadata_EnsAddresses.d.ts.map +0 -1
  224. package/dist/memberMetadata_EnsAddresses.js +0 -86
  225. package/dist/memberMetadata_EnsAddresses.js.map +0 -1
  226. package/dist/memberMetadata_Nft.d.ts +0 -31
  227. package/dist/memberMetadata_Nft.d.ts.map +0 -1
  228. package/dist/memberMetadata_Nft.js +0 -95
  229. package/dist/memberMetadata_Nft.js.map +0 -1
  230. package/dist/memberMetadata_Usernames.d.ts +0 -35
  231. package/dist/memberMetadata_Usernames.d.ts.map +0 -1
  232. package/dist/memberMetadata_Usernames.js +0 -162
  233. package/dist/memberMetadata_Usernames.js.map +0 -1
  234. package/dist/streamStateView_Channel.d.ts +0 -16
  235. package/dist/streamStateView_Channel.d.ts.map +0 -1
  236. package/dist/streamStateView_Channel.js +0 -76
  237. package/dist/streamStateView_Channel.js.map +0 -1
  238. package/dist/streamStateView_DMChannel.d.ts +0 -25
  239. package/dist/streamStateView_DMChannel.d.ts.map +0 -1
  240. package/dist/streamStateView_DMChannel.js +0 -114
  241. package/dist/streamStateView_DMChannel.js.map +0 -1
  242. package/dist/streamStateView_Space.d.ts +0 -31
  243. package/dist/streamStateView_Space.d.ts.map +0 -1
  244. package/dist/streamStateView_Space.js +0 -193
  245. package/dist/streamStateView_Space.js.map +0 -1
  246. package/dist/sync-agent/dms/dms.d.ts +0 -24
  247. package/dist/sync-agent/dms/dms.d.ts.map +0 -1
  248. package/dist/sync-agent/dms/dms.js +0 -45
  249. package/dist/sync-agent/dms/dms.js.map +0 -1
  250. package/dist/sync-agent/dms/models/dm.d.ts +0 -73
  251. package/dist/sync-agent/dms/models/dm.d.ts.map +0 -1
  252. package/dist/sync-agent/dms/models/dm.js +0 -143
  253. package/dist/sync-agent/dms/models/dm.js.map +0 -1
  254. package/dist/sync-agent/spaces/models/channel.d.ts +0 -102
  255. package/dist/sync-agent/spaces/models/channel.d.ts.map +0 -1
  256. package/dist/sync-agent/spaces/models/channel.js +0 -169
  257. package/dist/sync-agent/spaces/models/channel.js.map +0 -1
  258. package/dist/sync-agent/spaces/models/space.d.ts +0 -56
  259. package/dist/sync-agent/spaces/models/space.d.ts.map +0 -1
  260. package/dist/sync-agent/spaces/models/space.js +0 -115
  261. package/dist/sync-agent/spaces/models/space.js.map +0 -1
  262. package/dist/sync-agent/spaces/spaces.d.ts +0 -25
  263. package/dist/sync-agent/spaces/spaces.d.ts.map +0 -1
  264. package/dist/sync-agent/spaces/spaces.js +0 -56
  265. package/dist/sync-agent/spaces/spaces.js.map +0 -1
  266. package/dist/tests/multi/channelSpaceSettings.test.d.ts +0 -5
  267. package/dist/tests/multi/channelSpaceSettings.test.d.ts.map +0 -1
  268. package/dist/tests/multi/channelSpaceSettings.test.js +0 -204
  269. package/dist/tests/multi/channelSpaceSettings.test.js.map +0 -1
  270. package/dist/tests/multi/disableChannel.test.d.ts +0 -5
  271. package/dist/tests/multi/disableChannel.test.d.ts.map +0 -1
  272. package/dist/tests/multi/disableChannel.test.js +0 -30
  273. package/dist/tests/multi/disableChannel.test.js.map +0 -1
  274. package/dist/tests/multi/disableSpace.test.d.ts +0 -5
  275. package/dist/tests/multi/disableSpace.test.d.ts.map +0 -1
  276. package/dist/tests/multi/disableSpace.test.js +0 -37
  277. package/dist/tests/multi/disableSpace.test.js.map +0 -1
  278. package/dist/tests/multi/entitlements/channelEntitlementPermissions.test.d.ts +0 -5
  279. package/dist/tests/multi/entitlements/channelEntitlementPermissions.test.d.ts.map +0 -1
  280. package/dist/tests/multi/entitlements/channelEntitlementPermissions.test.js +0 -129
  281. package/dist/tests/multi/entitlements/channelEntitlementPermissions.test.js.map +0 -1
  282. package/dist/tests/multi/entitlements/channelWithThreeNestedEntitlement.test.d.ts +0 -5
  283. package/dist/tests/multi/entitlements/channelWithThreeNestedEntitlement.test.d.ts.map +0 -1
  284. package/dist/tests/multi/entitlements/channelWithThreeNestedEntitlement.test.js +0 -44
  285. package/dist/tests/multi/entitlements/channelWithThreeNestedEntitlement.test.js.map +0 -1
  286. package/dist/tests/multi/entitlements/channelsWithComplexEntitlements.test.d.ts +0 -5
  287. package/dist/tests/multi/entitlements/channelsWithComplexEntitlements.test.d.ts.map +0 -1
  288. package/dist/tests/multi/entitlements/channelsWithComplexEntitlements.test.js +0 -125
  289. package/dist/tests/multi/entitlements/channelsWithComplexEntitlements.test.js.map +0 -1
  290. package/dist/tests/multi/entitlements/channelsWithEntitlementLoss.test.d.ts +0 -5
  291. package/dist/tests/multi/entitlements/channelsWithEntitlementLoss.test.d.ts.map +0 -1
  292. package/dist/tests/multi/entitlements/channelsWithEntitlementLoss.test.js +0 -72
  293. package/dist/tests/multi/entitlements/channelsWithEntitlementLoss.test.js.map +0 -1
  294. package/dist/tests/multi/entitlements/channelsWithEntitlements.test.d.ts +0 -5
  295. package/dist/tests/multi/entitlements/channelsWithEntitlements.test.d.ts.map +0 -1
  296. package/dist/tests/multi/entitlements/channelsWithEntitlements.test.js +0 -57
  297. package/dist/tests/multi/entitlements/channelsWithEntitlements.test.js.map +0 -1
  298. package/dist/tests/multi/entitlements/channelsWithErc20Entitlements.test.d.ts +0 -5
  299. package/dist/tests/multi/entitlements/channelsWithErc20Entitlements.test.d.ts.map +0 -1
  300. package/dist/tests/multi/entitlements/channelsWithErc20Entitlements.test.js +0 -86
  301. package/dist/tests/multi/entitlements/channelsWithErc20Entitlements.test.js.map +0 -1
  302. package/dist/tests/multi/entitlements/channelsWithErc721Entitlements.test.d.ts +0 -5
  303. package/dist/tests/multi/entitlements/channelsWithErc721Entitlements.test.d.ts.map +0 -1
  304. package/dist/tests/multi/entitlements/channelsWithErc721Entitlements.test.js +0 -69
  305. package/dist/tests/multi/entitlements/channelsWithErc721Entitlements.test.js.map +0 -1
  306. package/dist/tests/multi/entitlements/channelsWithEthBalanceEntitlements.test.d.ts +0 -5
  307. package/dist/tests/multi/entitlements/channelsWithEthBalanceEntitlements.test.d.ts.map +0 -1
  308. package/dist/tests/multi/entitlements/channelsWithEthBalanceEntitlements.test.js +0 -145
  309. package/dist/tests/multi/entitlements/channelsWithEthBalanceEntitlements.test.js.map +0 -1
  310. package/dist/tests/multi/entitlements/channelsWithUserEntitlements.test.d.ts +0 -5
  311. package/dist/tests/multi/entitlements/channelsWithUserEntitlements.test.d.ts.map +0 -1
  312. package/dist/tests/multi/entitlements/channelsWithUserEntitlements.test.js +0 -53
  313. package/dist/tests/multi/entitlements/channelsWithUserEntitlements.test.js.map +0 -1
  314. package/dist/tests/multi/entitlements/membershipRenewals.test.d.ts +0 -5
  315. package/dist/tests/multi/entitlements/membershipRenewals.test.d.ts.map +0 -1
  316. package/dist/tests/multi/entitlements/membershipRenewals.test.js +0 -150
  317. package/dist/tests/multi/entitlements/membershipRenewals.test.js.map +0 -1
  318. package/dist/tests/multi/entitlements/spaceWithComplexEntitlements.test.d.ts +0 -5
  319. package/dist/tests/multi/entitlements/spaceWithComplexEntitlements.test.d.ts.map +0 -1
  320. package/dist/tests/multi/entitlements/spaceWithComplexEntitlements.test.js +0 -131
  321. package/dist/tests/multi/entitlements/spaceWithComplexEntitlements.test.js.map +0 -1
  322. package/dist/tests/multi/entitlements/spaceWithEntitlements.test.d.ts +0 -5
  323. package/dist/tests/multi/entitlements/spaceWithEntitlements.test.d.ts.map +0 -1
  324. package/dist/tests/multi/entitlements/spaceWithEntitlements.test.js +0 -109
  325. package/dist/tests/multi/entitlements/spaceWithEntitlements.test.js.map +0 -1
  326. package/dist/tests/multi/entitlements/spaceWithErc20Entitlements.test.d.ts +0 -5
  327. package/dist/tests/multi/entitlements/spaceWithErc20Entitlements.test.d.ts.map +0 -1
  328. package/dist/tests/multi/entitlements/spaceWithErc20Entitlements.test.js +0 -103
  329. package/dist/tests/multi/entitlements/spaceWithErc20Entitlements.test.js.map +0 -1
  330. package/dist/tests/multi/entitlements/spaceWithErc721Entitlements.test.d.ts +0 -5
  331. package/dist/tests/multi/entitlements/spaceWithErc721Entitlements.test.d.ts.map +0 -1
  332. package/dist/tests/multi/entitlements/spaceWithErc721Entitlements.test.js +0 -84
  333. package/dist/tests/multi/entitlements/spaceWithErc721Entitlements.test.js.map +0 -1
  334. package/dist/tests/multi/entitlements/spaceWithEthBalanceEntitlements.test.d.ts +0 -5
  335. package/dist/tests/multi/entitlements/spaceWithEthBalanceEntitlements.test.d.ts.map +0 -1
  336. package/dist/tests/multi/entitlements/spaceWithEthBalanceEntitlements.test.js +0 -168
  337. package/dist/tests/multi/entitlements/spaceWithEthBalanceEntitlements.test.js.map +0 -1
  338. package/dist/tests/multi/entitlements/spaceWithThreeNestedEntitlement.test.d.ts +0 -5
  339. package/dist/tests/multi/entitlements/spaceWithThreeNestedEntitlement.test.d.ts.map +0 -1
  340. package/dist/tests/multi/entitlements/spaceWithThreeNestedEntitlement.test.js +0 -45
  341. package/dist/tests/multi/entitlements/spaceWithThreeNestedEntitlement.test.js.map +0 -1
  342. package/dist/tests/multi/entitlements/spaceWithUserEntitlements.test.d.ts +0 -5
  343. package/dist/tests/multi/entitlements/spaceWithUserEntitlements.test.d.ts.map +0 -1
  344. package/dist/tests/multi/entitlements/spaceWithUserEntitlements.test.js +0 -79
  345. package/dist/tests/multi/entitlements/spaceWithUserEntitlements.test.js.map +0 -1
  346. package/dist/tests/multi/legacySpace.test.d.ts +0 -5
  347. package/dist/tests/multi/legacySpace.test.d.ts.map +0 -1
  348. package/dist/tests/multi/legacySpace.test.js +0 -48
  349. package/dist/tests/multi/legacySpace.test.js.map +0 -1
  350. package/dist/tests/multi/mediaWithEntitlements.test.d.ts +0 -5
  351. package/dist/tests/multi/mediaWithEntitlements.test.d.ts.map +0 -1
  352. package/dist/tests/multi/mediaWithEntitlements.test.js +0 -152
  353. package/dist/tests/multi/mediaWithEntitlements.test.js.map +0 -1
  354. package/dist/tests/multi/membershipManagement.test.d.ts +0 -5
  355. package/dist/tests/multi/membershipManagement.test.d.ts.map +0 -1
  356. package/dist/tests/multi/membershipManagement.test.js +0 -76
  357. package/dist/tests/multi/membershipManagement.test.js.map +0 -1
  358. package/dist/tests/multi/riverAirdropDapp.test.d.ts +0 -5
  359. package/dist/tests/multi/riverAirdropDapp.test.d.ts.map +0 -1
  360. package/dist/tests/multi/riverAirdropDapp.test.js +0 -43
  361. package/dist/tests/multi/riverAirdropDapp.test.js.map +0 -1
  362. package/dist/tests/multi/spaceDapp.test.d.ts.map +0 -1
  363. package/dist/tests/multi/spaceDapp.test.js +0 -61
  364. package/dist/tests/multi/spaceDapp.test.js.map +0 -1
  365. package/dist/tests/multi/spaceWithVariousPriceConfigurations.test.d.ts +0 -2
  366. package/dist/tests/multi/spaceWithVariousPriceConfigurations.test.d.ts.map +0 -1
  367. package/dist/tests/multi/spaceWithVariousPriceConfigurations.test.js +0 -63
  368. package/dist/tests/multi/spaceWithVariousPriceConfigurations.test.js.map +0 -1
  369. package/dist/tests/multi/withEntitlements.test.d.ts +0 -5
  370. package/dist/tests/multi/withEntitlements.test.d.ts.map +0 -1
  371. package/dist/tests/multi/withEntitlements.test.js +0 -125
  372. package/dist/tests/multi/withEntitlements.test.js.map +0 -1
  373. package/dist/tests/multi_ne/dms.test.d.ts +0 -5
  374. package/dist/tests/multi_ne/dms.test.d.ts.map +0 -1
  375. package/dist/tests/multi_ne/dms.test.js +0 -131
  376. package/dist/tests/multi_ne/dms.test.js.map +0 -1
  377. package/dist/tests/multi_ne/memberMetadata_DisplayNames.test.d.ts +0 -5
  378. package/dist/tests/multi_ne/memberMetadata_DisplayNames.test.d.ts.map +0 -1
  379. package/dist/tests/multi_ne/memberMetadata_DisplayNames.test.js +0 -54
  380. package/dist/tests/multi_ne/memberMetadata_DisplayNames.test.js.map +0 -1
  381. package/dist/tests/multi_ne/memberMetadata_EnsAddresses.test.d.ts +0 -5
  382. package/dist/tests/multi_ne/memberMetadata_EnsAddresses.test.d.ts.map +0 -1
  383. package/dist/tests/multi_ne/memberMetadata_EnsAddresses.test.js +0 -37
  384. package/dist/tests/multi_ne/memberMetadata_EnsAddresses.test.js.map +0 -1
  385. package/dist/tests/multi_ne/memberMetadata_Nft.test.d.ts +0 -5
  386. package/dist/tests/multi_ne/memberMetadata_Nft.test.d.ts.map +0 -1
  387. package/dist/tests/multi_ne/memberMetadata_Nft.test.js +0 -49
  388. package/dist/tests/multi_ne/memberMetadata_Nft.test.js.map +0 -1
  389. package/dist/tests/multi_ne/memberMetadata_Usernames.test.d.ts +0 -5
  390. package/dist/tests/multi_ne/memberMetadata_Usernames.test.d.ts.map +0 -1
  391. package/dist/tests/multi_ne/memberMetadata_Usernames.test.js +0 -126
  392. package/dist/tests/multi_ne/memberMetadata_Usernames.test.js.map +0 -1
  393. package/dist/tests/multi_ne/space.test.d.ts +0 -5
  394. package/dist/tests/multi_ne/space.test.d.ts.map +0 -1
  395. package/dist/tests/multi_ne/space.test.js +0 -284
  396. package/dist/tests/multi_ne/space.test.js.map +0 -1
  397. package/dist/tests/multi_ne/sync-agent/spaces.test.d.ts +0 -2
  398. package/dist/tests/multi_ne/sync-agent/spaces.test.d.ts.map +0 -1
  399. package/dist/tests/multi_ne/sync-agent/spaces.test.js +0 -33
  400. package/dist/tests/multi_ne/sync-agent/spaces.test.js.map +0 -1
  401. package/dist/tests/multi_v2/entitlements/channelsWithCrossChainEntitlements.test.d.ts +0 -6
  402. package/dist/tests/multi_v2/entitlements/channelsWithCrossChainEntitlements.test.d.ts.map +0 -1
  403. package/dist/tests/multi_v2/entitlements/channelsWithCrossChainEntitlements.test.js +0 -78
  404. package/dist/tests/multi_v2/entitlements/channelsWithCrossChainEntitlements.test.js.map +0 -1
  405. package/dist/tests/multi_v2/entitlements/channelsWithErc1155Entitlement.test.d.ts +0 -6
  406. package/dist/tests/multi_v2/entitlements/channelsWithErc1155Entitlement.test.d.ts.map +0 -1
  407. package/dist/tests/multi_v2/entitlements/channelsWithErc1155Entitlement.test.js +0 -89
  408. package/dist/tests/multi_v2/entitlements/channelsWithErc1155Entitlement.test.js.map +0 -1
  409. package/dist/tests/multi_v2/entitlements/spaceWithCrossChainEntitlements.test.d.ts +0 -6
  410. package/dist/tests/multi_v2/entitlements/spaceWithCrossChainEntitlements.test.d.ts.map +0 -1
  411. package/dist/tests/multi_v2/entitlements/spaceWithCrossChainEntitlements.test.js +0 -88
  412. package/dist/tests/multi_v2/entitlements/spaceWithCrossChainEntitlements.test.js.map +0 -1
  413. package/dist/tests/multi_v2/entitlements/spaceWithErc1155Entitlements.test.d.ts +0 -6
  414. package/dist/tests/multi_v2/entitlements/spaceWithErc1155Entitlements.test.d.ts.map +0 -1
  415. package/dist/tests/multi_v2/entitlements/spaceWithErc1155Entitlements.test.js +0 -105
  416. package/dist/tests/multi_v2/entitlements/spaceWithErc1155Entitlements.test.js.map +0 -1
  417. package/dist/tests/multi_v2/updateRole.test.d.ts +0 -5
  418. package/dist/tests/multi_v2/updateRole.test.d.ts.map +0 -1
  419. package/dist/tests/multi_v2/updateRole.test.js +0 -25
  420. package/dist/tests/multi_v2/updateRole.test.js.map +0 -1
  421. package/dist/tests/unit/snapshotMigration0002.test.d.ts +0 -2
  422. package/dist/tests/unit/snapshotMigration0002.test.d.ts.map +0 -1
  423. package/dist/tests/unit/snapshotMigration0002.test.js +0 -31
  424. package/dist/tests/unit/snapshotMigration0002.test.js.map +0 -1
  425. package/dist/views/streams/channelStreams.d.ts +0 -8
  426. package/dist/views/streams/channelStreams.d.ts.map +0 -1
  427. package/dist/views/streams/channelStreams.js +0 -9
  428. package/dist/views/streams/channelStreams.js.map +0 -1
  429. package/dist/views/streams/dmStreams.d.ts +0 -13
  430. package/dist/views/streams/dmStreams.d.ts.map +0 -1
  431. package/dist/views/streams/dmStreams.js +0 -33
  432. package/dist/views/streams/dmStreams.js.map +0 -1
  433. package/dist/views/streams/spaceStreams.d.ts +0 -17
  434. package/dist/views/streams/spaceStreams.d.ts.map +0 -1
  435. package/dist/views/streams/spaceStreams.js +0 -52
  436. package/dist/views/streams/spaceStreams.js.map +0 -1
@@ -1,622 +1,54 @@
1
- /**
2
- * @group main
3
- */
4
- import { MemberPayload_NftSchema } from '@towns-labs/proto';
5
- import { makeUniqueChannelStreamId, userIdFromAddress } from '../../id';
6
- import { makeDonePromise, makeRandomUserAddress, makeTestClient, makeUniqueSpaceStreamId, waitFor, } from '../testUtils';
7
- import { make_MemberPayload_Nft } from '../../types';
8
- import { bin_fromString, bin_toString } from '@towns-labs/utils';
9
- import { create } from '@bufbuild/protobuf';
1
+ import { makeDonePromise, makeTestClient } from '../testUtils';
10
2
  describe('memberMetadataTests', () => {
11
3
  let bobsClient;
12
4
  let alicesClient;
13
- let evesClient;
14
5
  beforeEach(async () => {
15
6
  bobsClient = await makeTestClient();
16
7
  alicesClient = await makeTestClient();
17
- evesClient = await makeTestClient();
8
+ await Promise.all([bobsClient.initializeUser(), alicesClient.initializeUser()]);
18
9
  });
19
10
  afterEach(async () => {
20
11
  await bobsClient.stop();
21
12
  await alicesClient.stop();
22
- await evesClient.stop();
23
- });
24
- test('clientCanSetDisplayNamesInSpace', async () => {
25
- await expect(bobsClient.initializeUser()).resolves.not.toThrow();
26
- bobsClient.startSync();
27
- await expect(alicesClient.initializeUser()).resolves.not.toThrow();
28
- alicesClient.startSync();
29
- const streamId = makeUniqueSpaceStreamId();
30
- await bobsClient.createSpace(streamId);
31
- await bobsClient.waitForStream(streamId);
32
- await bobsClient.inviteUser(streamId, alicesClient.userId);
33
- await expect(alicesClient.joinStream(streamId)).resolves.not.toThrow();
34
- const bobPromise = makeDonePromise();
35
- bobsClient.on('streamDisplayNameUpdated', (updatedStreamId, userId) => {
36
- expect(updatedStreamId).toBe(streamId);
37
- expect(userId).toBe(bobsClient.userId);
38
- bobPromise.done();
39
- });
40
- const alicePromise = makeDonePromise();
41
- alicesClient.on('streamDisplayNameUpdated', (updatedStreamId, userId) => {
42
- expect(updatedStreamId).toBe(streamId);
43
- expect(userId).toBe(bobsClient.userId);
44
- alicePromise.done();
45
- });
46
- await bobsClient.waitForStream(streamId);
47
- await alicesClient.waitForStream(streamId);
48
- await bobsClient.setDisplayName(streamId, 'bob');
49
- await bobPromise.expectToSucceed();
50
- await alicePromise.expectToSucceed();
51
- const expected = new Map([[bobsClient.userId, 'bob']]);
52
- for (const client of [bobsClient, alicesClient]) {
53
- const streamView = client.streams.get(streamId).view;
54
- expect(streamView.getMemberMetadata().displayNames.plaintextDisplayNames).toEqual(expected);
55
- }
56
13
  });
57
14
  test('clientDoesntHaveAppAddress', async () => {
58
- await expect(bobsClient.initializeUser()).resolves.not.toThrow();
59
- bobsClient.startSync();
60
- const streamId = makeUniqueSpaceStreamId();
61
- await bobsClient.createSpace(streamId);
62
- await bobsClient.waitForStream(streamId);
63
- const streamView = bobsClient.streams.get(streamId).view;
64
- expect(streamView.getMemberMetadata().userInfo(bobsClient.userId).appAddress).toEqual(undefined);
65
- });
66
- test('clientCanSetDisplayNamesInDM', async () => {
67
- await expect(bobsClient.initializeUser()).resolves.not.toThrow();
68
- bobsClient.startSync();
69
- await expect(alicesClient.initializeUser()).resolves.not.toThrow();
70
- alicesClient.startSync();
71
- const { streamId } = await bobsClient.createDMChannel(alicesClient.userId);
72
- const stream = await bobsClient.waitForStream(streamId);
73
- await alicesClient.waitForStream(streamId);
74
- await expect(alicesClient.joinStream(streamId)).resolves.not.toThrow();
75
- await waitFor(() => {
76
- expect(stream.view.getMembers().joinedUsers).toEqual(new Set([bobsClient.userId, alicesClient.userId]));
77
- });
78
- const bobDisplayName = 'bob display name';
79
- await expect(bobsClient.setDisplayName(streamId, bobDisplayName)).resolves.not.toThrow();
80
- const expected = new Map([[bobsClient.userId, bobDisplayName]]);
81
- const bobPromise = makeDonePromise();
82
- bobsClient.on('streamDisplayNameUpdated', (updatedStreamId, userId) => {
83
- expect(updatedStreamId).toBe(streamId);
84
- expect(userId).toBe(bobsClient.userId);
85
- bobPromise.done();
86
- });
87
- const alicePromise = makeDonePromise();
88
- alicesClient.on('streamDisplayNameUpdated', (updatedStreamId, userId) => {
89
- expect(updatedStreamId).toBe(streamId);
90
- expect(userId).toBe(bobsClient.userId);
91
- alicePromise.done();
92
- });
93
- await bobPromise.expectToSucceed();
94
- await alicePromise.expectToSucceed();
95
- for (const client of [bobsClient, alicesClient]) {
96
- const streamView = client.streams.get(streamId)?.view;
97
- expect(streamView).toBeDefined();
98
- const clientDisplayNames = streamView.getMemberMetadata().displayNames.plaintextDisplayNames;
99
- expect(clientDisplayNames).toEqual(expected);
100
- }
101
- });
102
- test('clientCanSetDisplayNamesInGDM', async () => {
103
- await expect(bobsClient.initializeUser()).resolves.not.toThrow();
104
- bobsClient.startSync();
105
- await expect(alicesClient.initializeUser()).resolves.not.toThrow();
106
- alicesClient.startSync();
107
- await expect(evesClient.initializeUser()).resolves.not.toThrow();
108
- evesClient.startSync();
109
15
  const { streamId } = await bobsClient.createGDMChannel([
16
+ { userId: bobsClient.userId },
110
17
  { userId: alicesClient.userId },
111
- { userId: evesClient.userId },
112
18
  ]);
113
- const stream = await bobsClient.waitForStream(streamId);
114
- await expect(alicesClient.joinStream(streamId)).resolves.not.toThrow();
115
- await expect(evesClient.joinStream(streamId)).resolves.not.toThrow();
116
- await waitFor(() => {
117
- expect(stream.view.getMembers().joinedUsers).toEqual(new Set([bobsClient.userId, alicesClient.userId, evesClient.userId]));
118
- });
119
- const bobDisplayName = 'bob display name';
120
- await expect(bobsClient.setDisplayName(streamId, bobDisplayName)).resolves.not.toThrow();
121
- const expected = new Map([[bobsClient.userId, bobDisplayName]]);
122
- const bobPromise = makeDonePromise();
123
- bobsClient.on('streamDisplayNameUpdated', (updatedStreamId, userId) => {
124
- expect(updatedStreamId).toBe(streamId);
125
- expect(userId).toBe(bobsClient.userId);
126
- bobPromise.done();
127
- });
128
- const alicePromise = makeDonePromise();
129
- alicesClient.on('streamDisplayNameUpdated', (updatedStreamId, userId) => {
130
- expect(updatedStreamId).toBe(streamId);
131
- expect(userId).toBe(bobsClient.userId);
132
- alicePromise.done();
133
- });
134
- const evePromise = makeDonePromise();
135
- evesClient.on('streamDisplayNameUpdated', (updatedStreamId, userId) => {
136
- expect(updatedStreamId).toBe(streamId);
137
- expect(userId).toBe(bobsClient.userId);
138
- evePromise.done();
139
- });
140
- await bobPromise.expectToSucceed();
141
- await alicePromise.expectToSucceed();
142
- await evePromise.expectToSucceed();
143
- for (const client of [bobsClient, alicesClient, evesClient]) {
144
- const streamView = client.streams.get(streamId)?.view;
145
- expect(streamView).toBeDefined();
146
- const clientDisplayNames = streamView.getMemberMetadata().displayNames.plaintextDisplayNames;
147
- expect(clientDisplayNames).toEqual(expected);
148
- }
149
- });
150
- test('clientsPickUpDisplayNamesAfterJoin', async () => {
151
- await expect(bobsClient.initializeUser()).resolves.not.toThrow();
152
- bobsClient.startSync();
153
- const streamId = makeUniqueSpaceStreamId();
154
- await bobsClient.createSpace(streamId);
155
19
  await bobsClient.waitForStream(streamId);
156
- await bobsClient.setDisplayName(streamId, 'bob');
157
- await expect(alicesClient.initializeUser()).resolves.not.toThrow();
158
- alicesClient.startSync();
159
- await bobsClient.inviteUser(streamId, alicesClient.userId);
160
- await expect(alicesClient.joinStream(streamId)).resolves.not.toThrow();
161
- const alicePromise = makeDonePromise();
162
- alicesClient.on('streamDisplayNameUpdated', (updatedStreamId, userId) => {
163
- expect(updatedStreamId).toBe(streamId);
164
- expect(userId).toBe(bobsClient.userId);
165
- alicePromise.done();
166
- });
167
- await alicePromise.expectToSucceed();
168
- const expected = new Map([[bobsClient.userId, 'bob']]);
169
- const alicesClientDisplayNames = alicesClient.streams.get(streamId)?.view.membershipContent.memberMetadata.displayNames
170
- .plaintextDisplayNames;
171
- expect(alicesClientDisplayNames).toEqual(expected);
172
- });
173
- test('clientCanSetUsernamesInSpaces', async () => {
174
- await expect(bobsClient.initializeUser()).resolves.not.toThrow();
175
- bobsClient.startSync();
176
- await expect(alicesClient.initializeUser()).resolves.not.toThrow();
177
- alicesClient.startSync();
178
- const streamId = makeUniqueSpaceStreamId();
179
- await bobsClient.createSpace(streamId);
180
- await bobsClient.waitForStream(streamId);
181
- await bobsClient.inviteUser(streamId, alicesClient.userId);
182
- await expect(alicesClient.joinStream(streamId)).resolves.not.toThrow();
183
- const startTime = Date.now();
184
- let usernameSetTime = null;
185
- const bobPromise = makeDonePromise();
186
- bobsClient.on('streamUsernameUpdated', (updatedStreamId, userId) => {
187
- expect(updatedStreamId).toBe(streamId);
188
- expect(userId).toBe(bobsClient.userId);
189
- usernameSetTime = Date.now();
190
- bobPromise.done();
191
- });
192
- const alicePromise = makeDonePromise();
193
- alicesClient.on('streamUsernameUpdated', (updatedStreamId, userId) => {
194
- expect(updatedStreamId).toBe(streamId);
195
- expect(userId).toBe(bobsClient.userId);
196
- alicePromise.done();
197
- });
198
- const setUsernamePromise = bobsClient.setUsername(streamId, 'bob-username');
199
- const expected = new Map([[bobsClient.userId, 'bob-username']]);
200
- // expect username to get updated immediately
201
- expect(bobsClient.streams.get(streamId).view.getMemberMetadata().usernames.plaintextUsernames).toEqual(expected);
202
- expect(bobsClient.streams
203
- .get(streamId)
204
- .view.getMemberMetadata()
205
- .usernames.info(bobsClient.userId).username).toEqual('bob-username');
206
- // wait for the username request to send
207
- await setUsernamePromise;
208
- // wait for the username to be updated
209
- await bobPromise.expectToSucceed();
210
- await alicePromise.expectToSucceed();
211
- // Verify that setting the username was not delayed — see `setUsername delays` for details
212
- const elapsed = usernameSetTime - startTime;
213
- expect(elapsed).toBeLessThanOrEqual(10000);
214
- for (const client of [bobsClient, alicesClient]) {
215
- const streamView = client.streams.get(streamId).view;
216
- expect(streamView.getMemberMetadata().usernames.plaintextUsernames).toEqual(expected);
217
- expect(streamView.getMemberMetadata().usernames.info(bobsClient.userId).username).toEqual('bob-username');
218
- }
219
- });
220
- test('clientCanSetUsernamesInDMs', async () => {
221
- await expect(bobsClient.initializeUser()).resolves.not.toThrow();
222
- bobsClient.startSync();
223
- await expect(alicesClient.initializeUser()).resolves.not.toThrow();
224
- alicesClient.startSync();
225
- const { streamId } = await bobsClient.createDMChannel(alicesClient.userId);
226
- const stream = await bobsClient.waitForStream(streamId);
227
- await alicesClient.waitForStream(streamId);
228
- await expect(alicesClient.joinStream(streamId)).resolves.not.toThrow();
229
- await waitFor(() => {
230
- expect(stream.view.getMembers().joinedUsers).toEqual(new Set([bobsClient.userId, alicesClient.userId]));
231
- });
232
- const bobPromise = makeDonePromise();
233
- bobsClient.on('streamUsernameUpdated', (updatedStreamId, userId) => {
234
- expect(updatedStreamId).toBe(streamId);
235
- expect(userId).toBe(bobsClient.userId);
236
- bobPromise.done();
237
- });
238
- const alicePromise = makeDonePromise();
239
- alicesClient.on('streamUsernameUpdated', (updatedStreamId, userId) => {
240
- expect(updatedStreamId).toBe(streamId);
241
- expect(userId).toBe(bobsClient.userId);
242
- alicePromise.done();
243
- });
244
- await bobsClient.setUsername(streamId, 'bob-username');
245
- await bobPromise.expectToSucceed();
246
- await alicePromise.expectToSucceed();
247
- const expected = new Map([[bobsClient.userId, 'bob-username']]);
248
- for (const client of [bobsClient, alicesClient]) {
249
- const streamView = client.streams.get(streamId).view;
250
- expect(streamView.getMemberMetadata()?.usernames.plaintextUsernames).toEqual(expected);
251
- expect(streamView.getMemberMetadata()?.userInfo(client.userId).appAddress).toBeUndefined();
252
- }
253
- });
254
- test('clientCanSetUsernamesInGDMs', async () => {
255
- await expect(bobsClient.initializeUser()).resolves.not.toThrow();
256
- bobsClient.startSync();
257
- await expect(alicesClient.initializeUser()).resolves.not.toThrow();
258
- alicesClient.startSync();
259
- await expect(evesClient.initializeUser()).resolves.not.toThrow();
260
- evesClient.startSync();
261
- const { streamId } = await bobsClient.createGDMChannel([
262
- { userId: alicesClient.userId },
263
- { userId: evesClient.userId },
264
- ]);
265
- const stream = await bobsClient.waitForStream(streamId);
266
- await alicesClient.waitForStream(streamId);
267
- await evesClient.waitForStream(streamId);
268
- await expect(alicesClient.joinStream(streamId)).resolves.not.toThrow();
269
- await expect(evesClient.joinStream(streamId)).resolves.not.toThrow();
270
- await waitFor(() => {
271
- expect(stream.view.getMembers().joinedUsers).toEqual(new Set([bobsClient.userId, alicesClient.userId, evesClient.userId]));
272
- });
273
- const bobPromise = makeDonePromise();
274
- bobsClient.on('streamUsernameUpdated', (updatedStreamId, userId) => {
275
- expect(updatedStreamId).toBe(streamId);
276
- expect(userId).toBe(bobsClient.userId);
277
- bobPromise.done();
278
- });
279
- const alicePromise = makeDonePromise();
280
- alicesClient.on('streamUsernameUpdated', (updatedStreamId, userId) => {
281
- expect(updatedStreamId).toBe(streamId);
282
- expect(userId).toBe(bobsClient.userId);
283
- alicePromise.done();
284
- });
285
- const evePromise = makeDonePromise();
286
- evesClient.on('streamUsernameUpdated', (updatedStreamId, userId) => {
287
- expect(updatedStreamId).toBe(streamId);
288
- expect(userId).toBe(bobsClient.userId);
289
- evePromise.done();
290
- });
291
- await bobsClient.setUsername(streamId, 'bob-username');
292
- await bobPromise.expectToSucceed();
293
- await alicePromise.expectToSucceed();
294
- await evePromise.expectToSucceed();
295
- const expected = new Map([[bobsClient.userId, 'bob-username']]);
296
- for (const client of [bobsClient, alicesClient, evesClient]) {
297
- const streamView = client.streams.get(streamId).view;
298
- expect(streamView.getMemberMetadata().usernames.plaintextUsernames).toEqual(expected);
299
- }
300
- });
301
- test('clientCanSetEnsAddressesInSpace', async () => {
302
- await expect(bobsClient.initializeUser()).resolves.not.toThrow();
303
- bobsClient.startSync();
304
- await expect(alicesClient.initializeUser()).resolves.not.toThrow();
305
- alicesClient.startSync();
306
- const streamId = makeUniqueSpaceStreamId();
307
- await bobsClient.createSpace(streamId);
308
- await bobsClient.waitForStream(streamId);
309
- await bobsClient.inviteUser(streamId, alicesClient.userId);
310
- await expect(alicesClient.joinStream(streamId)).resolves.not.toThrow();
311
- await alicesClient.waitForStream(streamId);
312
- const bobPromise = makeDonePromise();
313
- bobsClient.on('streamEnsAddressUpdated', (updatedStreamId, userId) => {
314
- expect(updatedStreamId).toBe(streamId);
315
- expect(userId).toBe(bobsClient.userId);
316
- bobPromise.done();
317
- });
318
- const alicePromise = makeDonePromise();
319
- alicesClient.on('streamEnsAddressUpdated', (updatedStreamId, userId) => {
320
- expect(updatedStreamId).toBe(streamId);
321
- expect(userId).toBe(bobsClient.userId);
322
- alicePromise.done();
323
- });
324
- const ensAddress = makeRandomUserAddress();
325
- await bobsClient.setEnsAddress(streamId, ensAddress);
326
- await bobPromise.expectToSucceed();
327
- await alicePromise.expectToSucceed();
328
- const expected = new Map([
329
- [bobsClient.userId, userIdFromAddress(ensAddress)],
330
- ]);
331
- for (const client of [bobsClient, alicesClient]) {
332
- const streamView = client.streams.get(streamId).view;
333
- expect(streamView.getMemberMetadata().ensAddresses.confirmedEnsAddresses).toEqual(expected);
334
- }
335
- });
336
- test('clientCanSetEnsAddressesInDM', async () => {
337
- await expect(bobsClient.initializeUser()).resolves.not.toThrow();
338
- bobsClient.startSync();
339
- await expect(alicesClient.initializeUser()).resolves.not.toThrow();
340
- alicesClient.startSync();
341
- const { streamId } = await bobsClient.createDMChannel(alicesClient.userId);
342
- const stream = await bobsClient.waitForStream(streamId);
343
- await alicesClient.waitForStream(streamId);
344
- await expect(alicesClient.joinStream(streamId)).resolves.not.toThrow();
345
- await waitFor(() => {
346
- expect(stream.view.getMembers().joinedUsers).toEqual(new Set([bobsClient.userId, alicesClient.userId]));
347
- });
348
- const bobPromise = makeDonePromise();
349
- bobsClient.on('streamEnsAddressUpdated', (updatedStreamId, userId) => {
350
- expect(updatedStreamId).toBe(streamId);
351
- expect(userId).toBe(bobsClient.userId);
352
- bobPromise.done();
353
- });
354
- const alicePromise = makeDonePromise();
355
- alicesClient.on('streamEnsAddressUpdated', (updatedStreamId, userId) => {
356
- expect(updatedStreamId).toBe(streamId);
357
- expect(userId).toBe(bobsClient.userId);
358
- alicePromise.done();
359
- });
360
- const ensAddress = makeRandomUserAddress();
361
- await expect(bobsClient.setEnsAddress(streamId, ensAddress)).resolves.not.toThrow();
362
- const expected = new Map([
363
- [bobsClient.userId, userIdFromAddress(ensAddress)],
364
- ]);
365
- await bobPromise.expectToSucceed();
366
- await alicePromise.expectToSucceed();
367
- for (const client of [bobsClient, alicesClient]) {
368
- const streamView = client.streams.get(streamId)?.view;
369
- expect(streamView).toBeDefined();
370
- const ensAddresses = streamView.getMemberMetadata().ensAddresses.confirmedEnsAddresses;
371
- expect(ensAddresses).toEqual(expected);
372
- }
20
+ const streamView = bobsClient.streams.get(streamId).view;
21
+ expect(streamView.getMemberMetadata().userInfo(bobsClient.userId).appAddress).toEqual(undefined);
373
22
  });
374
- test('clientCanSetEnsAddressesInGDM', async () => {
375
- await expect(bobsClient.initializeUser()).resolves.not.toThrow();
23
+ test('clientCanSetStreamEncryptionAlgorithm', async () => {
376
24
  bobsClient.startSync();
377
- await expect(alicesClient.initializeUser()).resolves.not.toThrow();
378
- alicesClient.startSync();
379
- await expect(evesClient.initializeUser()).resolves.not.toThrow();
380
- evesClient.startSync();
381
25
  const { streamId } = await bobsClient.createGDMChannel([
26
+ { userId: bobsClient.userId },
382
27
  { userId: alicesClient.userId },
383
- { userId: evesClient.userId },
384
- ]);
385
- const stream = await bobsClient.waitForStream(streamId);
386
- await expect(alicesClient.joinStream(streamId)).resolves.not.toThrow();
387
- await expect(evesClient.joinStream(streamId)).resolves.not.toThrow();
388
- await waitFor(() => {
389
- expect(stream.view.getMembers().joinedUsers).toEqual(new Set([bobsClient.userId, alicesClient.userId, evesClient.userId]));
390
- });
391
- const bobPromise = makeDonePromise();
392
- bobsClient.on('streamEnsAddressUpdated', (updatedStreamId, userId) => {
393
- expect(updatedStreamId).toBe(streamId);
394
- expect(userId).toBe(bobsClient.userId);
395
- bobPromise.done();
396
- });
397
- const alicePromise = makeDonePromise();
398
- alicesClient.on('streamEnsAddressUpdated', (updatedStreamId, userId) => {
399
- expect(updatedStreamId).toBe(streamId);
400
- expect(userId).toBe(bobsClient.userId);
401
- alicePromise.done();
402
- });
403
- const evePromise = makeDonePromise();
404
- evesClient.on('streamEnsAddressUpdated', (updatedStreamId, userId) => {
405
- expect(updatedStreamId).toBe(streamId);
406
- expect(userId).toBe(bobsClient.userId);
407
- evePromise.done();
408
- });
409
- const ensAddress = makeRandomUserAddress();
410
- await expect(bobsClient.setEnsAddress(streamId, ensAddress)).resolves.not.toThrow();
411
- const expected = new Map([
412
- [bobsClient.userId, userIdFromAddress(ensAddress)],
413
28
  ]);
414
- await bobPromise.expectToSucceed();
415
- await alicePromise.expectToSucceed();
416
- await evePromise.expectToSucceed();
417
- for (const client of [bobsClient, alicesClient, evesClient]) {
418
- const streamView = client.streams.get(streamId)?.view;
419
- expect(streamView).toBeDefined();
420
- const ensAddresses = streamView.getMemberMetadata().ensAddresses.confirmedEnsAddresses;
421
- expect(ensAddresses).toEqual(expected);
422
- }
423
- });
424
- test('clientCannotSetInvalidEnsAddresses', async () => {
425
- await expect(bobsClient.initializeUser()).resolves.not.toThrow();
426
- bobsClient.startSync();
427
- const streamId = makeUniqueSpaceStreamId();
428
- await bobsClient.createSpace(streamId);
429
29
  await bobsClient.waitForStream(streamId);
430
- const ensAddress = new Uint8Array([1, 2, 3, 4, 5, 6, 7, 8]);
431
- await expect(bobsClient.setEnsAddress(streamId, ensAddress)).rejects.toThrow(/Invalid ENS address/);
432
- });
433
- test('clientCanClearEnsAddress', async () => {
434
- await expect(bobsClient.initializeUser()).resolves.not.toThrow();
435
- bobsClient.startSync();
436
- const streamId = makeUniqueSpaceStreamId();
437
- await bobsClient.createSpace(streamId);
438
- await bobsClient.waitForStream(streamId);
439
- const ensAddress = new Uint8Array();
440
- await expect(bobsClient.setEnsAddress(streamId, ensAddress)).resolves.not.toThrow();
441
- });
442
- test('clientCanSetNftInSpace', async () => {
443
- await expect(bobsClient.initializeUser()).resolves.not.toThrow();
444
- bobsClient.startSync();
445
- await expect(alicesClient.initializeUser()).resolves.not.toThrow();
446
- alicesClient.startSync();
447
- const streamId = makeUniqueSpaceStreamId();
448
- await bobsClient.createSpace(streamId);
449
- await bobsClient.waitForStream(streamId);
450
- await bobsClient.inviteUser(streamId, alicesClient.userId);
451
- await expect(alicesClient.joinStream(streamId)).resolves.not.toThrow();
452
- await alicesClient.waitForStream(streamId);
453
- const bobPromise = makeDonePromise();
454
- bobsClient.on('streamNftUpdated', (updatedStreamId, userId) => {
455
- expect(updatedStreamId).toBe(streamId);
456
- expect(userId).toBe(bobsClient.userId);
457
- bobPromise.done();
458
- });
459
- const alicePromise = makeDonePromise();
460
- alicesClient.on('streamNftUpdated', (updatedStreamId, userId) => {
461
- expect(updatedStreamId).toBe(streamId);
462
- expect(userId).toBe(bobsClient.userId);
463
- alicePromise.done();
464
- });
465
- const nft = create(MemberPayload_NftSchema, {
466
- chainId: 1,
467
- tokenId: bin_fromString('11111111112222222233333333'),
468
- contractAddress: makeRandomUserAddress(),
469
- });
470
- await bobsClient.setNft(streamId, bin_toString(nft.tokenId), 1, userIdFromAddress(nft.contractAddress));
471
- await bobPromise.expectToSucceed();
472
- await alicePromise.expectToSucceed();
473
- const expected = new Map([[bobsClient.userId, nft]]);
474
- for (const client of [bobsClient, alicesClient]) {
475
- const streamView = client.streams.get(streamId).view;
476
- expect(streamView.getMemberMetadata().nfts.confirmedNfts).toEqual(expected);
477
- const bobInfo = streamView.getMemberMetadata().nfts.info(bobsClient.userId);
478
- expect(bobInfo?.tokenId).toEqual('11111111112222222233333333');
479
- }
480
- });
481
- test('clientCannotSetNftsInvalidContractAddress', async () => {
482
- await expect(bobsClient.initializeUser()).resolves.not.toThrow();
483
- bobsClient.startSync();
484
- const streamId = makeUniqueSpaceStreamId();
485
- await bobsClient.createSpace(streamId);
486
- await bobsClient.waitForStream(streamId);
487
- const nft = create(MemberPayload_NftSchema, {
488
- chainId: 1,
489
- tokenId: bin_fromString('123'),
490
- contractAddress: new Uint8Array([1, 2, 3]),
491
- });
492
- await expect(bobsClient.makeEventAndAddToStream(streamId, make_MemberPayload_Nft(nft))).rejects.toThrow('invalid contract address');
493
- });
494
- test('clientCannotSetNftsInvalidChainId', async () => {
495
- await expect(bobsClient.initializeUser()).resolves.not.toThrow();
496
- bobsClient.startSync();
497
- const streamId = makeUniqueSpaceStreamId();
498
- await bobsClient.createSpace(streamId);
499
- await bobsClient.waitForStream(streamId);
500
- const nft = create(MemberPayload_NftSchema, {
501
- chainId: 0,
502
- tokenId: bin_fromString('123'),
503
- contractAddress: makeRandomUserAddress(),
504
- });
505
- await expect(bobsClient.makeEventAndAddToStream(streamId, make_MemberPayload_Nft(nft))).rejects.toThrow('invalid chain id');
506
- });
507
- test('clientCannotSetNftsInvalidTokenId', async () => {
508
- await expect(bobsClient.initializeUser()).resolves.not.toThrow();
509
- bobsClient.startSync();
510
- const streamId = makeUniqueSpaceStreamId();
511
- await bobsClient.createSpace(streamId);
512
- await bobsClient.waitForStream(streamId);
513
- const nft = create(MemberPayload_NftSchema, {
514
- chainId: 1,
515
- tokenId: new Uint8Array(),
516
- contractAddress: makeRandomUserAddress(),
517
- });
518
- await expect(bobsClient.makeEventAndAddToStream(streamId, make_MemberPayload_Nft(nft))).rejects.toThrow('invalid token id');
519
- });
520
- test('clientCanClearNft', async () => {
521
- await expect(bobsClient.initializeUser()).resolves.not.toThrow();
522
- bobsClient.startSync();
523
- const streamId = makeUniqueSpaceStreamId();
524
- await bobsClient.createSpace(streamId);
525
- await bobsClient.waitForStream(streamId);
526
- await expect(bobsClient.setNft(streamId, '', 0, '')).resolves.not.toThrow();
527
- });
528
- test('clientCanSetStreamEncryptionAlgorithm', async () => {
529
- await expect(bobsClient.initializeUser()).resolves.not.toThrow();
530
- bobsClient.startSync();
531
- const spaceId = makeUniqueSpaceStreamId();
532
- const channelId = makeUniqueChannelStreamId(spaceId);
533
- await bobsClient.createSpace(spaceId);
534
- await bobsClient.waitForStream(spaceId);
535
- await bobsClient.createChannel(spaceId, 'secret channel', 'messaging like spies', channelId);
536
- await bobsClient.waitForStream(channelId);
537
30
  // initial value is "undefined"
538
- expect(bobsClient.stream(channelId)?.view.membershipContent.encryptionAlgorithm).toBe(undefined);
31
+ expect(bobsClient.stream(streamId)?.view.membershipContent.encryptionAlgorithm).toBe(undefined);
539
32
  const newAlgorithm = 'mega_v1';
540
33
  const truePromise = makeDonePromise();
541
34
  bobsClient.once('streamEncryptionAlgorithmUpdated', (updatedStreamId, value) => {
542
- expect(updatedStreamId).toBe(channelId);
35
+ expect(updatedStreamId).toBe(streamId);
543
36
  expect(value).toBe(newAlgorithm);
544
37
  truePromise.done();
545
38
  });
546
- await expect(bobsClient.setStreamEncryptionAlgorithm(channelId, newAlgorithm)).resolves.not.toThrow();
39
+ await expect(bobsClient.setStreamEncryptionAlgorithm(streamId, newAlgorithm)).resolves.not.toThrow();
547
40
  await truePromise.expectToSucceed();
548
- expect(bobsClient.stream(channelId)?.view.membershipContent.encryptionAlgorithm).toBe(newAlgorithm);
41
+ expect(bobsClient.stream(streamId)?.view.membershipContent.encryptionAlgorithm).toBe(newAlgorithm);
549
42
  // toggle back to to undefined
550
43
  const falsePromise = makeDonePromise();
551
44
  bobsClient.once('streamEncryptionAlgorithmUpdated', (updatedStreamId, value) => {
552
- expect(updatedStreamId).toBe(channelId);
45
+ expect(updatedStreamId).toBe(streamId);
553
46
  expect(value).toBe(undefined);
554
47
  falsePromise.done();
555
48
  });
556
- await expect(bobsClient.setStreamEncryptionAlgorithm(channelId, undefined)).resolves.not.toThrow();
49
+ await expect(bobsClient.setStreamEncryptionAlgorithm(streamId, undefined)).resolves.not.toThrow();
557
50
  await falsePromise.expectToSucceed();
558
- expect(bobsClient.stream(channelId)?.view.membershipContent.encryptionAlgorithm).toBe(undefined);
559
- });
560
- test('setUsername delays for large groups without hybrid session', async () => {
561
- await expect(bobsClient.initializeUser()).resolves.not.toThrow();
562
- bobsClient.startSync();
563
- await expect(alicesClient.initializeUser()).resolves.not.toThrow();
564
- alicesClient.startSync();
565
- // Create client
566
- const clientWithSettings = await makeTestClient();
567
- await clientWithSettings.initializeUser();
568
- clientWithSettings.startSync();
569
- const streamId = makeUniqueSpaceStreamId();
570
- await clientWithSettings.createSpace(streamId);
571
- await clientWithSettings.waitForStream(streamId);
572
- // Add more members to exceed threshold
573
- await alicesClient.joinStream(streamId);
574
- await bobsClient.joinStream(streamId);
575
- await waitFor(() => {
576
- expect(clientWithSettings.streams.get(streamId)?.view.membershipContent.joined.size).toBe(3);
577
- });
578
- // Mock hasHybridSession to return false
579
- clientWithSettings['cryptoBackend'].hasHybridSession = async () => false;
580
- const startTime = Date.now();
581
- let usernameSetTime = null;
582
- let pendingUsernameSetTime = null;
583
- const streamUsernameUpdated = makeDonePromise();
584
- clientWithSettings.on('streamUsernameUpdated', (updatedStreamId, userId) => {
585
- expect(updatedStreamId).toBe(streamId);
586
- expect(userId).toBe(clientWithSettings.userId);
587
- usernameSetTime = Date.now();
588
- streamUsernameUpdated.done();
589
- });
590
- const streamPendingUsernameUpdated = makeDonePromise();
591
- clientWithSettings.once('streamPendingUsernameUpdated', (updatedStreamId, userId) => {
592
- expect(updatedStreamId).toBe(streamId);
593
- expect(userId).toBe(clientWithSettings.userId);
594
- pendingUsernameSetTime = Date.now();
595
- streamPendingUsernameUpdated.done();
596
- });
597
- // Should not set immediately - will be delayed
598
- await clientWithSettings.setUsername(streamId, 'delayed-username', false, {
599
- largeGroupThreshold: 2, // Low threshold for testing
600
- delayMs: 2000, // 2 seconds for faster testing
601
- });
602
- const stream = clientWithSettings.streams.get(streamId);
603
- expect(stream.view
604
- .getMemberMetadata()
605
- .usernames.plaintextUsernames.get(clientWithSettings.userId)).toBe('delayed-username');
606
- // Verify timeout was set
607
- expect(clientWithSettings['pendingUsernameTimeouts'].has(streamId)).toBe(true);
608
- expect(clientWithSettings['pendingUsernames'].get(streamId)).toBe('delayed-username');
609
- await streamPendingUsernameUpdated.expectToSucceed();
610
- // Wait for the delayed set
611
- await streamUsernameUpdated.expectToSucceed();
612
- // Verify it was delayed by approximately the configured time
613
- const elapsed = usernameSetTime - startTime;
614
- expect(elapsed).toBeGreaterThanOrEqual(2000);
615
- const pendingUsernameElapsed = pendingUsernameSetTime - startTime;
616
- expect(pendingUsernameElapsed).toBeLessThanOrEqual(100);
617
- expect(clientWithSettings['pendingUsernameTimeouts'].has(streamId)).toBe(false);
618
- expect(clientWithSettings['pendingUsernames'].get(streamId)).toBe(undefined);
619
- await clientWithSettings.stop();
51
+ expect(bobsClient.stream(streamId)?.view.membershipContent.encryptionAlgorithm).toBe(undefined);
620
52
  });
621
53
  });
622
54
  //# sourceMappingURL=memberMetadata.test.js.map