@towns-labs/sdk 2.0.12 → 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 (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 +0,0 @@
1
- {"version":3,"file":"spaces.d.ts","sourceRoot":"","sources":["../../../src/sync-agent/spaces/spaces.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAA;AACtC,OAAO,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAA;AAQhE,OAAO,EAAE,eAAe,EAAE,MAAM,qCAAqC,CAAA;AACrE,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAE/B,OAAO,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAA;AAMxD,MAAM,WAAW,WAAW;IACxB,WAAW,EAAE,OAAO,CAAA;IACpB,QAAQ,EAAE,MAAM,EAAE,CAAA;CACrB;AAED,qBAAa,MAAO,SAAQ,UAAU,CAAC,WAAW,CAAC;IAI3C,OAAO,CAAC,eAAe;IACvB,OAAO,CAAC,eAAe;IAJ3B,OAAO,CAAC,MAAM,CAA4B;gBAG9B,eAAe,EAAE,eAAe,EAChC,eAAe,EAAE,eAAe;IAW5C,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,KAAK;IAQhC,OAAO,CAAC,wBAAwB;IAgB1B,WAAW,CAAC,MAAM,CAAC,EAAE;QAAE,WAAW,CAAC,EAAE,MAAM,CAAA;KAAE,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM;;;;IActE,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,UAAU,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;CAItE"}
@@ -1,56 +0,0 @@
1
- import { Space } from './models/space';
2
- import { MembershipOp } from '@towns-labs/proto';
3
- import { isSpaceStreamId, makeDefaultChannelStreamId, makeSpaceStreamId, makeUniqueSpaceAddress, } from '../../id';
4
- import { check, dlogger } from '@towns-labs/utils';
5
- import { Observable } from '../../observable/observable';
6
- import { isDefined } from '../../check';
7
- const logger = dlogger('csb:spaces');
8
- export class Spaces extends Observable {
9
- riverConnection;
10
- userMemberships;
11
- spaces = {};
12
- constructor(riverConnection, userMemberships) {
13
- super({ spaceIds: [], initialized: false });
14
- this.riverConnection = riverConnection;
15
- this.userMemberships = userMemberships;
16
- this.userMemberships.subscribe((value) => {
17
- this.onUserMembershipsChanged(value);
18
- }, { fireImediately: true });
19
- }
20
- getSpace(spaceId) {
21
- check(isSpaceStreamId(spaceId), 'Invalid spaceId');
22
- if (!this.spaces[spaceId]) {
23
- this.spaces[spaceId] = new Space(spaceId, this.riverConnection);
24
- }
25
- return this.spaces[spaceId];
26
- }
27
- onUserMembershipsChanged(value) {
28
- const spaceIds = Object.entries(value.streamMemberships)
29
- .filter(([key, m]) => isDefined(m) && isSpaceStreamId(key) && m.op === MembershipOp.SO_JOIN)
30
- .map(([key]) => key);
31
- this.setValue({ spaceIds, initialized: value.initialized });
32
- for (const spaceId of spaceIds) {
33
- if (!this.spaces[spaceId]) {
34
- this.spaces[spaceId] = new Space(spaceId, this.riverConnection);
35
- }
36
- }
37
- }
38
- async createSpace(params, _signer) {
39
- const channelName = params?.channelName ?? 'general';
40
- const spaceAddress = makeUniqueSpaceAddress();
41
- const spaceId = makeSpaceStreamId(spaceAddress);
42
- const defaultChannelId = makeDefaultChannelStreamId(spaceAddress);
43
- logger.log('spaceId, defaultChannelId', { spaceId, defaultChannelId });
44
- await this.riverConnection.login({ spaceId });
45
- await this.riverConnection.call(async (client) => {
46
- await client.createSpace(spaceId);
47
- await client.createChannel(spaceId, channelName, '', defaultChannelId);
48
- });
49
- return { spaceId, defaultChannelId };
50
- }
51
- async joinSpace(spaceId, ...args) {
52
- const space = this.getSpace(spaceId);
53
- return space.join(...args);
54
- }
55
- }
56
- //# sourceMappingURL=spaces.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"spaces.js","sourceRoot":"","sources":["../../../src/sync-agent/spaces/spaces.ts"],"names":[],"mappings":"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"}
@@ -1,5 +0,0 @@
1
- /**
2
- * @group with-entitlements
3
- */
4
- export {};
5
- //# sourceMappingURL=channelSpaceSettings.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"channelSpaceSettings.test.d.ts","sourceRoot":"","sources":["../../../src/tests/multi/channelSpaceSettings.test.ts"],"names":[],"mappings":"AAAA;;GAEG"}
@@ -1,204 +0,0 @@
1
- /**
2
- * @group with-entitlements
3
- */
4
- import { setupWalletsAndContexts, createSpaceAndDefaultChannel, everyoneMembershipStruct, createChannel, waitFor, expectUserCanJoin, createRole, } from '../testUtils';
5
- import { check } from '@towns-labs/utils';
6
- import { Permission, NoopRuleData } from '@towns-labs/web3';
7
- describe('channelSpaceSettingsTests', () => {
8
- test('channel creation with default settings', async () => {
9
- const { bob, bobProvider, bobSpaceDapp } = await setupWalletsAndContexts();
10
- const everyoneMembership = await everyoneMembershipStruct(bobSpaceDapp, bob);
11
- // Track autojoin state of channels via emitted client events
12
- const updatedChannelAutojoinState = new Map();
13
- bob.on('spaceChannelAutojoinUpdated', (_spaceId, channelId, autojoin) => {
14
- updatedChannelAutojoinState.set(channelId, autojoin);
15
- });
16
- // The default channel is created without channel settings here. It should
17
- // be autojoin=true and hideUserJoinLeaveEvents=false.
18
- const { spaceId, defaultChannelId } = await createSpaceAndDefaultChannel(bob, bobSpaceDapp, bobProvider.wallet, "bob's town", everyoneMembership);
19
- // Create another channel. This channel should be autojoin=false, hideUserJoinLeaveEvents=false.
20
- // Create channel on contract.
21
- const { channelId: channel1Id, error } = await createChannel(bobSpaceDapp, bobProvider, spaceId, 'channel1', [1], // member role created on town creation
22
- bobProvider.wallet);
23
- expect(error).toBeUndefined();
24
- // Create channel stream
25
- const { streamId: channelStream1Id } = await bob.createChannel(spaceId, 'channel1', 'channel1 topic', channel1Id);
26
- expect(channelStream1Id).toEqual(channel1Id);
27
- const spaceStream = bob.streams.get(spaceId);
28
- expect(spaceStream).toBeDefined();
29
- const spaceStreamView = spaceStream.view.spaceContent;
30
- expect(spaceStreamView).toBeDefined();
31
- await waitFor(() => {
32
- const channelMetadata = spaceStreamView.spaceChannelsMetadata;
33
- check(Object.keys(channelMetadata).length === 2);
34
- check(channelMetadata[defaultChannelId]?.isAutojoin === true);
35
- check(channelMetadata[defaultChannelId]?.hideUserJoinLeaveEvents === false);
36
- check(channelMetadata[channel1Id]?.isAutojoin === false);
37
- check(channelMetadata[channel1Id]?.hideUserJoinLeaveEvents === false);
38
- });
39
- });
40
- test('create announcement channel (autojoin, hide user join/leave events)', async () => {
41
- const { bob, bobProvider, bobSpaceDapp } = await setupWalletsAndContexts();
42
- const everyoneMembership = await everyoneMembershipStruct(bobSpaceDapp, bob);
43
- const { spaceId } = await createSpaceAndDefaultChannel(bob, bobSpaceDapp, bobProvider.wallet, "bob's town", everyoneMembership);
44
- const { channelId: announcementChannelId, error } = await createChannel(bobSpaceDapp, bobProvider, spaceId, 'channel2', [1], // member role created on town creation
45
- bobProvider.wallet);
46
- expect(error).toBeUndefined();
47
- expect(announcementChannelId).toBeDefined();
48
- const { streamId: announcementStreamId } = await bob.createChannel(spaceId, 'channel2', 'channel2 topic', announcementChannelId, undefined, {
49
- autojoin: true,
50
- hideUserJoinLeaveEvents: true,
51
- });
52
- const spaceStream = bob.streams.get(spaceId);
53
- expect(spaceStream).toBeDefined();
54
- const spaceStreamView = spaceStream.view.spaceContent;
55
- expect(spaceStreamView).toBeDefined();
56
- await waitFor(() => {
57
- const channelMetadata = spaceStreamView.spaceChannelsMetadata;
58
- check(Object.keys(channelMetadata).length === 2);
59
- check(channelMetadata[announcementStreamId]?.isAutojoin === true);
60
- check(channelMetadata[announcementStreamId]?.hideUserJoinLeaveEvents === true);
61
- });
62
- });
63
- test('set autojoin for channel', async () => {
64
- const { bob, bobProvider, bobSpaceDapp } = await setupWalletsAndContexts();
65
- const everyoneMembership = await everyoneMembershipStruct(bobSpaceDapp, bob);
66
- // Track autojoin state of channels via emitted client events
67
- const updatedChannelAutojoinState = new Map();
68
- bob.on('spaceChannelAutojoinUpdated', (_spaceId, channelId, autojoin) => {
69
- updatedChannelAutojoinState.set(channelId, autojoin);
70
- });
71
- const { spaceId, defaultChannelId } = await createSpaceAndDefaultChannel(bob, bobSpaceDapp, bobProvider.wallet, "bob's town", everyoneMembership);
72
- // Create channel on contract
73
- const { channelId: channel1Id, error } = await createChannel(bobSpaceDapp, bobProvider, spaceId, 'channel1', [1], // member role created on town creation
74
- bobProvider.wallet);
75
- expect(error).toBeUndefined();
76
- // Create channel stream
77
- const { streamId: channelStream1Id } = await bob.createChannel(spaceId, 'channel1', 'channel1 topic', channel1Id);
78
- expect(channelStream1Id).toEqual(channel1Id);
79
- const spaceStream = bob.streams.get(spaceId);
80
- expect(spaceStream).toBeDefined();
81
- const spaceStreamView = spaceStream.view.spaceContent;
82
- expect(spaceStreamView).toBeDefined();
83
- // Default channel only should be autojoin by default
84
- await waitFor(() => {
85
- const channelMetadata = spaceStreamView.spaceChannelsMetadata;
86
- check(Object.keys(channelMetadata).length === 2);
87
- check(channelMetadata[defaultChannelId]?.isAutojoin === true);
88
- check(channelMetadata[channel1Id]?.isAutojoin === false);
89
- });
90
- // Set channel1 to autojoin=true
91
- const { eventId } = await bob.updateChannelAutojoin(spaceId, channel1Id, true);
92
- expect(eventId).toBeDefined();
93
- // Validate autojoin event was emitted for channel1
94
- await waitFor(() => {
95
- expect(updatedChannelAutojoinState.size).toBe(1);
96
- expect(updatedChannelAutojoinState.get(channel1Id)).toBe(true);
97
- });
98
- // Expect autojoin change to sync to space stream view
99
- await waitFor(() => {
100
- const channelMetadata = spaceStreamView.spaceChannelsMetadata;
101
- check(channelMetadata[channel1Id]?.isAutojoin === true);
102
- });
103
- });
104
- test('unpermitted user cannot update channel autojoin', async () => {
105
- const { bob, bobProvider, bobSpaceDapp, alice, aliceSpaceDapp, aliceProvider, carol, carolsWallet, carolProvider, carolSpaceDapp, } = await setupWalletsAndContexts();
106
- const everyoneMembership = await everyoneMembershipStruct(bobSpaceDapp, bob);
107
- const { spaceId, defaultChannelId } = await createSpaceAndDefaultChannel(bob, bobSpaceDapp, bobProvider.wallet, "bob's town", everyoneMembership);
108
- // Validate current autojoin state for default channel is true
109
- const spaceStream = bob.streams.get(spaceId);
110
- expect(spaceStream).toBeDefined();
111
- const spaceStreamView = spaceStream.view.spaceContent;
112
- expect(spaceStreamView).toBeDefined();
113
- await waitFor(() => {
114
- const channelMetadata = spaceStreamView.spaceChannelsMetadata;
115
- check(Object.keys(channelMetadata).length === 1);
116
- check(channelMetadata[defaultChannelId]?.isAutojoin === true);
117
- });
118
- // Unpermitted user alice should not be able to update autojoin.
119
- // First, add alice to the space and channel.
120
- await expectUserCanJoin(spaceId, defaultChannelId, 'alice', alice, aliceSpaceDapp, aliceProvider.wallet.address, aliceProvider.wallet);
121
- // Alice's update should fail
122
- await expect(alice.updateChannelAutojoin(spaceId, defaultChannelId, false)).rejects.toThrow(/7:PERMISSION_DENIED/);
123
- // Add Carol to a role that gives her AddRemoveChannels permission so she can update autojoin
124
- const { error: roleError } = await createRole(bobSpaceDapp, bobProvider, spaceId, 'gated role', [Permission.AddRemoveChannels], [carolsWallet.address], NoopRuleData, bobProvider.wallet);
125
- expect(roleError).toBeUndefined();
126
- // Add Carol to the space and the channel
127
- await expectUserCanJoin(spaceId, defaultChannelId, 'carol', carol, carolSpaceDapp, carolProvider.wallet.address, carolProvider.wallet);
128
- // Carol's update should succeed
129
- await expect(carol.updateChannelAutojoin(spaceId, defaultChannelId, false)).resolves.not.toThrow();
130
- // Validate autojoin event was applied on client
131
- await waitFor(() => {
132
- const channelMetadata = spaceStreamView.spaceChannelsMetadata;
133
- check(Object.keys(channelMetadata).length === 1);
134
- check(channelMetadata[defaultChannelId]?.isAutojoin === false);
135
- });
136
- });
137
- test('set hideUserJoinLeaveEvents on channels', async () => {
138
- const { bob, bobProvider, bobSpaceDapp } = await setupWalletsAndContexts();
139
- const everyoneMembership = await everyoneMembershipStruct(bobSpaceDapp, bob);
140
- // Track hideJoinLeaveEvent state of channels via emitted client events
141
- const updatedChannelHideJoinLeaveEventsState = new Map();
142
- bob.on('spaceChannelHideUserJoinLeaveEventsUpdated', (_spaceId, channelId, hideJoinLeaveEvents) => {
143
- updatedChannelHideJoinLeaveEventsState.set(channelId, hideJoinLeaveEvents);
144
- });
145
- const { spaceId, defaultChannelId } = await createSpaceAndDefaultChannel(bob, bobSpaceDapp, bobProvider.wallet, "bob's town", everyoneMembership);
146
- const spaceStream = bob.streams.get(spaceId);
147
- expect(spaceStream).toBeDefined();
148
- const spaceStreamView = spaceStream.view.spaceContent;
149
- expect(spaceStreamView).toBeDefined();
150
- // All channels show join/leave events by default
151
- await waitFor(() => {
152
- const channelMetadata = spaceStreamView.spaceChannelsMetadata;
153
- check(Object.keys(channelMetadata).length === 1);
154
- check(channelMetadata[defaultChannelId]?.hideUserJoinLeaveEvents === false);
155
- });
156
- // Set channel1 to hideUserJoinLeaveEvents=true
157
- const { eventId } = await bob.updateChannelHideUserJoinLeaveEvents(spaceId, defaultChannelId, true);
158
- expect(eventId).toBeDefined();
159
- // Validate updateHideUserJoinLeaveEvent event was emitted for channel1
160
- await waitFor(() => {
161
- expect(updatedChannelHideJoinLeaveEventsState.size).toBe(1);
162
- expect(updatedChannelHideJoinLeaveEventsState.get(defaultChannelId)).toBe(true);
163
- });
164
- // Expect hideUserJoinLeaveEvents change to sync to space stream view
165
- await waitFor(() => {
166
- const channelMetadata = spaceStreamView.spaceChannelsMetadata;
167
- check(channelMetadata[defaultChannelId]?.hideUserJoinLeaveEvents === true);
168
- });
169
- });
170
- test('unpermitted user cannot update channel hideUserJoinLeaveEvents', async () => {
171
- const { bob, bobProvider, bobSpaceDapp, alice, aliceSpaceDapp, aliceProvider, carol, carolsWallet, carolSpaceDapp, carolProvider, } = await setupWalletsAndContexts();
172
- const everyoneMembership = await everyoneMembershipStruct(bobSpaceDapp, bob);
173
- const { spaceId, defaultChannelId } = await createSpaceAndDefaultChannel(bob, bobSpaceDapp, bobProvider.wallet, "bob's town", everyoneMembership);
174
- // Validate local synced client state for channel setting is false
175
- const spaceStream = bob.streams.get(spaceId);
176
- expect(spaceStream).toBeDefined();
177
- const spaceStreamView = spaceStream.view.spaceContent;
178
- expect(spaceStreamView).toBeDefined();
179
- await waitFor(() => {
180
- const channelMetadata = spaceStreamView.spaceChannelsMetadata;
181
- check(Object.keys(channelMetadata).length === 1);
182
- check(channelMetadata[defaultChannelId]?.hideUserJoinLeaveEvents === false);
183
- });
184
- // Unpermitted user alice should not be able to update hideUserJoinLeaveEvents.
185
- // First, add alice to the space and channel.
186
- await expectUserCanJoin(spaceId, defaultChannelId, 'alice', alice, aliceSpaceDapp, aliceProvider.wallet.address, aliceProvider.wallet);
187
- await expect(alice.updateChannelHideUserJoinLeaveEvents(spaceId, defaultChannelId, true)).rejects.toThrow(/7:PERMISSION_DENIED/);
188
- // Add Carol to a role that gives her AddRemoveChannels permission so she can update
189
- // hideUserJoinLeaveEvents
190
- const { error: roleError } = await createRole(bobSpaceDapp, bobProvider, spaceId, 'gated role', [Permission.AddRemoveChannels], [carolsWallet.address], NoopRuleData, bobProvider.wallet);
191
- expect(roleError).toBeUndefined();
192
- // Add Carol to the space and channel.
193
- await expectUserCanJoin(spaceId, defaultChannelId, 'carol', carol, carolSpaceDapp, carolProvider.wallet.address, carolProvider.wallet);
194
- // Carol's update should succeed
195
- await expect(carol.updateChannelHideUserJoinLeaveEvents(spaceId, defaultChannelId, true)).resolves.not.toThrow();
196
- // Validate updateHideUserJoinLeaveEvents event was applied on client
197
- await waitFor(() => {
198
- const channelMetadata = spaceStreamView.spaceChannelsMetadata;
199
- check(Object.keys(channelMetadata).length === 1);
200
- check(channelMetadata[defaultChannelId]?.hideUserJoinLeaveEvents === true);
201
- });
202
- });
203
- });
204
- //# sourceMappingURL=channelSpaceSettings.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"channelSpaceSettings.test.js","sourceRoot":"","sources":["../../../src/tests/multi/channelSpaceSettings.test.ts"],"names":[],"mappings":"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"}
@@ -1,5 +0,0 @@
1
- /**
2
- * @group with-entitlements
3
- */
4
- export {};
5
- //# sourceMappingURL=disableChannel.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"disableChannel.test.d.ts","sourceRoot":"","sources":["../../../src/tests/multi/disableChannel.test.ts"],"names":[],"mappings":"AAAA;;GAEG"}
@@ -1,30 +0,0 @@
1
- /**
2
- * @group with-entitlements
3
- */
4
- import { NoopRuleData } from '@towns-labs/web3';
5
- import { expectUserCanJoinChannel, setupChannelWithCustomRole } from '../testUtils';
6
- describe('disableChannel', () => {
7
- test('User cannot post events to a channel after it is disabled', async () => {
8
- const { alice, carol, bobProvider, aliceSpaceDapp, bobSpaceDapp, spaceId, channelId } = await setupChannelWithCustomRole(['alice', 'carol'], NoopRuleData);
9
- await expectUserCanJoinChannel(alice, aliceSpaceDapp, spaceId, channelId);
10
- // Disable the channel
11
- const txn = await bobSpaceDapp.setChannelAccess(spaceId, channelId, true, bobProvider.wallet);
12
- await bobProvider.waitForTransaction(txn.hash);
13
- const channelDetails = await bobSpaceDapp.getChannelDetails(spaceId, channelId);
14
- expect(channelDetails).toBeDefined();
15
- expect(channelDetails.disabled).toBeTruthy();
16
- // Wait 5 seconds for the positive channel enabled cache entry to expire
17
- await new Promise((f) => setTimeout(f, 5000));
18
- // Stream node should not allow the join
19
- // TODO: SpaceDapp also should not allow the join, but it currently does not
20
- // check for channel enabled. Fix and replace below logic with
21
- // await expectUserCanJoinChannel(
22
- // carol,
23
- // carolSpaceDapp,
24
- // spaceId,
25
- // channelId!,
26
- // )
27
- await expect(carol.joinStream(channelId)).rejects.toThrow(/7:PERMISSION_DENIED/);
28
- });
29
- });
30
- //# sourceMappingURL=disableChannel.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"disableChannel.test.js","sourceRoot":"","sources":["../../../src/tests/multi/disableChannel.test.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAA;AAC/C,OAAO,EAAE,wBAAwB,EAAE,0BAA0B,EAAE,MAAM,cAAc,CAAA;AAEnF,QAAQ,CAAC,gBAAgB,EAAE,GAAG,EAAE;IAC5B,IAAI,CAAC,2DAA2D,EAAE,KAAK,IAAI,EAAE;QACzE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,WAAW,EAAE,cAAc,EAAE,YAAY,EAAE,OAAO,EAAE,SAAS,EAAE,GACjF,MAAM,0BAA0B,CAAC,CAAC,OAAO,EAAE,OAAO,CAAC,EAAE,YAAY,CAAC,CAAA;QAEtE,MAAM,wBAAwB,CAAC,KAAK,EAAE,cAAc,EAAE,OAAO,EAAE,SAAU,CAAC,CAAA;QAE1E,sBAAsB;QACtB,MAAM,GAAG,GAAG,MAAM,YAAY,CAAC,gBAAgB,CAC3C,OAAO,EACP,SAAU,EACV,IAAI,EACJ,WAAW,CAAC,MAAM,CACrB,CAAA;QACD,MAAM,WAAW,CAAC,kBAAkB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;QAC9C,MAAM,cAAc,GAAG,MAAM,YAAY,CAAC,iBAAiB,CAAC,OAAO,EAAE,SAAU,CAAC,CAAA;QAChF,MAAM,CAAC,cAAc,CAAC,CAAC,WAAW,EAAE,CAAA;QACpC,MAAM,CAAC,cAAe,CAAC,QAAQ,CAAC,CAAC,UAAU,EAAE,CAAA;QAE7C,wEAAwE;QACxE,MAAM,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAA;QAE7C,wCAAwC;QACxC,4EAA4E;QAC5E,8DAA8D;QAC9D,kCAAkC;QAClC,aAAa;QACb,sBAAsB;QACtB,eAAe;QACf,kBAAkB;QAClB,IAAI;QACJ,MAAM,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,SAAU,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,qBAAqB,CAAC,CAAA;IACrF,CAAC,CAAC,CAAA;AACN,CAAC,CAAC,CAAA"}
@@ -1,5 +0,0 @@
1
- /**
2
- * @group with-entitlements
3
- */
4
- export {};
5
- //# sourceMappingURL=disableSpace.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"disableSpace.test.d.ts","sourceRoot":"","sources":["../../../src/tests/multi/disableSpace.test.ts"],"names":[],"mappings":"AAAA;;GAEG"}
@@ -1,37 +0,0 @@
1
- /**
2
- * @group with-entitlements
3
- */
4
- import { NoopRuleData } from '@towns-labs/web3';
5
- import { expectUserCanJoin, createTownWithRequirements, createUserStreamAndSyncClient, everyoneMembershipStruct, } from '../testUtils';
6
- describe('disableSpace', () => {
7
- test('User cannot join a space after it is disabled', async () => {
8
- const { alice, carol, alicesWallet, aliceProvider, bobProvider, carolProvider, aliceSpaceDapp, bobSpaceDapp, carolSpaceDapp, spaceId, channelId, } = await createTownWithRequirements({
9
- everyone: true,
10
- users: [],
11
- ruleData: NoopRuleData,
12
- });
13
- await expectUserCanJoin(spaceId, channelId, 'alice', alice, aliceSpaceDapp, alicesWallet.address, aliceProvider.wallet);
14
- // Disable the channel
15
- const txn = await bobSpaceDapp.setSpaceAccess(spaceId, true, bobProvider.wallet);
16
- await bobProvider.waitForTransaction(txn.hash);
17
- const spaceInfo = await bobSpaceDapp.getSpaceInfo(spaceId);
18
- expect(spaceInfo).toBeDefined();
19
- expect(spaceInfo?.disabled).toBeTruthy();
20
- // Wait 5 seconds for the positive space enabled cache entry to expire
21
- await new Promise((f) => setTimeout(f, 5000));
22
- // Have carol create a user stream attached to her own space.
23
- // Then she will attempt to join the space from the client, which should fail.
24
- await createUserStreamAndSyncClient(carol, carolSpaceDapp, 'carol', await everyoneMembershipStruct(carolSpaceDapp, carol), carolProvider.wallet);
25
- // Expect user cannot join the space.
26
- // TODO: the spaceDapp does not check for space enabled when evaluating if user
27
- // is eligible to join the space. Fix and replace the below logic with
28
- // await expectUserCannotJoinSpace(
29
- // spaceId,
30
- // carol,
31
- // carolSpaceDapp,
32
- // carolsWallet.address
33
- // )
34
- await expect(carol.joinStream(spaceId)).rejects.toThrow(/PERMISSION_DENIED/);
35
- });
36
- });
37
- //# sourceMappingURL=disableSpace.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"disableSpace.test.js","sourceRoot":"","sources":["../../../src/tests/multi/disableSpace.test.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAA;AAC/C,OAAO,EACH,iBAAiB,EACjB,0BAA0B,EAC1B,6BAA6B,EAC7B,wBAAwB,GAC3B,MAAM,cAAc,CAAA;AAErB,QAAQ,CAAC,cAAc,EAAE,GAAG,EAAE;IAC1B,IAAI,CAAC,+CAA+C,EAAE,KAAK,IAAI,EAAE;QAC7D,MAAM,EACF,KAAK,EACL,KAAK,EACL,YAAY,EACZ,aAAa,EACb,WAAW,EACX,aAAa,EACb,cAAc,EACd,YAAY,EACZ,cAAc,EACd,OAAO,EACP,SAAS,GACZ,GAAG,MAAM,0BAA0B,CAAC;YACjC,QAAQ,EAAE,IAAI;YACd,KAAK,EAAE,EAAE;YACT,QAAQ,EAAE,YAAY;SACzB,CAAC,CAAA;QAEF,MAAM,iBAAiB,CACnB,OAAO,EACP,SAAS,EACT,OAAO,EACP,KAAK,EACL,cAAc,EACd,YAAY,CAAC,OAAO,EACpB,aAAa,CAAC,MAAM,CACvB,CAAA;QAED,sBAAsB;QACtB,MAAM,GAAG,GAAG,MAAM,YAAY,CAAC,cAAc,CAAC,OAAO,EAAE,IAAI,EAAE,WAAW,CAAC,MAAM,CAAC,CAAA;QAChF,MAAM,WAAW,CAAC,kBAAkB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;QAC9C,MAAM,SAAS,GAAG,MAAM,YAAY,CAAC,YAAY,CAAC,OAAO,CAAC,CAAA;QAC1D,MAAM,CAAC,SAAS,CAAC,CAAC,WAAW,EAAE,CAAA;QAC/B,MAAM,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC,UAAU,EAAE,CAAA;QAExC,sEAAsE;QACtE,MAAM,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAA;QAE7C,6DAA6D;QAC7D,8EAA8E;QAC9E,MAAM,6BAA6B,CAC/B,KAAK,EACL,cAAc,EACd,OAAO,EACP,MAAM,wBAAwB,CAAC,cAAc,EAAE,KAAK,CAAC,EACrD,aAAa,CAAC,MAAM,CACvB,CAAA;QAED,qCAAqC;QACrC,+EAA+E;QAC/E,sEAAsE;QACtE,mCAAmC;QACnC,eAAe;QACf,aAAa;QACb,sBAAsB;QACtB,2BAA2B;QAC3B,IAAI;QACJ,MAAM,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAA;IAChF,CAAC,CAAC,CAAA;AACN,CAAC,CAAC,CAAA"}
@@ -1,5 +0,0 @@
1
- /**
2
- * @group with-entitlements
3
- */
4
- export {};
5
- //# sourceMappingURL=channelEntitlementPermissions.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"channelEntitlementPermissions.test.d.ts","sourceRoot":"","sources":["../../../../src/tests/multi/entitlements/channelEntitlementPermissions.test.ts"],"names":[],"mappings":"AAAA;;GAEG"}
@@ -1,129 +0,0 @@
1
- /**
2
- * @group with-entitlements
3
- */
4
- import { setupChannelWithCustomRole, expectUserCanJoinChannel } from '../../testUtils';
5
- import { dlog } from '@towns-labs/utils';
6
- import { NoopRuleData, Permission } from '@towns-labs/web3';
7
- const log = dlog('csb:test:channelEntitlementPermissions');
8
- describe('channelEntitlementPermissions', () => {
9
- test("READ-only user cannot write or react to a channel's messages", async () => {
10
- const { alice, bob, aliceSpaceDapp, spaceId, channelId } = await setupChannelWithCustomRole(['alice'], NoopRuleData);
11
- // Validate alice can join the channel
12
- await expectUserCanJoinChannel(alice, aliceSpaceDapp, spaceId, channelId);
13
- const { eventId: refEventId } = await bob.sendMessage(channelId, 'Hello, world!');
14
- // React to Bob's message not allowed.
15
- await expect(alice.sendChannelMessage_Reaction(channelId, { reaction: '👍', refEventId })).rejects.toThrow( /*not entitled to add message to channel*/);
16
- // Reply to Bob's message not allowed.
17
- await expect(alice.sendChannelMessage_Text(channelId, {
18
- content: {
19
- body: 'Hello, world!',
20
- mentions: [],
21
- attachments: [],
22
- },
23
- threadId: refEventId, // reply to Bob's message
24
- })).rejects.toThrow( /*not entitled to add message to channel*/);
25
- // Top-level post not allowed.
26
- await expect(alice.sendMessage(channelId, 'Hello, world!')).rejects.toThrow( /*not entitled to add message to channel*/);
27
- const doneStart = Date.now();
28
- // kill the clients
29
- await bob.stopSync();
30
- await alice.stopSync();
31
- log('Done', Date.now() - doneStart);
32
- });
33
- test('READ + REACT user can react and redact reactions, but cannot write (top-level or reply)', async () => {
34
- const { alice, bob, aliceSpaceDapp, spaceId, channelId } = await setupChannelWithCustomRole(['alice'], NoopRuleData, [Permission.Read, Permission.React]);
35
- // Validate alice can join the channel
36
- await expectUserCanJoinChannel(alice, aliceSpaceDapp, spaceId, channelId);
37
- const { eventId: refEventId } = await bob.sendMessage(channelId, 'Hello, world!');
38
- // Reacting to Bob's message should be allowed. Redacting the reaction should also be allowed.
39
- const { eventId } = await alice.sendChannelMessage_Reaction(channelId, {
40
- reaction: '👍',
41
- refEventId,
42
- });
43
- expect(eventId).toBeDefined();
44
- await expect(alice.sendChannelMessage_Redaction(channelId, {
45
- refEventId: eventId,
46
- })).resolves.not.toThrow();
47
- // Replying to Bob's message should not be allowed.
48
- await expect(alice.sendChannelMessage_Text(channelId, {
49
- content: {
50
- body: 'Hello, world!',
51
- mentions: [],
52
- attachments: [],
53
- },
54
- threadId: refEventId, // reply to Bob's message
55
- })).rejects.toThrow( /*not entitled to add message to channel*/);
56
- // Cannot make a top-level post to the channel.
57
- await expect(alice.sendMessage(channelId, 'Hello, world!')).rejects.toThrow( /*not entitled to add message to channel*/);
58
- const doneStart = Date.now();
59
- // kill the clients
60
- await bob.stopSync();
61
- await alice.stopSync();
62
- log('Done', Date.now() - doneStart);
63
- });
64
- // In practice we would never have a user with only write permissions, but this is a good test
65
- // to make sure our permissions are non-overlapping.
66
- test('WRITE user can write (top-level plus reply), react', async () => {
67
- const { alice, bob, aliceSpaceDapp, spaceId, channelId } = await setupChannelWithCustomRole(['alice'], NoopRuleData, [Permission.Read, Permission.Write]);
68
- // Validate alice can join the channel
69
- await expectUserCanJoinChannel(alice, aliceSpaceDapp, spaceId, channelId);
70
- const { eventId: refEventId } = await bob.sendMessage(channelId, 'Hello, world!');
71
- // Reacting to Bob's message should be allowed. Redacting the reaction should also be allowed.
72
- const { eventId } = await alice.sendChannelMessage_Reaction(channelId, {
73
- reaction: '👍',
74
- refEventId,
75
- });
76
- expect(eventId).toBeDefined();
77
- await expect(alice.sendChannelMessage_Redaction(channelId, {
78
- refEventId: eventId,
79
- })).resolves.not.toThrow();
80
- // Replying to Bob's message should be allowed.
81
- await expect(alice.sendChannelMessage_Text(channelId, {
82
- content: {
83
- body: 'Hello, world!',
84
- mentions: [],
85
- attachments: [],
86
- },
87
- threadId: refEventId, // reply to Bob's message
88
- })).resolves.not.toThrow();
89
- // Top-level post currently allowed.
90
- await expect(alice.sendMessage(channelId, 'Hello, world!')).resolves.not.toThrow();
91
- const doneStart = Date.now();
92
- // kill the clients
93
- await bob.stopSync();
94
- await alice.stopSync();
95
- log('Done', Date.now() - doneStart);
96
- });
97
- test('REACT + WRITE user can do all WRITE user can do', async () => {
98
- const { alice, bob, aliceSpaceDapp, spaceId, channelId } = await setupChannelWithCustomRole(['alice'], NoopRuleData, [Permission.Read, Permission.React, Permission.Write]);
99
- // Validate alice can join the channel
100
- await expectUserCanJoinChannel(alice, aliceSpaceDapp, spaceId, channelId);
101
- const { eventId: refEventId } = await bob.sendMessage(channelId, 'Hello, world!');
102
- // Reacting to Bob's message should be allowed. Redacting the reaction should also be allowed.
103
- const { eventId } = await alice.sendChannelMessage_Reaction(channelId, {
104
- reaction: '👍',
105
- refEventId,
106
- });
107
- expect(eventId).toBeDefined();
108
- await expect(alice.sendChannelMessage_Redaction(channelId, {
109
- refEventId: eventId,
110
- })).resolves.not.toThrow();
111
- // Replying to Bob's message should be allowed.
112
- await expect(alice.sendChannelMessage_Text(channelId, {
113
- content: {
114
- body: 'Hello, world!',
115
- mentions: [],
116
- attachments: [],
117
- },
118
- threadId: refEventId, // reply to Bob's message
119
- })).resolves.not.toThrow();
120
- // Top-level post currently allowed.
121
- await expect(alice.sendMessage(channelId, 'Hello, world!')).resolves.not.toThrow();
122
- const doneStart = Date.now();
123
- // kill the clients
124
- await bob.stopSync();
125
- await alice.stopSync();
126
- log('Done', Date.now() - doneStart);
127
- });
128
- });
129
- //# sourceMappingURL=channelEntitlementPermissions.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"channelEntitlementPermissions.test.js","sourceRoot":"","sources":["../../../../src/tests/multi/entitlements/channelEntitlementPermissions.test.ts"],"names":[],"mappings":"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"}
@@ -1,5 +0,0 @@
1
- /**
2
- * @group with-entitlements
3
- */
4
- export {};
5
- //# sourceMappingURL=channelWithThreeNestedEntitlement.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"channelWithThreeNestedEntitlement.test.d.ts","sourceRoot":"","sources":["../../../../src/tests/multi/entitlements/channelWithThreeNestedEntitlement.test.ts"],"names":[],"mappings":"AAAA;;GAEG"}
@@ -1,44 +0,0 @@
1
- /**
2
- * @group with-entitlements
3
- */
4
- import { setupWalletsAndContexts, expectUserCanJoin, setupChannelWithCustomRole, expectUserCanJoinChannel, expectUserCannotJoinChannel, } from '../../testUtils';
5
- import { TestERC721, createExternalNFTStruct } from '@towns-labs/web3';
6
- describe('channelsWithThreeNestedEntitlements', () => {
7
- // This test takes almost one minute to run in CI and therefore gets its own file.
8
- test('user with only one entitlement from 3-nested NFT rule data can join channel', async () => {
9
- const testNft1 = 'TestNft1';
10
- const testNft2 = 'TestNft2';
11
- const testNft3 = 'TestNft3';
12
- const testNftAddress = await TestERC721.getContractAddress(testNft1);
13
- const testNftAddress2 = await TestERC721.getContractAddress(testNft2);
14
- const testNftAddress3 = await TestERC721.getContractAddress(testNft3);
15
- const ruleData = createExternalNFTStruct([testNftAddress, testNftAddress2, testNftAddress3]);
16
- const { alice, alicesWallet, aliceSpaceDapp, bob, carol, carolsWallet, carolSpaceDapp, spaceId, defaultChannelId, channelId, } = await setupChannelWithCustomRole([], ruleData);
17
- // Set up additional users
18
- const { alice: dave, alicesWallet: davesWallet, aliceSpaceDapp: daveSpaceDapp, aliceProvider: daveProvider, } = await setupWalletsAndContexts();
19
- // Add Dave to the space
20
- await expectUserCanJoin(spaceId, defaultChannelId, 'dave', dave, daveSpaceDapp, davesWallet.address, daveProvider.wallet);
21
- // Alice initially cannot join because she has no nft
22
- await expectUserCannotJoinChannel(alice, aliceSpaceDapp, spaceId, channelId);
23
- // Alice, Carol and Dave will each have one of the three NFTs, all should be able to join.
24
- // Mint an nft for alice - she should be able to join now
25
- await TestERC721.publicMint(testNft1, alicesWallet.address);
26
- // Wait 2 seconds for the negative auth cache on the client to expire
27
- await new Promise((f) => setTimeout(f, 2000));
28
- // Validate alice can join the channel
29
- await expectUserCanJoinChannel(alice, aliceSpaceDapp, spaceId, channelId);
30
- // Mint an nft for carol - she should be able to join now
31
- await TestERC721.publicMint(testNft2, carolsWallet.address);
32
- // Validate carol can join the channel
33
- await expectUserCanJoinChannel(carol, carolSpaceDapp, spaceId, channelId);
34
- // Mint an nft for dave - he should be able to join now
35
- await TestERC721.publicMint(testNft3, davesWallet.address);
36
- // Validate dave can join the channel
37
- await expectUserCanJoinChannel(dave, daveSpaceDapp, spaceId, channelId);
38
- await bob.stopSync();
39
- await alice.stopSync();
40
- await carol.stopSync();
41
- await dave.stopSync();
42
- });
43
- });
44
- //# sourceMappingURL=channelWithThreeNestedEntitlement.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"channelWithThreeNestedEntitlement.test.js","sourceRoot":"","sources":["../../../../src/tests/multi/entitlements/channelWithThreeNestedEntitlement.test.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EACH,uBAAuB,EACvB,iBAAiB,EACjB,0BAA0B,EAC1B,wBAAwB,EACxB,2BAA2B,GAC9B,MAAM,iBAAiB,CAAA;AACxB,OAAO,EAAW,UAAU,EAAE,uBAAuB,EAAE,MAAM,kBAAkB,CAAA;AAE/E,QAAQ,CAAC,qCAAqC,EAAE,GAAG,EAAE;IACjD,kFAAkF;IAClF,IAAI,CAAC,6EAA6E,EAAE,KAAK,IAAI,EAAE;QAC3F,MAAM,QAAQ,GAAG,UAAU,CAAA;QAC3B,MAAM,QAAQ,GAAG,UAAU,CAAA;QAC3B,MAAM,QAAQ,GAAG,UAAU,CAAA;QAC3B,MAAM,cAAc,GAAG,MAAM,UAAU,CAAC,kBAAkB,CAAC,QAAQ,CAAC,CAAA;QACpE,MAAM,eAAe,GAAG,MAAM,UAAU,CAAC,kBAAkB,CAAC,QAAQ,CAAC,CAAA;QACrE,MAAM,eAAe,GAAG,MAAM,UAAU,CAAC,kBAAkB,CAAC,QAAQ,CAAC,CAAA;QAErE,MAAM,QAAQ,GAAG,uBAAuB,CAAC,CAAC,cAAc,EAAE,eAAe,EAAE,eAAe,CAAC,CAAC,CAAA;QAC5F,MAAM,EACF,KAAK,EACL,YAAY,EACZ,cAAc,EACd,GAAG,EACH,KAAK,EACL,YAAY,EACZ,cAAc,EACd,OAAO,EACP,gBAAgB,EAChB,SAAS,GACZ,GAAG,MAAM,0BAA0B,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAA;QAElD,0BAA0B;QAC1B,MAAM,EACF,KAAK,EAAE,IAAI,EACX,YAAY,EAAE,WAAW,EACzB,cAAc,EAAE,aAAa,EAC7B,aAAa,EAAE,YAAY,GAC9B,GAAG,MAAM,uBAAuB,EAAE,CAAA;QACnC,wBAAwB;QACxB,MAAM,iBAAiB,CACnB,OAAO,EACP,gBAAgB,EAChB,MAAM,EACN,IAAI,EACJ,aAAa,EACb,WAAW,CAAC,OAAO,EACnB,YAAY,CAAC,MAAM,CACtB,CAAA;QAED,qDAAqD;QACrD,MAAM,2BAA2B,CAAC,KAAK,EAAE,cAAc,EAAE,OAAO,EAAE,SAAU,CAAC,CAAA;QAE7E,0FAA0F;QAC1F,yDAAyD;QACzD,MAAM,UAAU,CAAC,UAAU,CAAC,QAAQ,EAAE,YAAY,CAAC,OAAkB,CAAC,CAAA;QAEtE,qEAAqE;QACrE,MAAM,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAA;QAE7C,sCAAsC;QACtC,MAAM,wBAAwB,CAAC,KAAK,EAAE,cAAc,EAAE,OAAO,EAAE,SAAU,CAAC,CAAA;QAE1E,yDAAyD;QACzD,MAAM,UAAU,CAAC,UAAU,CAAC,QAAQ,EAAE,YAAY,CAAC,OAAkB,CAAC,CAAA;QAEtE,sCAAsC;QACtC,MAAM,wBAAwB,CAAC,KAAK,EAAE,cAAc,EAAE,OAAO,EAAE,SAAU,CAAC,CAAA;QAE1E,uDAAuD;QACvD,MAAM,UAAU,CAAC,UAAU,CAAC,QAAQ,EAAE,WAAW,CAAC,OAAkB,CAAC,CAAA;QAErE,qCAAqC;QACrC,MAAM,wBAAwB,CAAC,IAAI,EAAE,aAAa,EAAE,OAAO,EAAE,SAAU,CAAC,CAAA;QAExE,MAAM,GAAG,CAAC,QAAQ,EAAE,CAAA;QACpB,MAAM,KAAK,CAAC,QAAQ,EAAE,CAAA;QACtB,MAAM,KAAK,CAAC,QAAQ,EAAE,CAAA;QACtB,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAA;IACzB,CAAC,CAAC,CAAA;AACN,CAAC,CAAC,CAAA"}