@towns-labs/sdk 2.0.11 → 2.0.13

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (508) hide show
  1. package/dist/client.d.ts +13 -31
  2. package/dist/client.d.ts.map +1 -1
  3. package/dist/client.js +113 -328
  4. package/dist/client.js.map +1 -1
  5. package/dist/clientDecryptionExtensions.d.ts.map +1 -1
  6. package/dist/clientDecryptionExtensions.js +10 -28
  7. package/dist/clientDecryptionExtensions.js.map +1 -1
  8. package/dist/createApp.d.ts +1 -1
  9. package/dist/createApp.d.ts.map +1 -1
  10. package/dist/createApp.js +6 -2
  11. package/dist/createApp.js.map +1 -1
  12. package/dist/id.d.ts +1 -17
  13. package/dist/id.d.ts.map +1 -1
  14. package/dist/id.js +1 -53
  15. package/dist/id.js.map +1 -1
  16. package/dist/index.d.ts +0 -22
  17. package/dist/index.d.ts.map +1 -1
  18. package/dist/index.js +0 -22
  19. package/dist/index.js.map +1 -1
  20. package/dist/migrations/snapshotMigration0001.d.ts.map +1 -1
  21. package/dist/migrations/snapshotMigration0001.js +0 -4
  22. package/dist/migrations/snapshotMigration0001.js.map +1 -1
  23. package/dist/migrations/snapshotMigration0002.d.ts.map +1 -1
  24. package/dist/migrations/snapshotMigration0002.js +1 -19
  25. package/dist/migrations/snapshotMigration0002.js.map +1 -1
  26. package/dist/migrations/snapshotMigration0004.d.ts.map +1 -1
  27. package/dist/migrations/snapshotMigration0004.js +1 -27
  28. package/dist/migrations/snapshotMigration0004.js.map +1 -1
  29. package/dist/migrations/snapshotMigration0005.d.ts.map +1 -1
  30. package/dist/migrations/snapshotMigration0005.js +1 -26
  31. package/dist/migrations/snapshotMigration0005.js.map +1 -1
  32. package/dist/notificationsClient.d.ts +1 -5
  33. package/dist/notificationsClient.d.ts.map +1 -1
  34. package/dist/notificationsClient.js +2 -103
  35. package/dist/notificationsClient.js.map +1 -1
  36. package/dist/persistenceStore.d.ts.map +1 -1
  37. package/dist/persistenceStore.js +6 -18
  38. package/dist/persistenceStore.js.map +1 -1
  39. package/dist/streamEvents.d.ts +0 -6
  40. package/dist/streamEvents.d.ts.map +1 -1
  41. package/dist/streamStateView.d.ts +0 -9
  42. package/dist/streamStateView.d.ts.map +1 -1
  43. package/dist/streamStateView.js +3 -64
  44. package/dist/streamStateView.js.map +1 -1
  45. package/dist/streamStateView_MemberMetadata.d.ts +3 -36
  46. package/dist/streamStateView_MemberMetadata.d.ts.map +1 -1
  47. package/dist/streamStateView_MemberMetadata.js +3 -83
  48. package/dist/streamStateView_MemberMetadata.js.map +1 -1
  49. package/dist/streamStateView_Members.d.ts +1 -5
  50. package/dist/streamStateView_Members.d.ts.map +1 -1
  51. package/dist/streamStateView_Members.js +4 -91
  52. package/dist/streamStateView_Members.js.map +1 -1
  53. package/dist/streamStateView_User.d.ts.map +1 -1
  54. package/dist/streamStateView_User.js +1 -0
  55. package/dist/streamStateView_User.js.map +1 -1
  56. package/dist/streamStateView_UserInbox.d.ts.map +1 -1
  57. package/dist/streamStateView_UserInbox.js +1 -0
  58. package/dist/streamStateView_UserInbox.js.map +1 -1
  59. package/dist/streamStateView_UserMetadata.d.ts.map +1 -1
  60. package/dist/streamStateView_UserMetadata.js +1 -0
  61. package/dist/streamStateView_UserMetadata.js.map +1 -1
  62. package/dist/streamStateView_UserSettings.d.ts.map +1 -1
  63. package/dist/streamStateView_UserSettings.js +9 -1
  64. package/dist/streamStateView_UserSettings.js.map +1 -1
  65. package/dist/streamUtils.d.ts.map +1 -1
  66. package/dist/streamUtils.js +0 -8
  67. package/dist/streamUtils.js.map +1 -1
  68. package/dist/sync/SyncedStreamsControllerLite.d.ts.map +1 -1
  69. package/dist/sync/SyncedStreamsControllerLite.js +7 -11
  70. package/dist/sync/SyncedStreamsControllerLite.js.map +1 -1
  71. package/dist/sync-agent/db.d.ts +1 -6
  72. package/dist/sync-agent/db.d.ts.map +1 -1
  73. package/dist/sync-agent/db.js +0 -10
  74. package/dist/sync-agent/db.js.map +1 -1
  75. package/dist/sync-agent/gdms/gdms.d.ts +5 -6
  76. package/dist/sync-agent/gdms/gdms.d.ts.map +1 -1
  77. package/dist/sync-agent/gdms/gdms.js +12 -27
  78. package/dist/sync-agent/gdms/gdms.js.map +1 -1
  79. package/dist/sync-agent/gdms/models/gdm.d.ts +10 -8
  80. package/dist/sync-agent/gdms/models/gdm.d.ts.map +1 -1
  81. package/dist/sync-agent/gdms/models/gdm.js +29 -34
  82. package/dist/sync-agent/gdms/models/gdm.js.map +1 -1
  83. package/dist/sync-agent/members/members.d.ts +6 -18
  84. package/dist/sync-agent/members/members.d.ts.map +1 -1
  85. package/dist/sync-agent/members/members.js +25 -124
  86. package/dist/sync-agent/members/members.js.map +1 -1
  87. package/dist/sync-agent/members/models/member.d.ts +3 -45
  88. package/dist/sync-agent/members/models/member.d.ts.map +1 -1
  89. package/dist/sync-agent/members/models/member.js +15 -114
  90. package/dist/sync-agent/members/models/member.js.map +1 -1
  91. package/dist/sync-agent/members/models/myself.d.ts +1 -11
  92. package/dist/sync-agent/members/models/myself.d.ts.map +1 -1
  93. package/dist/sync-agent/members/models/myself.js +1 -84
  94. package/dist/sync-agent/members/models/myself.js.map +1 -1
  95. package/dist/sync-agent/river-connection/riverConnection.d.ts +6 -17
  96. package/dist/sync-agent/river-connection/riverConnection.d.ts.map +1 -1
  97. package/dist/sync-agent/river-connection/riverConnection.js +30 -37
  98. package/dist/sync-agent/river-connection/riverConnection.js.map +1 -1
  99. package/dist/sync-agent/syncAgent.d.ts +11 -22
  100. package/dist/sync-agent/syncAgent.d.ts.map +1 -1
  101. package/dist/sync-agent/syncAgent.js +3 -20
  102. package/dist/sync-agent/syncAgent.js.map +1 -1
  103. package/dist/sync-agent/user/models/userInbox.d.ts +4 -17
  104. package/dist/sync-agent/user/models/userInbox.d.ts.map +1 -1
  105. package/dist/sync-agent/user/models/userInbox.js +14 -61
  106. package/dist/sync-agent/user/models/userInbox.js.map +1 -1
  107. package/dist/sync-agent/user/models/userMemberships.d.ts +6 -22
  108. package/dist/sync-agent/user/models/userMemberships.d.ts.map +1 -1
  109. package/dist/sync-agent/user/models/userMemberships.js +16 -68
  110. package/dist/sync-agent/user/models/userMemberships.js.map +1 -1
  111. package/dist/sync-agent/user/models/userMetadata.d.ts +4 -17
  112. package/dist/sync-agent/user/models/userMetadata.d.ts.map +1 -1
  113. package/dist/sync-agent/user/models/userMetadata.js +14 -61
  114. package/dist/sync-agent/user/models/userMetadata.js.map +1 -1
  115. package/dist/sync-agent/user/models/userSettings.d.ts +5 -8
  116. package/dist/sync-agent/user/models/userSettings.d.ts.map +1 -1
  117. package/dist/sync-agent/user/models/userSettings.js +15 -42
  118. package/dist/sync-agent/user/models/userSettings.js.map +1 -1
  119. package/dist/sync-agent/user/user.d.ts +2 -6
  120. package/dist/sync-agent/user/user.d.ts.map +1 -1
  121. package/dist/sync-agent/user/user.js +9 -20
  122. package/dist/sync-agent/user/user.js.map +1 -1
  123. package/dist/syncedStreamsExtension.d.ts.map +1 -1
  124. package/dist/syncedStreamsExtension.js +10 -22
  125. package/dist/syncedStreamsExtension.js.map +1 -1
  126. package/dist/syncedStreamsLoop.d.ts.map +1 -1
  127. package/dist/syncedStreamsLoop.js +4 -18
  128. package/dist/syncedStreamsLoop.js.map +1 -1
  129. package/dist/tests/bob_testUtils.d.ts.map +1 -1
  130. package/dist/tests/bob_testUtils.js +35 -69
  131. package/dist/tests/bob_testUtils.js.map +1 -1
  132. package/dist/tests/multi_ne/aliceAndFriends10for10.test.js +1 -1
  133. package/dist/tests/multi_ne/aliceAndFriends10for10.test.js.map +1 -1
  134. package/dist/tests/multi_ne/aliceAndFriendslongAndRandom.test.js +1 -1
  135. package/dist/tests/multi_ne/aliceAndFriendslongAndRandom.test.js.map +1 -1
  136. package/dist/tests/multi_ne/bobFlushes.test.js.map +1 -1
  137. package/dist/tests/multi_ne/channels.test.js +6 -9
  138. package/dist/tests/multi_ne/channels.test.js.map +1 -1
  139. package/dist/tests/multi_ne/client.test.js +24 -98
  140. package/dist/tests/multi_ne/client.test.js.map +1 -1
  141. package/dist/tests/multi_ne/clientCrypto.test.js +3 -3
  142. package/dist/tests/multi_ne/clientCrypto.test.js.map +1 -1
  143. package/dist/tests/multi_ne/clientDecryptionExtensions.test.js +12 -47
  144. package/dist/tests/multi_ne/clientDecryptionExtensions.test.js.map +1 -1
  145. package/dist/tests/multi_ne/ephemeralEvents.test.js +1 -1
  146. package/dist/tests/multi_ne/ephemeralEvents.test.js.map +1 -1
  147. package/dist/tests/multi_ne/id.test.js +6 -20
  148. package/dist/tests/multi_ne/id.test.js.map +1 -1
  149. package/dist/tests/multi_ne/media.test.js +20 -61
  150. package/dist/tests/multi_ne/media.test.js.map +1 -1
  151. package/dist/tests/multi_ne/memberMetadata.test.d.ts +0 -3
  152. package/dist/tests/multi_ne/memberMetadata.test.d.ts.map +1 -1
  153. package/dist/tests/multi_ne/memberMetadata.test.js +14 -582
  154. package/dist/tests/multi_ne/memberMetadata.test.js.map +1 -1
  155. package/dist/tests/multi_ne/outboundGroupSession.test.js +15 -13
  156. package/dist/tests/multi_ne/outboundGroupSession.test.js.map +1 -1
  157. package/dist/tests/multi_ne/restart.test.js +11 -34
  158. package/dist/tests/multi_ne/restart.test.js.map +1 -1
  159. package/dist/tests/multi_ne/sign.test.js +2 -2
  160. package/dist/tests/multi_ne/sign.test.js.map +1 -1
  161. package/dist/tests/multi_ne/streamMembershipHardening.test.js +0 -3
  162. package/dist/tests/multi_ne/streamMembershipHardening.test.js.map +1 -1
  163. package/dist/tests/multi_ne/streamRpcClient.test.js +58 -349
  164. package/dist/tests/multi_ne/streamRpcClient.test.js.map +1 -1
  165. package/dist/tests/multi_ne/streamRpcClientSync.test.js +63 -124
  166. package/dist/tests/multi_ne/streamRpcClientSync.test.js.map +1 -1
  167. package/dist/tests/multi_ne/streamStateView_User.test.js +23 -20
  168. package/dist/tests/multi_ne/streamStateView_User.test.js.map +1 -1
  169. package/dist/tests/{multi/spaceDapp.test.d.ts → multi_ne/sync-agent/gdms.test.d.ts} +1 -1
  170. package/dist/tests/multi_ne/sync-agent/gdms.test.d.ts.map +1 -0
  171. package/dist/tests/multi_ne/sync-agent/gdms.test.js +34 -0
  172. package/dist/tests/multi_ne/sync-agent/gdms.test.js.map +1 -0
  173. package/dist/tests/{multi/legacySpace.test.d.ts → multi_ne/sync-agent/member.test.d.ts} +1 -1
  174. package/dist/tests/multi_ne/sync-agent/member.test.d.ts.map +1 -0
  175. package/dist/tests/multi_ne/sync-agent/member.test.js +31 -0
  176. package/dist/tests/multi_ne/sync-agent/member.test.js.map +1 -0
  177. package/dist/tests/{multi/disableSpace.test.d.ts → multi_ne/sync-agent/members.test.d.ts} +1 -1
  178. package/dist/tests/multi_ne/sync-agent/members.test.d.ts.map +1 -0
  179. package/dist/tests/multi_ne/sync-agent/members.test.js +40 -0
  180. package/dist/tests/multi_ne/sync-agent/members.test.js.map +1 -0
  181. package/dist/tests/multi_ne/sync-agent/riverConnection.test.d.ts +5 -0
  182. package/dist/tests/multi_ne/sync-agent/riverConnection.test.d.ts.map +1 -0
  183. package/dist/tests/multi_ne/sync-agent/riverConnection.test.js +39 -0
  184. package/dist/tests/multi_ne/sync-agent/riverConnection.test.js.map +1 -0
  185. package/dist/tests/multi_ne/sync-agent/streams.test.d.ts +5 -0
  186. package/dist/tests/multi_ne/sync-agent/streams.test.d.ts.map +1 -0
  187. package/dist/tests/multi_ne/sync-agent/streams.test.js +27 -0
  188. package/dist/tests/multi_ne/sync-agent/streams.test.js.map +1 -0
  189. package/dist/tests/multi_ne/sync-agent/syncAgent.test.d.ts +5 -0
  190. package/dist/tests/multi_ne/sync-agent/syncAgent.test.d.ts.map +1 -0
  191. package/dist/tests/multi_ne/sync-agent/syncAgent.test.js +66 -0
  192. package/dist/tests/multi_ne/sync-agent/syncAgent.test.js.map +1 -0
  193. package/dist/tests/multi_ne/sync-agent/syncAgents.test.d.ts +5 -0
  194. package/dist/tests/multi_ne/sync-agent/syncAgents.test.d.ts.map +1 -0
  195. package/dist/tests/multi_ne/sync-agent/syncAgents.test.js +117 -0
  196. package/dist/tests/multi_ne/sync-agent/syncAgents.test.js.map +1 -0
  197. package/dist/tests/multi_ne/sync-agent/timeline.test.d.ts +2 -0
  198. package/dist/tests/multi_ne/sync-agent/timeline.test.d.ts.map +1 -0
  199. package/dist/tests/multi_ne/sync-agent/timeline.test.js +155 -0
  200. package/dist/tests/multi_ne/sync-agent/timeline.test.js.map +1 -0
  201. package/dist/tests/multi_ne/sync-agent/user.test.d.ts +5 -0
  202. package/dist/tests/multi_ne/sync-agent/user.test.d.ts.map +1 -0
  203. package/dist/tests/multi_ne/sync-agent/user.test.js +53 -0
  204. package/dist/tests/multi_ne/sync-agent/user.test.js.map +1 -0
  205. package/dist/tests/multi_ne/syncWithBlocks.test.d.ts +3 -0
  206. package/dist/tests/multi_ne/syncWithBlocks.test.d.ts.map +1 -1
  207. package/dist/tests/multi_ne/syncWithBlocks.test.js +47 -77
  208. package/dist/tests/multi_ne/syncWithBlocks.test.js.map +1 -1
  209. package/dist/tests/multi_ne/syncedStream.test.js +1 -1
  210. package/dist/tests/multi_ne/syncedStream.test.js.map +1 -1
  211. package/dist/tests/multi_ne/syncedStreams.test.js +1 -1
  212. package/dist/tests/multi_ne/syncedStreams.test.js.map +1 -1
  213. package/dist/tests/multi_ne/userInboxMessage.test.js +4 -4
  214. package/dist/tests/multi_ne/userInboxMessage.test.js.map +1 -1
  215. package/dist/tests/multi_ne/userSettings.test.js +3 -16
  216. package/dist/tests/multi_ne/userSettings.test.js.map +1 -1
  217. package/dist/tests/multi_ne/workflows.test.js +22 -50
  218. package/dist/tests/multi_ne/workflows.test.js.map +1 -1
  219. package/dist/tests/testDriver_testUtils.d.ts.map +1 -1
  220. package/dist/tests/testDriver_testUtils.js +6 -22
  221. package/dist/tests/testDriver_testUtils.js.map +1 -1
  222. package/dist/tests/testUtils.d.ts +3 -104
  223. package/dist/tests/testUtils.d.ts.map +1 -1
  224. package/dist/tests/testUtils.js +6 -625
  225. package/dist/tests/testUtils.js.map +1 -1
  226. package/dist/tests/unit/snapshotMigration0001.test.js +4 -20
  227. package/dist/tests/unit/snapshotMigration0001.test.js.map +1 -1
  228. package/dist/tests/unit/snapshotMigration0004.test.js +5 -43
  229. package/dist/tests/unit/snapshotMigration0004.test.js.map +1 -1
  230. package/dist/tests/unit/snapshotMigration0005.test.js +5 -43
  231. package/dist/tests/unit/snapshotMigration0005.test.js.map +1 -1
  232. package/dist/tests/unit/streamUtils.test.js +21 -22
  233. package/dist/tests/unit/streamUtils.test.js.map +1 -1
  234. package/dist/tests/unit/tags.test.js +5 -7
  235. package/dist/tests/unit/tags.test.js.map +1 -1
  236. package/dist/types.d.ts +1 -21
  237. package/dist/types.d.ts.map +1 -1
  238. package/dist/types.js +2 -231
  239. package/dist/types.js.map +1 -1
  240. package/dist/views/models/timelineEvent.d.ts.map +1 -1
  241. package/dist/views/models/timelineEvent.js +132 -157
  242. package/dist/views/models/timelineEvent.js.map +1 -1
  243. package/dist/views/models/timelineTypes.d.ts +51 -30
  244. package/dist/views/models/timelineTypes.d.ts.map +1 -1
  245. package/dist/views/models/timelineTypes.js +3 -4
  246. package/dist/views/models/timelineTypes.js.map +1 -1
  247. package/dist/views/streams/timelines.d.ts +1 -1
  248. package/dist/views/streams/timelines.d.ts.map +1 -1
  249. package/dist/views/streams/timelines.js +3 -3
  250. package/dist/views/streams/timelines.js.map +1 -1
  251. package/dist/views/streams/userInboxStreams.d.ts +3 -0
  252. package/dist/views/streams/userInboxStreams.d.ts.map +1 -1
  253. package/dist/views/streams/userInboxStreams.js +15 -4
  254. package/dist/views/streams/userInboxStreams.js.map +1 -1
  255. package/dist/views/streams/userMetadataStreams.d.ts +3 -0
  256. package/dist/views/streams/userMetadataStreams.d.ts.map +1 -1
  257. package/dist/views/streams/userMetadataStreams.js +15 -4
  258. package/dist/views/streams/userMetadataStreams.js.map +1 -1
  259. package/dist/views/streams/userSettingsStreams.d.ts +3 -0
  260. package/dist/views/streams/userSettingsStreams.d.ts.map +1 -1
  261. package/dist/views/streams/userSettingsStreams.js +17 -6
  262. package/dist/views/streams/userSettingsStreams.js.map +1 -1
  263. package/dist/views/streams/userStreamsView.d.ts +3 -0
  264. package/dist/views/streams/userStreamsView.d.ts.map +1 -1
  265. package/dist/views/streams/userStreamsView.js +21 -10
  266. package/dist/views/streams/userStreamsView.js.map +1 -1
  267. package/dist/views/streamsView.d.ts +0 -6
  268. package/dist/views/streamsView.d.ts.map +1 -1
  269. package/dist/views/streamsView.js +0 -11
  270. package/dist/views/streamsView.js.map +1 -1
  271. package/dist/views/transforms/dmsAndGdmsTransform.d.ts +0 -2
  272. package/dist/views/transforms/dmsAndGdmsTransform.d.ts.map +1 -1
  273. package/dist/views/transforms/dmsAndGdmsTransform.js +1 -26
  274. package/dist/views/transforms/dmsAndGdmsTransform.js.map +1 -1
  275. package/dist/views/transforms/dmsAndGdmsUnreadIdsTransform.d.ts +1 -2
  276. package/dist/views/transforms/dmsAndGdmsUnreadIdsTransform.d.ts.map +1 -1
  277. package/dist/views/transforms/dmsAndGdmsUnreadIdsTransform.js +2 -5
  278. package/dist/views/transforms/dmsAndGdmsUnreadIdsTransform.js.map +1 -1
  279. package/dist/views/transforms/spaceIdsTransform.d.ts +1 -1
  280. package/dist/views/transforms/spaceIdsTransform.d.ts.map +1 -1
  281. package/dist/views/transforms/spaceIdsTransform.js +3 -10
  282. package/dist/views/transforms/spaceIdsTransform.js.map +1 -1
  283. package/dist/views/transforms/spaceMentionsTransform.d.ts.map +1 -1
  284. package/dist/views/transforms/spaceMentionsTransform.js +13 -14
  285. package/dist/views/transforms/spaceMentionsTransform.js.map +1 -1
  286. package/dist/views/transforms/spaceUnreadsTransform.d.ts.map +1 -1
  287. package/dist/views/transforms/spaceUnreadsTransform.js +21 -22
  288. package/dist/views/transforms/spaceUnreadsTransform.js.map +1 -1
  289. package/dist/views/transforms/unreadMarkersTransform.js +2 -4
  290. package/dist/views/transforms/unreadMarkersTransform.js.map +1 -1
  291. package/package.json +10 -9
  292. package/dist/memberMetadata_DisplayNames.d.ts +0 -26
  293. package/dist/memberMetadata_DisplayNames.d.ts.map +0 -1
  294. package/dist/memberMetadata_DisplayNames.js +0 -95
  295. package/dist/memberMetadata_DisplayNames.js.map +0 -1
  296. package/dist/memberMetadata_EnsAddresses.d.ts +0 -25
  297. package/dist/memberMetadata_EnsAddresses.d.ts.map +0 -1
  298. package/dist/memberMetadata_EnsAddresses.js +0 -86
  299. package/dist/memberMetadata_EnsAddresses.js.map +0 -1
  300. package/dist/memberMetadata_Nft.d.ts +0 -31
  301. package/dist/memberMetadata_Nft.d.ts.map +0 -1
  302. package/dist/memberMetadata_Nft.js +0 -95
  303. package/dist/memberMetadata_Nft.js.map +0 -1
  304. package/dist/memberMetadata_Usernames.d.ts +0 -35
  305. package/dist/memberMetadata_Usernames.d.ts.map +0 -1
  306. package/dist/memberMetadata_Usernames.js +0 -162
  307. package/dist/memberMetadata_Usernames.js.map +0 -1
  308. package/dist/streamStateView_Channel.d.ts +0 -16
  309. package/dist/streamStateView_Channel.d.ts.map +0 -1
  310. package/dist/streamStateView_Channel.js +0 -76
  311. package/dist/streamStateView_Channel.js.map +0 -1
  312. package/dist/streamStateView_DMChannel.d.ts +0 -25
  313. package/dist/streamStateView_DMChannel.d.ts.map +0 -1
  314. package/dist/streamStateView_DMChannel.js +0 -114
  315. package/dist/streamStateView_DMChannel.js.map +0 -1
  316. package/dist/streamStateView_Space.d.ts +0 -31
  317. package/dist/streamStateView_Space.d.ts.map +0 -1
  318. package/dist/streamStateView_Space.js +0 -193
  319. package/dist/streamStateView_Space.js.map +0 -1
  320. package/dist/sync-agent/dms/dms.d.ts +0 -24
  321. package/dist/sync-agent/dms/dms.d.ts.map +0 -1
  322. package/dist/sync-agent/dms/dms.js +0 -60
  323. package/dist/sync-agent/dms/dms.js.map +0 -1
  324. package/dist/sync-agent/dms/models/dm.d.ts +0 -74
  325. package/dist/sync-agent/dms/models/dm.d.ts.map +0 -1
  326. package/dist/sync-agent/dms/models/dm.js +0 -149
  327. package/dist/sync-agent/dms/models/dm.js.map +0 -1
  328. package/dist/sync-agent/river-connection/models/transactionalClient.d.ts +0 -11
  329. package/dist/sync-agent/river-connection/models/transactionalClient.d.ts.map +0 -1
  330. package/dist/sync-agent/river-connection/models/transactionalClient.js +0 -14
  331. package/dist/sync-agent/river-connection/models/transactionalClient.js.map +0 -1
  332. package/dist/sync-agent/spaces/models/channel.d.ts +0 -121
  333. package/dist/sync-agent/spaces/models/channel.d.ts.map +0 -1
  334. package/dist/sync-agent/spaces/models/channel.js +0 -182
  335. package/dist/sync-agent/spaces/models/channel.js.map +0 -1
  336. package/dist/sync-agent/spaces/models/space.d.ts +0 -57
  337. package/dist/sync-agent/spaces/models/space.d.ts.map +0 -1
  338. package/dist/sync-agent/spaces/models/space.js +0 -125
  339. package/dist/sync-agent/spaces/models/space.js.map +0 -1
  340. package/dist/sync-agent/spaces/spaces.d.ts +0 -28
  341. package/dist/sync-agent/spaces/spaces.d.ts.map +0 -1
  342. package/dist/sync-agent/spaces/spaces.js +0 -71
  343. package/dist/sync-agent/spaces/spaces.js.map +0 -1
  344. package/dist/tests/multi/channelSpaceSettings.test.d.ts +0 -5
  345. package/dist/tests/multi/channelSpaceSettings.test.d.ts.map +0 -1
  346. package/dist/tests/multi/channelSpaceSettings.test.js +0 -204
  347. package/dist/tests/multi/channelSpaceSettings.test.js.map +0 -1
  348. package/dist/tests/multi/disableChannel.test.d.ts +0 -5
  349. package/dist/tests/multi/disableChannel.test.d.ts.map +0 -1
  350. package/dist/tests/multi/disableChannel.test.js +0 -30
  351. package/dist/tests/multi/disableChannel.test.js.map +0 -1
  352. package/dist/tests/multi/disableSpace.test.d.ts.map +0 -1
  353. package/dist/tests/multi/disableSpace.test.js +0 -37
  354. package/dist/tests/multi/disableSpace.test.js.map +0 -1
  355. package/dist/tests/multi/entitlements/channelEntitlementPermissions.test.d.ts +0 -5
  356. package/dist/tests/multi/entitlements/channelEntitlementPermissions.test.d.ts.map +0 -1
  357. package/dist/tests/multi/entitlements/channelEntitlementPermissions.test.js +0 -129
  358. package/dist/tests/multi/entitlements/channelEntitlementPermissions.test.js.map +0 -1
  359. package/dist/tests/multi/entitlements/channelWithThreeNestedEntitlement.test.d.ts +0 -5
  360. package/dist/tests/multi/entitlements/channelWithThreeNestedEntitlement.test.d.ts.map +0 -1
  361. package/dist/tests/multi/entitlements/channelWithThreeNestedEntitlement.test.js +0 -44
  362. package/dist/tests/multi/entitlements/channelWithThreeNestedEntitlement.test.js.map +0 -1
  363. package/dist/tests/multi/entitlements/channelsWithComplexEntitlements.test.d.ts +0 -5
  364. package/dist/tests/multi/entitlements/channelsWithComplexEntitlements.test.d.ts.map +0 -1
  365. package/dist/tests/multi/entitlements/channelsWithComplexEntitlements.test.js +0 -125
  366. package/dist/tests/multi/entitlements/channelsWithComplexEntitlements.test.js.map +0 -1
  367. package/dist/tests/multi/entitlements/channelsWithEntitlementLoss.test.d.ts +0 -5
  368. package/dist/tests/multi/entitlements/channelsWithEntitlementLoss.test.d.ts.map +0 -1
  369. package/dist/tests/multi/entitlements/channelsWithEntitlementLoss.test.js +0 -72
  370. package/dist/tests/multi/entitlements/channelsWithEntitlementLoss.test.js.map +0 -1
  371. package/dist/tests/multi/entitlements/channelsWithEntitlements.test.d.ts +0 -5
  372. package/dist/tests/multi/entitlements/channelsWithEntitlements.test.d.ts.map +0 -1
  373. package/dist/tests/multi/entitlements/channelsWithEntitlements.test.js +0 -57
  374. package/dist/tests/multi/entitlements/channelsWithEntitlements.test.js.map +0 -1
  375. package/dist/tests/multi/entitlements/channelsWithErc20Entitlements.test.d.ts +0 -5
  376. package/dist/tests/multi/entitlements/channelsWithErc20Entitlements.test.d.ts.map +0 -1
  377. package/dist/tests/multi/entitlements/channelsWithErc20Entitlements.test.js +0 -86
  378. package/dist/tests/multi/entitlements/channelsWithErc20Entitlements.test.js.map +0 -1
  379. package/dist/tests/multi/entitlements/channelsWithErc721Entitlements.test.d.ts +0 -5
  380. package/dist/tests/multi/entitlements/channelsWithErc721Entitlements.test.d.ts.map +0 -1
  381. package/dist/tests/multi/entitlements/channelsWithErc721Entitlements.test.js +0 -69
  382. package/dist/tests/multi/entitlements/channelsWithErc721Entitlements.test.js.map +0 -1
  383. package/dist/tests/multi/entitlements/channelsWithEthBalanceEntitlements.test.d.ts +0 -5
  384. package/dist/tests/multi/entitlements/channelsWithEthBalanceEntitlements.test.d.ts.map +0 -1
  385. package/dist/tests/multi/entitlements/channelsWithEthBalanceEntitlements.test.js +0 -145
  386. package/dist/tests/multi/entitlements/channelsWithEthBalanceEntitlements.test.js.map +0 -1
  387. package/dist/tests/multi/entitlements/channelsWithUserEntitlements.test.d.ts +0 -5
  388. package/dist/tests/multi/entitlements/channelsWithUserEntitlements.test.d.ts.map +0 -1
  389. package/dist/tests/multi/entitlements/channelsWithUserEntitlements.test.js +0 -53
  390. package/dist/tests/multi/entitlements/channelsWithUserEntitlements.test.js.map +0 -1
  391. package/dist/tests/multi/entitlements/membershipRenewals.test.d.ts +0 -5
  392. package/dist/tests/multi/entitlements/membershipRenewals.test.d.ts.map +0 -1
  393. package/dist/tests/multi/entitlements/membershipRenewals.test.js +0 -150
  394. package/dist/tests/multi/entitlements/membershipRenewals.test.js.map +0 -1
  395. package/dist/tests/multi/entitlements/spaceWithComplexEntitlements.test.d.ts +0 -5
  396. package/dist/tests/multi/entitlements/spaceWithComplexEntitlements.test.d.ts.map +0 -1
  397. package/dist/tests/multi/entitlements/spaceWithComplexEntitlements.test.js +0 -131
  398. package/dist/tests/multi/entitlements/spaceWithComplexEntitlements.test.js.map +0 -1
  399. package/dist/tests/multi/entitlements/spaceWithEntitlements.test.d.ts +0 -5
  400. package/dist/tests/multi/entitlements/spaceWithEntitlements.test.d.ts.map +0 -1
  401. package/dist/tests/multi/entitlements/spaceWithEntitlements.test.js +0 -109
  402. package/dist/tests/multi/entitlements/spaceWithEntitlements.test.js.map +0 -1
  403. package/dist/tests/multi/entitlements/spaceWithErc20Entitlements.test.d.ts +0 -5
  404. package/dist/tests/multi/entitlements/spaceWithErc20Entitlements.test.d.ts.map +0 -1
  405. package/dist/tests/multi/entitlements/spaceWithErc20Entitlements.test.js +0 -103
  406. package/dist/tests/multi/entitlements/spaceWithErc20Entitlements.test.js.map +0 -1
  407. package/dist/tests/multi/entitlements/spaceWithErc721Entitlements.test.d.ts +0 -5
  408. package/dist/tests/multi/entitlements/spaceWithErc721Entitlements.test.d.ts.map +0 -1
  409. package/dist/tests/multi/entitlements/spaceWithErc721Entitlements.test.js +0 -84
  410. package/dist/tests/multi/entitlements/spaceWithErc721Entitlements.test.js.map +0 -1
  411. package/dist/tests/multi/entitlements/spaceWithEthBalanceEntitlements.test.d.ts +0 -5
  412. package/dist/tests/multi/entitlements/spaceWithEthBalanceEntitlements.test.d.ts.map +0 -1
  413. package/dist/tests/multi/entitlements/spaceWithEthBalanceEntitlements.test.js +0 -168
  414. package/dist/tests/multi/entitlements/spaceWithEthBalanceEntitlements.test.js.map +0 -1
  415. package/dist/tests/multi/entitlements/spaceWithThreeNestedEntitlement.test.d.ts +0 -5
  416. package/dist/tests/multi/entitlements/spaceWithThreeNestedEntitlement.test.d.ts.map +0 -1
  417. package/dist/tests/multi/entitlements/spaceWithThreeNestedEntitlement.test.js +0 -45
  418. package/dist/tests/multi/entitlements/spaceWithThreeNestedEntitlement.test.js.map +0 -1
  419. package/dist/tests/multi/entitlements/spaceWithUserEntitlements.test.d.ts +0 -5
  420. package/dist/tests/multi/entitlements/spaceWithUserEntitlements.test.d.ts.map +0 -1
  421. package/dist/tests/multi/entitlements/spaceWithUserEntitlements.test.js +0 -79
  422. package/dist/tests/multi/entitlements/spaceWithUserEntitlements.test.js.map +0 -1
  423. package/dist/tests/multi/legacySpace.test.d.ts.map +0 -1
  424. package/dist/tests/multi/legacySpace.test.js +0 -48
  425. package/dist/tests/multi/legacySpace.test.js.map +0 -1
  426. package/dist/tests/multi/mediaWithEntitlements.test.d.ts +0 -5
  427. package/dist/tests/multi/mediaWithEntitlements.test.d.ts.map +0 -1
  428. package/dist/tests/multi/mediaWithEntitlements.test.js +0 -152
  429. package/dist/tests/multi/mediaWithEntitlements.test.js.map +0 -1
  430. package/dist/tests/multi/membershipManagement.test.d.ts +0 -5
  431. package/dist/tests/multi/membershipManagement.test.d.ts.map +0 -1
  432. package/dist/tests/multi/membershipManagement.test.js +0 -76
  433. package/dist/tests/multi/membershipManagement.test.js.map +0 -1
  434. package/dist/tests/multi/riverAirdropDapp.test.d.ts +0 -5
  435. package/dist/tests/multi/riverAirdropDapp.test.d.ts.map +0 -1
  436. package/dist/tests/multi/riverAirdropDapp.test.js +0 -43
  437. package/dist/tests/multi/riverAirdropDapp.test.js.map +0 -1
  438. package/dist/tests/multi/spaceDapp.test.d.ts.map +0 -1
  439. package/dist/tests/multi/spaceDapp.test.js +0 -61
  440. package/dist/tests/multi/spaceDapp.test.js.map +0 -1
  441. package/dist/tests/multi/spaceWithVariousPriceConfigurations.test.d.ts +0 -2
  442. package/dist/tests/multi/spaceWithVariousPriceConfigurations.test.d.ts.map +0 -1
  443. package/dist/tests/multi/spaceWithVariousPriceConfigurations.test.js +0 -63
  444. package/dist/tests/multi/spaceWithVariousPriceConfigurations.test.js.map +0 -1
  445. package/dist/tests/multi/withEntitlements.test.d.ts +0 -5
  446. package/dist/tests/multi/withEntitlements.test.d.ts.map +0 -1
  447. package/dist/tests/multi/withEntitlements.test.js +0 -125
  448. package/dist/tests/multi/withEntitlements.test.js.map +0 -1
  449. package/dist/tests/multi_ne/dms.test.d.ts +0 -5
  450. package/dist/tests/multi_ne/dms.test.d.ts.map +0 -1
  451. package/dist/tests/multi_ne/dms.test.js +0 -131
  452. package/dist/tests/multi_ne/dms.test.js.map +0 -1
  453. package/dist/tests/multi_ne/memberMetadata_DisplayNames.test.d.ts +0 -5
  454. package/dist/tests/multi_ne/memberMetadata_DisplayNames.test.d.ts.map +0 -1
  455. package/dist/tests/multi_ne/memberMetadata_DisplayNames.test.js +0 -54
  456. package/dist/tests/multi_ne/memberMetadata_DisplayNames.test.js.map +0 -1
  457. package/dist/tests/multi_ne/memberMetadata_EnsAddresses.test.d.ts +0 -5
  458. package/dist/tests/multi_ne/memberMetadata_EnsAddresses.test.d.ts.map +0 -1
  459. package/dist/tests/multi_ne/memberMetadata_EnsAddresses.test.js +0 -37
  460. package/dist/tests/multi_ne/memberMetadata_EnsAddresses.test.js.map +0 -1
  461. package/dist/tests/multi_ne/memberMetadata_Nft.test.d.ts +0 -5
  462. package/dist/tests/multi_ne/memberMetadata_Nft.test.d.ts.map +0 -1
  463. package/dist/tests/multi_ne/memberMetadata_Nft.test.js +0 -49
  464. package/dist/tests/multi_ne/memberMetadata_Nft.test.js.map +0 -1
  465. package/dist/tests/multi_ne/memberMetadata_Usernames.test.d.ts +0 -5
  466. package/dist/tests/multi_ne/memberMetadata_Usernames.test.d.ts.map +0 -1
  467. package/dist/tests/multi_ne/memberMetadata_Usernames.test.js +0 -126
  468. package/dist/tests/multi_ne/memberMetadata_Usernames.test.js.map +0 -1
  469. package/dist/tests/multi_ne/space.test.d.ts +0 -5
  470. package/dist/tests/multi_ne/space.test.d.ts.map +0 -1
  471. package/dist/tests/multi_ne/space.test.js +0 -284
  472. package/dist/tests/multi_ne/space.test.js.map +0 -1
  473. package/dist/tests/multi_v2/entitlements/channelsWithCrossChainEntitlements.test.d.ts +0 -6
  474. package/dist/tests/multi_v2/entitlements/channelsWithCrossChainEntitlements.test.d.ts.map +0 -1
  475. package/dist/tests/multi_v2/entitlements/channelsWithCrossChainEntitlements.test.js +0 -78
  476. package/dist/tests/multi_v2/entitlements/channelsWithCrossChainEntitlements.test.js.map +0 -1
  477. package/dist/tests/multi_v2/entitlements/channelsWithErc1155Entitlement.test.d.ts +0 -6
  478. package/dist/tests/multi_v2/entitlements/channelsWithErc1155Entitlement.test.d.ts.map +0 -1
  479. package/dist/tests/multi_v2/entitlements/channelsWithErc1155Entitlement.test.js +0 -89
  480. package/dist/tests/multi_v2/entitlements/channelsWithErc1155Entitlement.test.js.map +0 -1
  481. package/dist/tests/multi_v2/entitlements/spaceWithCrossChainEntitlements.test.d.ts +0 -6
  482. package/dist/tests/multi_v2/entitlements/spaceWithCrossChainEntitlements.test.d.ts.map +0 -1
  483. package/dist/tests/multi_v2/entitlements/spaceWithCrossChainEntitlements.test.js +0 -88
  484. package/dist/tests/multi_v2/entitlements/spaceWithCrossChainEntitlements.test.js.map +0 -1
  485. package/dist/tests/multi_v2/entitlements/spaceWithErc1155Entitlements.test.d.ts +0 -6
  486. package/dist/tests/multi_v2/entitlements/spaceWithErc1155Entitlements.test.d.ts.map +0 -1
  487. package/dist/tests/multi_v2/entitlements/spaceWithErc1155Entitlements.test.js +0 -105
  488. package/dist/tests/multi_v2/entitlements/spaceWithErc1155Entitlements.test.js.map +0 -1
  489. package/dist/tests/multi_v2/updateRole.test.d.ts +0 -5
  490. package/dist/tests/multi_v2/updateRole.test.d.ts.map +0 -1
  491. package/dist/tests/multi_v2/updateRole.test.js +0 -25
  492. package/dist/tests/multi_v2/updateRole.test.js.map +0 -1
  493. package/dist/tests/unit/snapshotMigration0002.test.d.ts +0 -2
  494. package/dist/tests/unit/snapshotMigration0002.test.d.ts.map +0 -1
  495. package/dist/tests/unit/snapshotMigration0002.test.js +0 -31
  496. package/dist/tests/unit/snapshotMigration0002.test.js.map +0 -1
  497. package/dist/views/streams/channelStreams.d.ts +0 -8
  498. package/dist/views/streams/channelStreams.d.ts.map +0 -1
  499. package/dist/views/streams/channelStreams.js +0 -9
  500. package/dist/views/streams/channelStreams.js.map +0 -1
  501. package/dist/views/streams/dmStreams.d.ts +0 -13
  502. package/dist/views/streams/dmStreams.d.ts.map +0 -1
  503. package/dist/views/streams/dmStreams.js +0 -33
  504. package/dist/views/streams/dmStreams.js.map +0 -1
  505. package/dist/views/streams/spaceStreams.d.ts +0 -17
  506. package/dist/views/streams/spaceStreams.d.ts.map +0 -1
  507. package/dist/views/streams/spaceStreams.js +0 -52
  508. package/dist/views/streams/spaceStreams.js.map +0 -1
@@ -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":"AAAA;;GAEG;AAEH,OAAO,EAAE,0BAA0B,EAAE,wBAAwB,EAAE,MAAM,iBAAiB,CAAA;AACtF,OAAO,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAA;AACxC,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAE3D,MAAM,GAAG,GAAG,IAAI,CAAC,wCAAwC,CAAC,CAAA;AAE1D,QAAQ,CAAC,+BAA+B,EAAE,GAAG,EAAE;IAC3C,IAAI,CAAC,8DAA8D,EAAE,KAAK,IAAI,EAAE;QAC5E,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,cAAc,EAAE,OAAO,EAAE,SAAS,EAAE,GAAG,MAAM,0BAA0B,CACvF,CAAC,OAAO,CAAC,EACT,YAAY,CACf,CAAA;QAED,sCAAsC;QACtC,MAAM,wBAAwB,CAAC,KAAK,EAAE,cAAc,EAAE,OAAO,EAAE,SAAU,CAAC,CAAA;QAE1E,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,GAAG,MAAM,GAAG,CAAC,WAAW,CAAC,SAAU,EAAE,eAAe,CAAC,CAAA;QAElF,sCAAsC;QACtC,MAAM,MAAM,CACR,KAAK,CAAC,2BAA2B,CAAC,SAAU,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,CAChF,CAAC,OAAO,CAAC,OAAO,EAAC,0CAA0C,CAAC,CAAA;QAE7D,sCAAsC;QACtC,MAAM,MAAM,CACR,KAAK,CAAC,uBAAuB,CAAC,SAAU,EAAE;YACtC,OAAO,EAAE;gBACL,IAAI,EAAE,eAAe;gBACrB,QAAQ,EAAE,EAAE;gBACZ,WAAW,EAAE,EAAE;aAClB;YACD,QAAQ,EAAE,UAAU,EAAE,yBAAyB;SAClD,CAAC,CACL,CAAC,OAAO,CAAC,OAAO,EAAC,0CAA0C,CAAC,CAAA;QAE7D,8BAA8B;QAC9B,MAAM,MAAM,CACR,KAAK,CAAC,WAAW,CAAC,SAAU,EAAE,eAAe,CAAC,CACjD,CAAC,OAAO,CAAC,OAAO,EAAC,0CAA0C,CAAC,CAAA;QAE7D,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;QAC5B,mBAAmB;QACnB,MAAM,GAAG,CAAC,QAAQ,EAAE,CAAA;QACpB,MAAM,KAAK,CAAC,QAAQ,EAAE,CAAA;QACtB,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC,CAAA;IACvC,CAAC,CAAC,CAAA;IAEF,IAAI,CAAC,yFAAyF,EAAE,KAAK,IAAI,EAAE;QACvG,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,cAAc,EAAE,OAAO,EAAE,SAAS,EAAE,GAAG,MAAM,0BAA0B,CACvF,CAAC,OAAO,CAAC,EACT,YAAY,EACZ,CAAC,UAAU,CAAC,IAAI,EAAE,UAAU,CAAC,KAAK,CAAC,CACtC,CAAA;QAED,sCAAsC;QACtC,MAAM,wBAAwB,CAAC,KAAK,EAAE,cAAc,EAAE,OAAO,EAAE,SAAU,CAAC,CAAA;QAE1E,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,GAAG,MAAM,GAAG,CAAC,WAAW,CAAC,SAAU,EAAE,eAAe,CAAC,CAAA;QAElF,8FAA8F;QAC9F,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,KAAK,CAAC,2BAA2B,CAAC,SAAU,EAAE;YACpE,QAAQ,EAAE,IAAI;YACd,UAAU;SACb,CAAC,CAAA;QACF,MAAM,CAAC,OAAO,CAAC,CAAC,WAAW,EAAE,CAAA;QAC7B,MAAM,MAAM,CACR,KAAK,CAAC,4BAA4B,CAAC,SAAU,EAAE;YAC3C,UAAU,EAAE,OAAO;SACtB,CAAC,CACL,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,EAAE,CAAA;QAExB,mDAAmD;QACnD,MAAM,MAAM,CACR,KAAK,CAAC,uBAAuB,CAAC,SAAU,EAAE;YACtC,OAAO,EAAE;gBACL,IAAI,EAAE,eAAe;gBACrB,QAAQ,EAAE,EAAE;gBACZ,WAAW,EAAE,EAAE;aAClB;YACD,QAAQ,EAAE,UAAU,EAAE,yBAAyB;SAClD,CAAC,CACL,CAAC,OAAO,CAAC,OAAO,EAAC,0CAA0C,CAAC,CAAA;QAE7D,+CAA+C;QAC/C,MAAM,MAAM,CACR,KAAK,CAAC,WAAW,CAAC,SAAU,EAAE,eAAe,CAAC,CACjD,CAAC,OAAO,CAAC,OAAO,EAAC,0CAA0C,CAAC,CAAA;QAE7D,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;QAC5B,mBAAmB;QACnB,MAAM,GAAG,CAAC,QAAQ,EAAE,CAAA;QACpB,MAAM,KAAK,CAAC,QAAQ,EAAE,CAAA;QACtB,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC,CAAA;IACvC,CAAC,CAAC,CAAA;IAEF,8FAA8F;IAC9F,oDAAoD;IACpD,IAAI,CAAC,oDAAoD,EAAE,KAAK,IAAI,EAAE;QAClE,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,cAAc,EAAE,OAAO,EAAE,SAAS,EAAE,GAAG,MAAM,0BAA0B,CACvF,CAAC,OAAO,CAAC,EACT,YAAY,EACZ,CAAC,UAAU,CAAC,IAAI,EAAE,UAAU,CAAC,KAAK,CAAC,CACtC,CAAA;QAED,sCAAsC;QACtC,MAAM,wBAAwB,CAAC,KAAK,EAAE,cAAc,EAAE,OAAO,EAAE,SAAU,CAAC,CAAA;QAE1E,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,GAAG,MAAM,GAAG,CAAC,WAAW,CAAC,SAAU,EAAE,eAAe,CAAC,CAAA;QAElF,8FAA8F;QAC9F,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,KAAK,CAAC,2BAA2B,CAAC,SAAU,EAAE;YACpE,QAAQ,EAAE,IAAI;YACd,UAAU;SACb,CAAC,CAAA;QACF,MAAM,CAAC,OAAO,CAAC,CAAC,WAAW,EAAE,CAAA;QAC7B,MAAM,MAAM,CACR,KAAK,CAAC,4BAA4B,CAAC,SAAU,EAAE;YAC3C,UAAU,EAAE,OAAO;SACtB,CAAC,CACL,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,EAAE,CAAA;QAExB,+CAA+C;QAC/C,MAAM,MAAM,CACR,KAAK,CAAC,uBAAuB,CAAC,SAAU,EAAE;YACtC,OAAO,EAAE;gBACL,IAAI,EAAE,eAAe;gBACrB,QAAQ,EAAE,EAAE;gBACZ,WAAW,EAAE,EAAE;aAClB;YACD,QAAQ,EAAE,UAAU,EAAE,yBAAyB;SAClD,CAAC,CACL,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,EAAE,CAAA;QAExB,oCAAoC;QACpC,MAAM,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,SAAU,EAAE,eAAe,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,EAAE,CAAA;QAEnF,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;QAC5B,mBAAmB;QACnB,MAAM,GAAG,CAAC,QAAQ,EAAE,CAAA;QACpB,MAAM,KAAK,CAAC,QAAQ,EAAE,CAAA;QACtB,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC,CAAA;IACvC,CAAC,CAAC,CAAA;IAEF,IAAI,CAAC,iDAAiD,EAAE,KAAK,IAAI,EAAE;QAC/D,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,cAAc,EAAE,OAAO,EAAE,SAAS,EAAE,GAAG,MAAM,0BAA0B,CACvF,CAAC,OAAO,CAAC,EACT,YAAY,EACZ,CAAC,UAAU,CAAC,IAAI,EAAE,UAAU,CAAC,KAAK,EAAE,UAAU,CAAC,KAAK,CAAC,CACxD,CAAA;QAED,sCAAsC;QACtC,MAAM,wBAAwB,CAAC,KAAK,EAAE,cAAc,EAAE,OAAO,EAAE,SAAU,CAAC,CAAA;QAE1E,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,GAAG,MAAM,GAAG,CAAC,WAAW,CAAC,SAAU,EAAE,eAAe,CAAC,CAAA;QAElF,8FAA8F;QAC9F,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,KAAK,CAAC,2BAA2B,CAAC,SAAU,EAAE;YACpE,QAAQ,EAAE,IAAI;YACd,UAAU;SACb,CAAC,CAAA;QACF,MAAM,CAAC,OAAO,CAAC,CAAC,WAAW,EAAE,CAAA;QAC7B,MAAM,MAAM,CACR,KAAK,CAAC,4BAA4B,CAAC,SAAU,EAAE;YAC3C,UAAU,EAAE,OAAO;SACtB,CAAC,CACL,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,EAAE,CAAA;QAExB,+CAA+C;QAC/C,MAAM,MAAM,CACR,KAAK,CAAC,uBAAuB,CAAC,SAAU,EAAE;YACtC,OAAO,EAAE;gBACL,IAAI,EAAE,eAAe;gBACrB,QAAQ,EAAE,EAAE;gBACZ,WAAW,EAAE,EAAE;aAClB;YACD,QAAQ,EAAE,UAAU,EAAE,yBAAyB;SAClD,CAAC,CACL,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,EAAE,CAAA;QAExB,oCAAoC;QACpC,MAAM,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,SAAU,EAAE,eAAe,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,EAAE,CAAA;QAEnF,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;QAC5B,mBAAmB;QACnB,MAAM,GAAG,CAAC,QAAQ,EAAE,CAAA;QACpB,MAAM,KAAK,CAAC,QAAQ,EAAE,CAAA;QACtB,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC,CAAA;IACvC,CAAC,CAAC,CAAA;AACN,CAAC,CAAC,CAAA"}
@@ -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"}
@@ -1,5 +0,0 @@
1
- /**
2
- * @group with-entitlements
3
- */
4
- export {};
5
- //# sourceMappingURL=channelsWithComplexEntitlements.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"channelsWithComplexEntitlements.test.d.ts","sourceRoot":"","sources":["../../../../src/tests/multi/entitlements/channelsWithComplexEntitlements.test.ts"],"names":[],"mappings":"AAAA;;GAEG"}
@@ -1,125 +0,0 @@
1
- /**
2
- * @group with-entitlements
3
- */
4
- import { getNftRuleData, twoNftRuleData, createRole, createChannel, setupWalletsAndContexts, createSpaceAndDefaultChannel, expectUserCanJoin, everyoneMembershipStruct, linkWallets, setupChannelWithCustomRole, expectUserCanJoinChannel, expectUserCannotJoinChannel, } from '../../testUtils';
5
- import { dlog } from '@towns-labs/utils';
6
- import { Permission, TestERC721, LogicalOperationType, Rules, createRuleStruct, } from '@towns-labs/web3';
7
- const log = dlog('csb:test:channelsWithComplexEntitlements');
8
- describe('channelsWithComplexEntitlements', () => {
9
- test('User who satisfies only one role ruledata requirement can join channel', async () => {
10
- const { alice, bob, alicesWallet, aliceProvider, bobProvider, aliceSpaceDapp, bobSpaceDapp, } = await setupWalletsAndContexts();
11
- const { spaceId, defaultChannelId } = await createSpaceAndDefaultChannel(bob, bobSpaceDapp, bobProvider.wallet, 'bob', await everyoneMembershipStruct(bobSpaceDapp, bob));
12
- await expectUserCanJoin(spaceId, defaultChannelId, 'alice', alice, aliceSpaceDapp, alicesWallet.address, aliceProvider.wallet);
13
- const testNft1Address = await TestERC721.getContractAddress('TestNFT1');
14
- const testNft2Address = await TestERC721.getContractAddress('TestNFT2');
15
- const { roleId: nft1RoleId, error: roleError } = await createRole(bobSpaceDapp, bobProvider, spaceId, 'gated role', [Permission.Read], [], getNftRuleData(testNft1Address), bobProvider.wallet);
16
- expect(roleError).toBeUndefined();
17
- const { roleId: nft2RoleId, error: roleError2 } = await createRole(bobSpaceDapp, bobProvider, spaceId, 'gated role', [Permission.Read], [], getNftRuleData(testNft2Address), bobProvider.wallet);
18
- expect(roleError2).toBeUndefined();
19
- // Create a channel gated by the both role in the space contract.
20
- const { channelId, error: channelError } = await createChannel(bobSpaceDapp, bobProvider, spaceId, 'double-role-gated-channel', [nft1RoleId.valueOf(), nft2RoleId.valueOf()], bobProvider.wallet);
21
- expect(channelError).toBeUndefined();
22
- // Then, establish a stream for the channel on the river node.
23
- const { streamId: channelStreamId } = await bob.createChannel(spaceId, 'double-role-gated-channel', 'user only needs a single role to get into this channel', channelId);
24
- expect(channelStreamId).toEqual(channelId);
25
- // Mint an NFT for alice so that she satisfies the second role
26
- await TestERC721.publicMint('TestNFT2', alicesWallet.address);
27
- // Join alice to the channel
28
- await expectUserCanJoinChannel(alice, aliceSpaceDapp, spaceId, channelId);
29
- });
30
- test('twoNftGateJoinPass', async () => {
31
- const testNft1Address = await TestERC721.getContractAddress('TestNFT1');
32
- const testNft2Address = await TestERC721.getContractAddress('TestNFT2');
33
- const { alice, bob, alicesWallet, aliceSpaceDapp, spaceId, channelId } = await setupChannelWithCustomRole([], twoNftRuleData(testNft1Address, testNft2Address));
34
- const aliceMintTx1 = TestERC721.publicMint('TestNFT1', alicesWallet.address);
35
- const aliceMintTx2 = TestERC721.publicMint('TestNFT2', alicesWallet.address);
36
- log('Minting nfts for alice');
37
- await Promise.all([aliceMintTx1, aliceMintTx2]);
38
- log('expect that alice can join the channel');
39
- // Validate alice can join the channel
40
- await expectUserCanJoinChannel(alice, aliceSpaceDapp, spaceId, channelId);
41
- // kill the clients
42
- const doneStart = Date.now();
43
- await bob.stopSync();
44
- await alice.stopSync();
45
- log('Done', Date.now() - doneStart);
46
- });
47
- test('twoNftGateJoinPass - acrossLinkedWallets', async () => {
48
- const testNft1Address = await TestERC721.getContractAddress('TestNFT1');
49
- const testNft2Address = await TestERC721.getContractAddress('TestNFT2');
50
- const { alice, bob, alicesWallet, carolsWallet, aliceSpaceDapp, aliceProvider, carolProvider, spaceId, channelId, } = await setupChannelWithCustomRole([], twoNftRuleData(testNft1Address, testNft2Address));
51
- const aliceMintTx1 = TestERC721.publicMint('TestNFT1', alicesWallet.address);
52
- const carolMintTx2 = TestERC721.publicMint('TestNFT2', carolsWallet.address);
53
- log('Minting nfts for alice and carol');
54
- await Promise.all([aliceMintTx1, carolMintTx2]);
55
- log("linking carols wallet to alice's wallet");
56
- await linkWallets(aliceSpaceDapp, aliceProvider.wallet, carolProvider.wallet);
57
- log('Alice should be able to join channel with one asset in carol wallet');
58
- await expectUserCanJoinChannel(alice, aliceSpaceDapp, spaceId, channelId);
59
- // kill the clients
60
- const doneStart = Date.now();
61
- await bob.stopSync();
62
- await alice.stopSync();
63
- log('Done', Date.now() - doneStart);
64
- });
65
- test('twoNftGateJoinFail', async () => {
66
- const testNft1Address = await TestERC721.getContractAddress('TestNFT1');
67
- const testNft2Address = await TestERC721.getContractAddress('TestNFT2');
68
- const { alice, aliceSpaceDapp, bob, alicesWallet, spaceId, channelId } = await setupChannelWithCustomRole([], twoNftRuleData(testNft1Address, testNft2Address));
69
- // Mint only one of the required NFTs for alice
70
- log('Minting only one of two required NFTs for alice');
71
- await TestERC721.publicMint('TestNFT1', alicesWallet.address);
72
- log('expect that alice cannot join the channel');
73
- await expectUserCannotJoinChannel(alice, aliceSpaceDapp, spaceId, channelId);
74
- // kill the clients
75
- await bob.stopSync();
76
- await alice.stopSync();
77
- });
78
- test('OrOfTwoNftGateJoinPass', async () => {
79
- const testNft1Address = await TestERC721.getContractAddress('TestNFT1');
80
- const testNft2Address = await TestERC721.getContractAddress('TestNFT2');
81
- const { alice, bob, alicesWallet, aliceSpaceDapp, spaceId, channelId } = await setupChannelWithCustomRole([], twoNftRuleData(testNft1Address, testNft2Address, LogicalOperationType.OR));
82
- // join alice
83
- log('Minting an NFT for alice');
84
- await TestERC721.publicMint('TestNFT1', alicesWallet.address);
85
- log('expect that alice can join the channel');
86
- await expectUserCanJoinChannel(alice, aliceSpaceDapp, spaceId, channelId);
87
- // kill the clients
88
- const doneStart = Date.now();
89
- await bob.stopSync();
90
- await alice.stopSync();
91
- log('Done', Date.now() - doneStart);
92
- });
93
- test('orOfTwoNftOrOneNftGateJoinPass', async () => {
94
- const testNft1Address = await TestERC721.getContractAddress('TestNFT1');
95
- const testNft2Address = await TestERC721.getContractAddress('TestNFT2');
96
- const testNft3Address = await TestERC721.getContractAddress('TestNFT3');
97
- const root = Rules.or(Rules.and(Rules.checkErc721({
98
- chainId: 31337n,
99
- contractAddress: testNft1Address,
100
- threshold: 1n,
101
- }), Rules.checkErc721({
102
- chainId: 31337n,
103
- contractAddress: testNft2Address,
104
- threshold: 1n,
105
- })), Rules.checkErc721({
106
- chainId: 31337n,
107
- contractAddress: testNft3Address,
108
- threshold: 1n,
109
- }));
110
- const ruleData = createRuleStruct(root);
111
- const { alice, bob, alicesWallet, aliceSpaceDapp, spaceId, channelId } = await setupChannelWithCustomRole([], ruleData);
112
- log("Mint Alice's NFTs");
113
- const aliceMintTx1 = TestERC721.publicMint('TestNFT1', alicesWallet.address);
114
- const aliceMintTx2 = TestERC721.publicMint('TestNFT2', alicesWallet.address);
115
- await Promise.all([aliceMintTx1, aliceMintTx2]);
116
- log('expect that alice can join the channel');
117
- await expectUserCanJoinChannel(alice, aliceSpaceDapp, spaceId, channelId);
118
- // kill the clients
119
- const doneStart = Date.now();
120
- await bob.stopSync();
121
- await alice.stopSync();
122
- log('Done', Date.now() - doneStart);
123
- });
124
- });
125
- //# sourceMappingURL=channelsWithComplexEntitlements.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"channelsWithComplexEntitlements.test.js","sourceRoot":"","sources":["../../../../src/tests/multi/entitlements/channelsWithComplexEntitlements.test.ts"],"names":[],"mappings":"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"}
@@ -1,5 +0,0 @@
1
- /**
2
- * @group with-entitlements
3
- */
4
- export {};
5
- //# sourceMappingURL=channelsWithEntitlementLoss.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"channelsWithEntitlementLoss.test.d.ts","sourceRoot":"","sources":["../../../../src/tests/multi/entitlements/channelsWithEntitlementLoss.test.ts"],"names":[],"mappings":"AAAA;;GAEG"}
@@ -1,72 +0,0 @@
1
- /**
2
- * @group with-entitlements
3
- */
4
- import { waitFor, getNftRuleData, setupChannelWithCustomRole, expectUserCanJoinChannel, expectUserCannotJoinChannel, } from '../../testUtils';
5
- import { MembershipOp } from '@towns-labs/proto';
6
- import { Permission, TestERC721 } from '@towns-labs/web3';
7
- import { make_MemberPayload_KeySolicitation } from '../../../types';
8
- describe('channelsWithEntitlementLoss', () => {
9
- test('user booted on key request after entitlement loss', async () => {
10
- const testNftAddress = await TestERC721.getContractAddress('TestNFT');
11
- const { alice, alicesWallet, aliceSpaceDapp, bob, spaceId, channelId } = await setupChannelWithCustomRole([], getNftRuleData(testNftAddress));
12
- // Mint an nft for alice - she should be able to join now
13
- const tokenId = await TestERC721.publicMint('TestNFT', alicesWallet.address);
14
- // Validate alice can join the channel
15
- await expectUserCanJoinChannel(alice, aliceSpaceDapp, spaceId, channelId);
16
- const channelStream = await bob.waitForStream(channelId);
17
- // Validate Alice is member of the channel
18
- await waitFor(() => expect(channelStream.view.membershipContent.isMember(MembershipOp.SO_JOIN, alice.userId), `waitFor ${alice.userId} to be member in ${channelStream.view.streamId}`).toBe(true));
19
- // Burn Alice's NFT and validate her zero balance. She should now fail an entitlement check for the
20
- // channel.
21
- await TestERC721.burn('TestNFT', tokenId);
22
- await expect(TestERC721.balanceOf('TestNFT', alicesWallet.address)).resolves.toBe(0);
23
- // Wait 5 seconds for the positive auth cache to expire
24
- await new Promise((f) => setTimeout(f, 5000));
25
- // Have alice solicit keys in the channel where she just lost entitlements.
26
- // This key solicitation should fail because she no longer has the required NFT.
27
- // Additionally, she should be removed from the channel.
28
- const payload = make_MemberPayload_KeySolicitation({
29
- deviceKey: 'alice-new-device',
30
- sessionIds: [],
31
- fallbackKey: 'alice-fallback-key',
32
- isNewDevice: true,
33
- });
34
- await expect(alice.makeEventAndAddToStream(channelId, payload)).rejects.toThrow(/7:PERMISSION_DENIED/);
35
- // Alice's user stream should reflect that she is no longer a member of the channel.
36
- // TODO why no linter complain with no await here?
37
- const aliceUserStream = await alice.waitForStream(alice.userStreamId);
38
- await waitFor(() => expect(aliceUserStream.view.userContent.getMembership(channelId)?.op, `waitFor ${alice.userId} to be member of ${channelId} in ${aliceUserStream.view.streamId}`).toBe(MembershipOp.SO_LEAVE));
39
- await waitFor(() => expect(channelStream.view.membershipContent.isMember(MembershipOp.SO_LEAVE, alice.userId), `waitFor ${alice.userId} to be member in ${channelId}`).toBeTruthy());
40
- // Alice cannot rejoin the stream.
41
- await expectUserCannotJoinChannel(alice, aliceSpaceDapp, spaceId, channelId);
42
- await bob.stopSync();
43
- await alice.stopSync();
44
- });
45
- test('user cannot post after entitlement loss', async () => {
46
- const testNftAddress = await TestERC721.getContractAddress('TestNFT');
47
- const { alice, alicesWallet, aliceSpaceDapp, bob, spaceId, channelId } = await setupChannelWithCustomRole([], getNftRuleData(testNftAddress), [
48
- Permission.Read,
49
- Permission.Write,
50
- ]);
51
- // Mint an nft for alice - she should be able to join now
52
- const tokenId = await TestERC721.publicMint('TestNFT', alicesWallet.address);
53
- // Validate alice can join the channel
54
- await expectUserCanJoinChannel(alice, aliceSpaceDapp, spaceId, channelId);
55
- const channelStream = await bob.waitForStream(channelId);
56
- // Validate Alice is member of the channel
57
- await waitFor(() => channelStream.view.membershipContent.isMember(MembershipOp.SO_JOIN, alice.userId));
58
- // Burn Alice's NFT and validate her zero balance. She should now fail an entitlement check for the
59
- // channel.
60
- await TestERC721.burn('TestNFT', tokenId);
61
- await expect(TestERC721.balanceOf('TestNFT', alicesWallet.address)).resolves.toBe(0);
62
- // Wait 5 seconds for the positive auth cache to expire
63
- await new Promise((f) => setTimeout(f, 5000));
64
- // Alice should not be able to post to the channel after losing entitlements.
65
- // However she remains a member of the stream because this message is never sent by the
66
- // client.
67
- await expect(alice.sendMessage(channelId, 'Message after entitlement loss')).rejects.toThrow( /*not entitled to add message to channel*/);
68
- await bob.stopSync();
69
- await alice.stopSync();
70
- });
71
- });
72
- //# sourceMappingURL=channelsWithEntitlementLoss.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"channelsWithEntitlementLoss.test.js","sourceRoot":"","sources":["../../../../src/tests/multi/entitlements/channelsWithEntitlementLoss.test.ts"],"names":[],"mappings":"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"}
@@ -1,5 +0,0 @@
1
- /**
2
- * @group with-entitlements
3
- */
4
- export {};
5
- //# sourceMappingURL=channelsWithEntitlements.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"channelsWithEntitlements.test.d.ts","sourceRoot":"","sources":["../../../../src/tests/multi/entitlements/channelsWithEntitlements.test.ts"],"names":[],"mappings":"AAAA;;GAEG"}
@@ -1,57 +0,0 @@
1
- /**
2
- * @group with-entitlements
3
- */
4
- import { waitFor, setupWalletsAndContexts, createSpaceAndDefaultChannel, expectUserCanJoin, everyoneMembershipStruct, getXchainConfigForTesting, setupChannelWithCustomRole, expectUserCanJoinChannel, getTimelineMessagePayload, } from '../../testUtils';
5
- import { dlog } from '@towns-labs/utils';
6
- import { NoopRuleData, Permission } from '@towns-labs/web3';
7
- const log = dlog('csb:test:channelsWithEntitlements');
8
- describe('channelsWithEntitlements', () => {
9
- test('banned user not entitled to channel', async () => {
10
- const { alice, alicesWallet, aliceSpaceDapp, bob, bobSpaceDapp, bobProvider, spaceId, channelId, } = await setupChannelWithCustomRole(['alice'], NoopRuleData);
11
- await expectUserCanJoinChannel(alice, aliceSpaceDapp, spaceId, channelId);
12
- const tx = await bobSpaceDapp.banWalletAddress(spaceId, alicesWallet.address, bobProvider.wallet);
13
- await tx.wait();
14
- // Wait 5 seconds for the positive auth cache on the client to expire
15
- await new Promise((f) => setTimeout(f, 5000));
16
- await expect(aliceSpaceDapp.isEntitledToChannel(spaceId, channelId, alice.userId, Permission.Read, getXchainConfigForTesting())).resolves.toBeFalsy();
17
- // unban alice
18
- const unbanTx = await bobSpaceDapp.unbanWalletAddress(spaceId, alicesWallet.address, bobProvider.wallet);
19
- await unbanTx.wait();
20
- // Wait 5 seconds for the caches to expire
21
- await new Promise((f) => setTimeout(f, 5000));
22
- await expect(aliceSpaceDapp.isEntitledToChannel(spaceId, channelId, alice.userId, Permission.Read, getXchainConfigForTesting())).resolves.toBeTruthy();
23
- const doneStart = Date.now();
24
- // kill the clients
25
- await bob.stopSync();
26
- await alice.stopSync();
27
- log('Done', Date.now() - doneStart);
28
- });
29
- // Banning with entitlements — users need permission to ban other users.
30
- test('adminsCanRedactChannelMessages', async () => {
31
- // log('start adminsCanRedactChannelMessages')
32
- // // set up the web3 provider and spacedapp
33
- const { alice, bob, alicesWallet, aliceProvider, bobProvider, aliceSpaceDapp, bobSpaceDapp, } = await setupWalletsAndContexts();
34
- const { spaceId, defaultChannelId } = await createSpaceAndDefaultChannel(bob, bobSpaceDapp, bobProvider.wallet, 'bob', await everyoneMembershipStruct(bobSpaceDapp, bob));
35
- bob.startSync();
36
- // // Alice should have no issue joining the space and default channel.
37
- await expectUserCanJoin(spaceId, defaultChannelId, 'alice', alice, aliceSpaceDapp, alicesWallet.address, aliceProvider.wallet);
38
- // Alice says something bad
39
- const stream = await alice.waitForStream(defaultChannelId);
40
- await alice.sendMessage(defaultChannelId, 'Very bad message!');
41
- let eventId;
42
- await waitFor(() => {
43
- const event = stream.view.timeline.find((e) => getTimelineMessagePayload(e) === 'Very bad message!');
44
- expect(event).toBeDefined();
45
- eventId = event?.eventId;
46
- });
47
- expect(stream).toBeDefined();
48
- expect(eventId).toBeDefined();
49
- await expect(bob.redactMessage(defaultChannelId, eventId)).resolves.not.toThrow();
50
- await expect(alice.redactMessage(defaultChannelId, eventId)).rejects.toThrow(/PERMISSION_DENIED/);
51
- // kill the clients
52
- await bob.stopSync();
53
- await alice.stopSync();
54
- log('Done');
55
- });
56
- });
57
- //# sourceMappingURL=channelsWithEntitlements.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"channelsWithEntitlements.test.js","sourceRoot":"","sources":["../../../../src/tests/multi/entitlements/channelsWithEntitlements.test.ts"],"names":[],"mappings":"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"}
@@ -1,5 +0,0 @@
1
- /**
2
- * @group with-entitlements
3
- */
4
- export {};
5
- //# sourceMappingURL=channelsWithErc20Entitlements.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"channelsWithErc20Entitlements.test.d.ts","sourceRoot":"","sources":["../../../../src/tests/multi/entitlements/channelsWithErc20Entitlements.test.ts"],"names":[],"mappings":"AAAA;;GAEG"}