@towns-labs/sdk 2.0.5 → 2.0.7

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 (153) hide show
  1. package/dist/createApp.d.ts.map +1 -1
  2. package/dist/createApp.js +7 -1
  3. package/dist/createApp.js.map +1 -1
  4. package/dist/id.d.ts +1 -0
  5. package/dist/id.d.ts.map +1 -1
  6. package/dist/id.js +3 -0
  7. package/dist/id.js.map +1 -1
  8. package/dist/streamStateView_Members.d.ts +7 -0
  9. package/dist/streamStateView_Members.d.ts.map +1 -1
  10. package/dist/streamStateView_Members.js +19 -0
  11. package/dist/streamStateView_Members.js.map +1 -1
  12. package/dist/sync-agent/dms/models/dm.d.ts +2 -4
  13. package/dist/sync-agent/dms/models/dm.d.ts.map +1 -1
  14. package/dist/sync-agent/dms/models/dm.js +2 -30
  15. package/dist/sync-agent/dms/models/dm.js.map +1 -1
  16. package/dist/sync-agent/gdms/models/gdm.d.ts +2 -4
  17. package/dist/sync-agent/gdms/models/gdm.d.ts.map +1 -1
  18. package/dist/sync-agent/gdms/models/gdm.js +2 -30
  19. package/dist/sync-agent/gdms/models/gdm.js.map +1 -1
  20. package/dist/sync-agent/river-connection/riverConnection.d.ts +1 -3
  21. package/dist/sync-agent/river-connection/riverConnection.d.ts.map +1 -1
  22. package/dist/sync-agent/river-connection/riverConnection.js +5 -3
  23. package/dist/sync-agent/river-connection/riverConnection.js.map +1 -1
  24. package/dist/sync-agent/spaces/models/channel.d.ts +3 -6
  25. package/dist/sync-agent/spaces/models/channel.d.ts.map +1 -1
  26. package/dist/sync-agent/spaces/models/channel.js +4 -76
  27. package/dist/sync-agent/spaces/models/channel.js.map +1 -1
  28. package/dist/sync-agent/spaces/models/space.d.ts +6 -6
  29. package/dist/sync-agent/spaces/models/space.d.ts.map +1 -1
  30. package/dist/sync-agent/spaces/models/space.js +8 -30
  31. package/dist/sync-agent/spaces/models/space.js.map +1 -1
  32. package/dist/sync-agent/spaces/spaces.d.ts +3 -4
  33. package/dist/sync-agent/spaces/spaces.d.ts.map +1 -1
  34. package/dist/sync-agent/spaces/spaces.js +6 -25
  35. package/dist/sync-agent/spaces/spaces.js.map +1 -1
  36. package/dist/sync-agent/syncAgent.d.ts.map +1 -1
  37. package/dist/sync-agent/syncAgent.js +2 -7
  38. package/dist/sync-agent/syncAgent.js.map +1 -1
  39. package/dist/tests/multi_ne/gdms.test.js +50 -3
  40. package/dist/tests/multi_ne/gdms.test.js.map +1 -1
  41. package/dist/tests/multi_ne/userInboxMessage.test.js +3 -3
  42. package/dist/tests/multi_ne/userInboxMessage.test.js.map +1 -1
  43. package/dist/townsEnv.js +5 -5
  44. package/dist/townsEnv.js.map +1 -1
  45. package/package.json +10 -10
  46. package/dist/createBot.d.ts +0 -159
  47. package/dist/createBot.d.ts.map +0 -1
  48. package/dist/createBot.js +0 -206
  49. package/dist/createBot.js.map +0 -1
  50. package/dist/makeRiverRpcClient.d.ts +0 -6
  51. package/dist/makeRiverRpcClient.d.ts.map +0 -1
  52. package/dist/makeRiverRpcClient.js +0 -9
  53. package/dist/makeRiverRpcClient.js.map +0 -1
  54. package/dist/streamStateView_ChannelMetadata.d.ts +0 -22
  55. package/dist/streamStateView_ChannelMetadata.d.ts.map +0 -1
  56. package/dist/streamStateView_ChannelMetadata.js +0 -77
  57. package/dist/streamStateView_ChannelMetadata.js.map +0 -1
  58. package/dist/sync-agent/entitlements/entitlements.d.ts +0 -10
  59. package/dist/sync-agent/entitlements/entitlements.d.ts.map +0 -1
  60. package/dist/sync-agent/entitlements/entitlements.js +0 -20
  61. package/dist/sync-agent/entitlements/entitlements.js.map +0 -1
  62. package/dist/sync-agent/river-connection/models/riverChain.d.ts +0 -24
  63. package/dist/sync-agent/river-connection/models/riverChain.d.ts.map +0 -1
  64. package/dist/sync-agent/river-connection/models/riverChain.js +0 -66
  65. package/dist/sync-agent/river-connection/models/riverChain.js.map +0 -1
  66. package/dist/tests/multi/appRegistryService.test.d.ts +0 -2
  67. package/dist/tests/multi/appRegistryService.test.d.ts.map +0 -1
  68. package/dist/tests/multi/appRegistryService.test.js +0 -41
  69. package/dist/tests/multi/appRegistryService.test.js.map +0 -1
  70. package/dist/tests/multi/botEntitlements.test.d.ts +0 -5
  71. package/dist/tests/multi/botEntitlements.test.d.ts.map +0 -1
  72. package/dist/tests/multi/botEntitlements.test.js +0 -178
  73. package/dist/tests/multi/botEntitlements.test.js.map +0 -1
  74. package/dist/tests/multi/botMembership.test.d.ts +0 -5
  75. package/dist/tests/multi/botMembership.test.d.ts.map +0 -1
  76. package/dist/tests/multi/botMembership.test.js +0 -295
  77. package/dist/tests/multi/botMembership.test.js.map +0 -1
  78. package/dist/tests/multi/botStreamCreation.test.d.ts +0 -5
  79. package/dist/tests/multi/botStreamCreation.test.d.ts.map +0 -1
  80. package/dist/tests/multi/botStreamCreation.test.js +0 -60
  81. package/dist/tests/multi/botStreamCreation.test.js.map +0 -1
  82. package/dist/tests/multi/channelScrubbing.test.d.ts +0 -5
  83. package/dist/tests/multi/channelScrubbing.test.d.ts.map +0 -1
  84. package/dist/tests/multi/channelScrubbing.test.js +0 -102
  85. package/dist/tests/multi/channelScrubbing.test.js.map +0 -1
  86. package/dist/tests/multi/notificationService.test.d.ts +0 -2
  87. package/dist/tests/multi/notificationService.test.d.ts.map +0 -1
  88. package/dist/tests/multi/notificationService.test.js +0 -51
  89. package/dist/tests/multi/notificationService.test.js.map +0 -1
  90. package/dist/tests/multi/sync-agent/member-queue.test.d.ts +0 -2
  91. package/dist/tests/multi/sync-agent/member-queue.test.d.ts.map +0 -1
  92. package/dist/tests/multi/sync-agent/member-queue.test.js +0 -54
  93. package/dist/tests/multi/sync-agent/member-queue.test.js.map +0 -1
  94. package/dist/tests/multi/sync-agent/member.test.d.ts +0 -2
  95. package/dist/tests/multi/sync-agent/member.test.d.ts.map +0 -1
  96. package/dist/tests/multi/sync-agent/member.test.js +0 -45
  97. package/dist/tests/multi/sync-agent/member.test.js.map +0 -1
  98. package/dist/tests/multi/sync-agent/members.test.d.ts +0 -2
  99. package/dist/tests/multi/sync-agent/members.test.d.ts.map +0 -1
  100. package/dist/tests/multi/sync-agent/members.test.js +0 -35
  101. package/dist/tests/multi/sync-agent/members.test.js.map +0 -1
  102. package/dist/tests/multi/sync-agent/riverConnection.test.d.ts +0 -5
  103. package/dist/tests/multi/sync-agent/riverConnection.test.d.ts.map +0 -1
  104. package/dist/tests/multi/sync-agent/riverConnection.test.js +0 -39
  105. package/dist/tests/multi/sync-agent/riverConnection.test.js.map +0 -1
  106. package/dist/tests/multi/sync-agent/spaces.test.d.ts +0 -2
  107. package/dist/tests/multi/sync-agent/spaces.test.d.ts.map +0 -1
  108. package/dist/tests/multi/sync-agent/spaces.test.js +0 -33
  109. package/dist/tests/multi/sync-agent/spaces.test.js.map +0 -1
  110. package/dist/tests/multi/sync-agent/streams.test.d.ts +0 -2
  111. package/dist/tests/multi/sync-agent/streams.test.d.ts.map +0 -1
  112. package/dist/tests/multi/sync-agent/streams.test.js +0 -27
  113. package/dist/tests/multi/sync-agent/streams.test.js.map +0 -1
  114. package/dist/tests/multi/sync-agent/syncAgent.test.d.ts +0 -2
  115. package/dist/tests/multi/sync-agent/syncAgent.test.d.ts.map +0 -1
  116. package/dist/tests/multi/sync-agent/syncAgent.test.js +0 -68
  117. package/dist/tests/multi/sync-agent/syncAgent.test.js.map +0 -1
  118. package/dist/tests/multi/sync-agent/syncAgents.test.d.ts +0 -2
  119. package/dist/tests/multi/sync-agent/syncAgents.test.d.ts.map +0 -1
  120. package/dist/tests/multi/sync-agent/syncAgents.test.js +0 -163
  121. package/dist/tests/multi/sync-agent/syncAgents.test.js.map +0 -1
  122. package/dist/tests/multi/sync-agent/timeline.test.d.ts +0 -2
  123. package/dist/tests/multi/sync-agent/timeline.test.d.ts.map +0 -1
  124. package/dist/tests/multi/sync-agent/timeline.test.js +0 -232
  125. package/dist/tests/multi/sync-agent/timeline.test.js.map +0 -1
  126. package/dist/tests/multi/sync-agent/user.test.d.ts +0 -5
  127. package/dist/tests/multi/sync-agent/user.test.d.ts.map +0 -1
  128. package/dist/tests/multi/sync-agent/user.test.js +0 -55
  129. package/dist/tests/multi/sync-agent/user.test.js.map +0 -1
  130. package/dist/tests/multi/transactions.test.d.ts +0 -5
  131. package/dist/tests/multi/transactions.test.d.ts.map +0 -1
  132. package/dist/tests/multi/transactions.test.js +0 -153
  133. package/dist/tests/multi/transactions.test.js.map +0 -1
  134. package/dist/tests/multi/transactions_SpaceReview.test.d.ts +0 -2
  135. package/dist/tests/multi/transactions_SpaceReview.test.d.ts.map +0 -1
  136. package/dist/tests/multi/transactions_SpaceReview.test.js +0 -278
  137. package/dist/tests/multi/transactions_SpaceReview.test.js.map +0 -1
  138. package/dist/tests/multi/transactions_Tip.test.d.ts +0 -5
  139. package/dist/tests/multi/transactions_Tip.test.d.ts.map +0 -1
  140. package/dist/tests/multi/transactions_Tip.test.js +0 -379
  141. package/dist/tests/multi/transactions_Tip.test.js.map +0 -1
  142. package/dist/tests/multi_ne/nodeSelection.test.d.ts +0 -5
  143. package/dist/tests/multi_ne/nodeSelection.test.d.ts.map +0 -1
  144. package/dist/tests/multi_ne/nodeSelection.test.js +0 -41
  145. package/dist/tests/multi_ne/nodeSelection.test.js.map +0 -1
  146. package/dist/tests/multi_ne/trading.solana.test.d.ts +0 -2
  147. package/dist/tests/multi_ne/trading.solana.test.d.ts.map +0 -1
  148. package/dist/tests/multi_ne/trading.solana.test.js +0 -229
  149. package/dist/tests/multi_ne/trading.solana.test.js.map +0 -1
  150. package/dist/tests/multi_ne/trading.test.d.ts +0 -2
  151. package/dist/tests/multi_ne/trading.test.d.ts.map +0 -1
  152. package/dist/tests/multi_ne/trading.test.js +0 -243
  153. package/dist/tests/multi_ne/trading.test.js.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"botStreamCreation.test.js","sourceRoot":"","sources":["../../../src/tests/multi/botStreamCreation.test.ts"],"names":[],"mappings":"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"}
@@ -1,5 +0,0 @@
1
- /**
2
- * @group with-entitlements
3
- */
4
- export {};
5
- //# sourceMappingURL=channelScrubbing.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"channelScrubbing.test.d.ts","sourceRoot":"","sources":["../../../src/tests/multi/channelScrubbing.test.ts"],"names":[],"mappings":"AAAA;;GAEG"}
@@ -1,102 +0,0 @@
1
- /**
2
- * @group with-entitlements
3
- */
4
- import { MembershipOp, MembershipReason } from '@towns-protocol/proto';
5
- import { makeUserStreamId } from '../../id';
6
- import { getNftRuleData, linkWallets, unlinkWallet, setupChannelWithCustomRole, expectUserCanJoinChannel, waitFor, setupWalletsAndContexts, everyoneMembershipStruct, createSpaceAndDefaultChannel, } from '../testUtils';
7
- import { dlog } from '@towns-protocol/utils';
8
- import { TestERC721, AppRegistryDapp, Permission, SpaceAddressFromSpaceId, } from '@towns-protocol/web3';
9
- import { ethers } from 'ethers';
10
- import { townsEnv } from '../../townsEnv';
11
- const log = dlog('csb:test:channelsWithEntitlements');
12
- describe('channelScrubbing', () => {
13
- test('User who loses entitlements is bounced after a channel scrub is triggered', async () => {
14
- const TestNftName = 'TestNFT';
15
- const TestNftAddress = await TestERC721.getContractAddress(TestNftName);
16
- const { alice, aliceSpaceDapp, aliceProvider, carol, carolSpaceDapp, carolProvider, spaceId, channelId, } = await setupChannelWithCustomRole([], getNftRuleData(TestNftAddress));
17
- const aliceLinkedWallet = ethers.Wallet.createRandom();
18
- const carolLinkedWallet = ethers.Wallet.createRandom();
19
- // link wallets
20
- await Promise.all([
21
- linkWallets(aliceSpaceDapp, aliceProvider.wallet, aliceLinkedWallet),
22
- linkWallets(carolSpaceDapp, carolProvider.wallet, carolLinkedWallet),
23
- ]);
24
- // Mint the needed asset to Alice and Carol's linked wallets
25
- log('Minting an NFT to alices linked wallet');
26
- await Promise.all([
27
- TestERC721.publicMint(TestNftName, aliceLinkedWallet.address),
28
- TestERC721.publicMint(TestNftName, carolLinkedWallet.address),
29
- ]);
30
- // Join alice to the channel based on her linked wallet credentials
31
- await expectUserCanJoinChannel(alice, aliceSpaceDapp, spaceId, channelId);
32
- await unlinkWallet(aliceSpaceDapp, aliceProvider.wallet, aliceLinkedWallet);
33
- // Wait 5 seconds so the channel stream will become eligible for scrubbing
34
- await new Promise((f) => setTimeout(f, 5000));
35
- // When carol's join event is added to the stream, it should trigger a scrub, and Alice
36
- // should be booted from the stream since she unlinked her entitled wallet.
37
- await expectUserCanJoinChannel(carol, carolSpaceDapp, spaceId, channelId);
38
- const userStreamView = (await alice.waitForStream(makeUserStreamId(alice.userId))).view;
39
- // Wait for alice's user stream to have the leave event
40
- await waitFor(() => {
41
- const membership = userStreamView.userContent.getMembership(channelId);
42
- expect(membership?.op).toBe(MembershipOp.SO_LEAVE);
43
- expect(membership?.reason).toBe(MembershipReason.MR_NOT_ENTITLED);
44
- });
45
- });
46
- test('Bot loses membership and is scrubbed from channel when uninstalled from space', async () => {
47
- const { alice: spaceOwner, aliceProvider: spaceOwnerProvider, aliceSpaceDapp: spaceOwnerSpaceDapp, bob: bot, bobsWallet: botWallet, bobProvider: botProvider, } = await setupWalletsAndContexts();
48
- const appRegistryDapp = new AppRegistryDapp(townsEnv().makeBaseChainConfig().chainConfig, spaceOwnerProvider);
49
- // Create bot app contract
50
- const tx = await appRegistryDapp.createApp(botProvider.signer, 'scrub-test-bot', [Permission.Read, Permission.Write], botWallet.address, ethers.utils.parseEther('0.01').toBigInt(), 31536000n);
51
- const receipt = await tx.wait();
52
- const { app: foundAppAddress } = appRegistryDapp.getCreateAppEvent(receipt, botWallet.address);
53
- expect(foundAppAddress).toBeDefined();
54
- // Create bot user streams
55
- await expect(bot.initializeUser({ appAddress: foundAppAddress })).resolves.toBeDefined();
56
- bot.startSync();
57
- // Create a town with channels (everyone can join)
58
- const everyoneMembership = await everyoneMembershipStruct(spaceOwnerSpaceDapp, spaceOwner);
59
- const { spaceId, defaultChannelId: channelId } = await createSpaceAndDefaultChannel(spaceOwner, spaceOwnerSpaceDapp, spaceOwnerProvider.wallet, "space owner's town", everyoneMembership);
60
- // Install the bot to the space (as space owner)
61
- const installTx = await appRegistryDapp.installApp(spaceOwnerProvider.signer, foundAppAddress, SpaceAddressFromSpaceId(spaceId), ethers.utils.parseEther('0.02').toBigInt());
62
- const installReceipt = await installTx.wait();
63
- expect(installReceipt.status).toBe(1);
64
- // Verify bot is installed
65
- const space = spaceOwnerSpaceDapp.getSpace(spaceId);
66
- const installedApps = await space.AppAccount.read.getInstalledApps();
67
- expect(installedApps).toContain(foundAppAddress);
68
- // Have space owner add bot to space and channel
69
- await expect(spaceOwner.joinUser(spaceId, bot.userId)).resolves.toBeDefined();
70
- await expect(spaceOwner.joinUser(channelId, bot.userId)).resolves.toBeDefined();
71
- // Validate bot is a member of both space and channel
72
- const botUserStreamView = bot.stream(bot.userStreamId).view;
73
- await waitFor(() => {
74
- expect(botUserStreamView.userContent.isMember(spaceId, MembershipOp.SO_JOIN)).toBe(true);
75
- expect(botUserStreamView.userContent.isMember(channelId, MembershipOp.SO_JOIN)).toBe(true);
76
- });
77
- // Uninstall the bot from the space (this should make it lose membership eligibility)
78
- // Note: Using removeApp method - in a real implementation this might be a different method
79
- // like uninstallApp, but removeApp should serve the same purpose for testing
80
- const removeAppTx = await appRegistryDapp.uninstallApp(spaceOwnerProvider.signer, foundAppAddress, space?.Address);
81
- const removeAppReceipt = await removeAppTx.wait();
82
- expect(removeAppReceipt.status).toBe(1);
83
- // Verify bot is no longer installed
84
- const installedAppsAfterRemoval = await space.AppAccount.read.getInstalledApps();
85
- expect(installedAppsAfterRemoval).not.toContain(foundAppAddress);
86
- // Wait 5 seconds so the channel stream will become eligible for scrubbing
87
- await new Promise((f) => setTimeout(f, 5000));
88
- // Have the bot attempt to post a message to the channel to trigger scrubbing
89
- // This should fail with a permission error since the bot is no longer installed/entitled, and trigger a scrub
90
- await expect(bot.sendMessage(channelId, 'test message from bot')).rejects.toThrow(/PERMISSION_DENIED/);
91
- // Wait for bot's user stream to have the leave event due to being scrubbed
92
- await waitFor(() => {
93
- const membership = botUserStreamView.userContent.getMembership(channelId);
94
- expect(membership?.op).toBe(MembershipOp.SO_LEAVE);
95
- expect(membership?.reason).toBe(MembershipReason.MR_NOT_ENTITLED);
96
- });
97
- // Cleanup
98
- await bot.stopSync();
99
- await spaceOwner.stopSync();
100
- });
101
- });
102
- //# sourceMappingURL=channelScrubbing.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"channelScrubbing.test.js","sourceRoot":"","sources":["../../../src/tests/multi/channelScrubbing.test.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=notificationService.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"notificationService.test.d.ts","sourceRoot":"","sources":["../../../src/tests/multi/notificationService.test.ts"],"names":[],"mappings":""}
@@ -1,51 +0,0 @@
1
- import { env } from 'process';
2
- import { dlogger } from '@towns-labs/utils';
3
- import { NotificationService } from '../../notificationService';
4
- import { ethers } from 'ethers';
5
- import { DmChannelSettingValue, GdmChannelSettingValue, GetSettingsRequestSchema, SetDmGdmSettingsRequestSchema, } from '@towns-labs/proto';
6
- import { makeSignerContext } from '../../signerContext';
7
- import { create } from '@bufbuild/protobuf';
8
- const logger = dlogger('notificationService.test');
9
- describe('notificationServicetest', () => {
10
- // NOTE: at this time the service only accepts http2 connections so you can't connect to alpha from a jest test
11
- test('login with primary key', async () => {
12
- const notificationServiceUrl = env.NOTIFICATION_SERVICE_URL; // ?? 'https://river-notification-service-alpha.towns.com/' // ?? 'http://localhost:4040
13
- if (!notificationServiceUrl) {
14
- logger.info('NOTIFICATION_SERVICE_URL is not set');
15
- return;
16
- }
17
- const wallet = ethers.Wallet.createRandom();
18
- const signer = wallet;
19
- const userId = wallet.address;
20
- const { startResponse, finishResponse, notificationRpcClient } = await NotificationService.authenticateWithSigner(userId, signer, notificationServiceUrl);
21
- logger.info('authenticated', { startResponse, finishResponse });
22
- const settings = await notificationRpcClient.getSettings(create(GetSettingsRequestSchema));
23
- logger.info('settings', settings);
24
- const newSettings = await notificationRpcClient.setDmGdmSettings(create(SetDmGdmSettingsRequestSchema, {
25
- dmGlobal: DmChannelSettingValue.DM_MESSAGES_NO,
26
- gdmGlobal: GdmChannelSettingValue.GDM_MESSAGES_NO,
27
- }));
28
- logger.info('new settings', newSettings);
29
- });
30
- // NOTE: at this time the service only accepts http2 connections so you can't connect to alpha from a jest test
31
- test('login with delegate key', async () => {
32
- const notificationServiceUrl = env.NOTIFICATION_SERVICE_URL; // ?? 'https://river-notification-service-alpha.towns.com/' // ?? 'http://localhost:4040
33
- if (!notificationServiceUrl) {
34
- logger.info('NOTIFICATION_SERVICE_URL is not set');
35
- return;
36
- }
37
- const wallet = ethers.Wallet.createRandom();
38
- const delegateWallet = ethers.Wallet.createRandom();
39
- const signerContext = await makeSignerContext(wallet, delegateWallet, { days: 1 });
40
- const { startResponse, finishResponse, notificationRpcClient } = await NotificationService.authenticate(signerContext, notificationServiceUrl);
41
- logger.info('authenticated', { startResponse, finishResponse });
42
- const settings = await notificationRpcClient.getSettings(create(GetSettingsRequestSchema));
43
- logger.info('settings', settings);
44
- const newSettings = await notificationRpcClient.setDmGdmSettings(create(SetDmGdmSettingsRequestSchema, {
45
- dmGlobal: DmChannelSettingValue.DM_MESSAGES_NO,
46
- gdmGlobal: GdmChannelSettingValue.GDM_MESSAGES_NO,
47
- }));
48
- logger.info('new settings', newSettings);
49
- });
50
- });
51
- //# sourceMappingURL=notificationService.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"notificationService.test.js","sourceRoot":"","sources":["../../../src/tests/multi/notificationService.test.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=member-queue.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"member-queue.test.d.ts","sourceRoot":"","sources":["../../../../src/tests/multi/sync-agent/member-queue.test.ts"],"names":[],"mappings":""}
@@ -1,54 +0,0 @@
1
- /**
2
- * @group with-entitlements
3
- */
4
- import { Bot } from '../../../sync-agent/utils/bot';
5
- describe('member.test.ts - queue update', () => {
6
- test('queue update metadata', async () => {
7
- const testMetadata = {
8
- username: 'bob123',
9
- displayName: 'Bob',
10
- ensAddress: '0xbB29f0d47678BBc844f3B87F527aBBbab258F051',
11
- nft: {
12
- tokenId: '1043',
13
- contractAddress: '0x5af0d9827e0c53e4799bb226655a1de152a425a5',
14
- chainId: 1,
15
- },
16
- };
17
- const bobUser = new Bot();
18
- await bobUser.fundWallet();
19
- const bob = await bobUser.makeSyncAgent();
20
- let newSpaceId;
21
- const updateAllMetadata = bob.spaces
22
- .createSpace({
23
- spaceName: 'test metadata',
24
- }, bobUser.signer)
25
- .then(({ spaceId }) => {
26
- newSpaceId = spaceId;
27
- return bob.spaces.getSpace(spaceId);
28
- })
29
- .then((space) => {
30
- const metadata = space.members.myself;
31
- return Promise.all([
32
- metadata.setUsername(testMetadata.username),
33
- metadata.setDisplayName(testMetadata.displayName),
34
- metadata.setEnsAddress(testMetadata.ensAddress),
35
- metadata.setNft(testMetadata.nft),
36
- ]);
37
- });
38
- await bob.start();
39
- await expect(updateAllMetadata).resolves.toBeDefined();
40
- const msg = `expected SpaceId: ${newSpaceId} user: ${bob.userId} userStreamId: ${bob.riverConnection.client?.userStreamId}`;
41
- expect(bob.spaces.data.spaceIds.length, msg).toBe(1);
42
- const spaceId = bob.spaces.data.spaceIds[0];
43
- expect(spaceId, msg).toBeDefined();
44
- expect(spaceId.length, msg).toBeGreaterThan(0);
45
- const space = bob.spaces.getSpace(spaceId);
46
- const member = space.members.get(bob.userId);
47
- expect(member?.username).toBe(testMetadata.username);
48
- expect(member?.displayName).toBe(testMetadata.displayName);
49
- expect(member?.ensAddress).toBe(testMetadata.ensAddress);
50
- expect(member?.nft).toStrictEqual(testMetadata.nft);
51
- await bob.stop();
52
- });
53
- });
54
- //# sourceMappingURL=member-queue.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"member-queue.test.js","sourceRoot":"","sources":["../../../../src/tests/multi/sync-agent/member-queue.test.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=member.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"member.test.d.ts","sourceRoot":"","sources":["../../../../src/tests/multi/sync-agent/member.test.ts"],"names":[],"mappings":""}
@@ -1,45 +0,0 @@
1
- /**
2
- * @group with-entitlements
3
- */
4
- import { Bot } from '../../../sync-agent/utils/bot';
5
- describe('member.test.ts', () => {
6
- let bob;
7
- beforeAll(async () => {
8
- const bobUser = new Bot();
9
- await bobUser.fundWallet();
10
- const sync = await bobUser.makeSyncAgent();
11
- await sync.start();
12
- const { spaceId } = await sync.spaces.createSpace({
13
- spaceName: 'test metadata',
14
- }, bobUser.signer);
15
- const space = sync.spaces.getSpace(spaceId);
16
- bob = space.members.myself;
17
- });
18
- test('update username', async () => {
19
- expect(bob).toBeDefined();
20
- expect(bob.username).toBe('');
21
- await bob.setUsername('bob123');
22
- expect(bob.username).toBe('bob123');
23
- });
24
- test('update displayname', async () => {
25
- expect(bob.displayName).toBe('');
26
- await bob.setDisplayName('Bob');
27
- expect(bob.displayName).toBe('Bob');
28
- });
29
- test('update ensAddress', async () => {
30
- expect(bob.ensAddress).toBe(undefined);
31
- await bob.setEnsAddress('0xbB29f0d47678BBc844f3B87F527aBBbab258F051');
32
- expect(bob.ensAddress).toBe('0xbB29f0d47678BBc844f3B87F527aBBbab258F051');
33
- });
34
- test('update nft', async () => {
35
- expect(bob.nft).toBe(undefined);
36
- const miladyNft = {
37
- tokenId: '1043',
38
- contractAddress: '0x5af0d9827e0c53e4799bb226655a1de152a425a5',
39
- chainId: 1,
40
- };
41
- await bob.setNft(miladyNft);
42
- expect(bob.nft).toStrictEqual(miladyNft);
43
- });
44
- });
45
- //# sourceMappingURL=member.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"member.test.js","sourceRoot":"","sources":["../../../../src/tests/multi/sync-agent/member.test.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,GAAG,EAAE,MAAM,+BAA+B,CAAA;AAGnD,QAAQ,CAAC,gBAAgB,EAAE,GAAG,EAAE;IAC5B,IAAI,GAAW,CAAA;IACf,SAAS,CAAC,KAAK,IAAI,EAAE;QACjB,MAAM,OAAO,GAAG,IAAI,GAAG,EAAE,CAAA;QACzB,MAAM,OAAO,CAAC,UAAU,EAAE,CAAA;QAC1B,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,aAAa,EAAE,CAAA;QAC1C,MAAM,IAAI,CAAC,KAAK,EAAE,CAAA;QAClB,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,WAAW,CAC7C;YACI,SAAS,EAAE,eAAe;SAC7B,EACD,OAAO,CAAC,MAAM,CACjB,CAAA;QACD,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAA;QAC3C,GAAG,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAA;IAC9B,CAAC,CAAC,CAAA;IAEF,IAAI,CAAC,iBAAiB,EAAE,KAAK,IAAI,EAAE;QAC/B,MAAM,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,CAAA;QACzB,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;QAC7B,MAAM,GAAG,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAA;QAC/B,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;IACvC,CAAC,CAAC,CAAA;IACF,IAAI,CAAC,oBAAoB,EAAE,KAAK,IAAI,EAAE;QAClC,MAAM,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;QAChC,MAAM,GAAG,CAAC,cAAc,CAAC,KAAK,CAAC,CAAA;QAC/B,MAAM,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;IACvC,CAAC,CAAC,CAAA;IACF,IAAI,CAAC,mBAAmB,EAAE,KAAK,IAAI,EAAE;QACjC,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;QACtC,MAAM,GAAG,CAAC,aAAa,CAAC,4CAA4C,CAAC,CAAA;QACrE,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,4CAA4C,CAAC,CAAA;IAC7E,CAAC,CAAC,CAAA;IACF,IAAI,CAAC,YAAY,EAAE,KAAK,IAAI,EAAE;QAC1B,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;QAC/B,MAAM,SAAS,GAAG;YACd,OAAO,EAAE,MAAM;YACf,eAAe,EAAE,4CAA4C;YAC7D,OAAO,EAAE,CAAC;SACb,CAAA;QACD,MAAM,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,CAAA;QAC3B,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,aAAa,CAAC,SAAS,CAAC,CAAA;IAC5C,CAAC,CAAC,CAAA;AACN,CAAC,CAAC,CAAA"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=members.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"members.test.d.ts","sourceRoot":"","sources":["../../../../src/tests/multi/sync-agent/members.test.ts"],"names":[],"mappings":""}
@@ -1,35 +0,0 @@
1
- /**
2
- * @group with-entitlements
3
- */
4
- import { Bot } from '../../../sync-agent/utils/bot';
5
- import { waitFor } from '../../testUtils';
6
- import { MembershipOp } from '@towns-labs/proto';
7
- describe('members.test.ts', () => {
8
- const testUser = new Bot();
9
- let syncAgent;
10
- let space;
11
- beforeAll(async () => {
12
- await testUser.fundWallet();
13
- syncAgent = await testUser.makeSyncAgent();
14
- await syncAgent.start();
15
- const { spaceId } = await syncAgent.spaces.createSpace({ spaceName: 'Blast Off' }, testUser.signer);
16
- space = syncAgent.spaces.getSpace(spaceId);
17
- });
18
- afterAll(async () => {
19
- await syncAgent.stop();
20
- });
21
- test('member should be defined in a new space', async () => {
22
- expect(syncAgent.spaces.value.status).not.toBe('loading');
23
- await waitFor(() => expect(space.value.status).not.toBe('loading'));
24
- await waitFor(() => expect(space.data.channelIds.length).toBe(1));
25
- const members = space.members.data;
26
- expect(members.userIds.length).toBe(1);
27
- expect(members.userIds[0]).toBe(testUser.userId);
28
- });
29
- test('Members.getMember always return a member, even if not in the space/channel yet', async () => {
30
- const newMember = new Bot();
31
- const member = space.members.get(newMember.userId);
32
- expect(member.membership).toBe(MembershipOp.SO_UNSPECIFIED);
33
- });
34
- });
35
- //# sourceMappingURL=members.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"members.test.js","sourceRoot":"","sources":["../../../../src/tests/multi/sync-agent/members.test.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,GAAG,EAAE,MAAM,+BAA+B,CAAA;AACnD,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAA;AAGzC,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAEhD,QAAQ,CAAC,iBAAiB,EAAE,GAAG,EAAE;IAC7B,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAE,CAAA;IAC1B,IAAI,SAAoB,CAAA;IACxB,IAAI,KAAY,CAAA;IAChB,SAAS,CAAC,KAAK,IAAI,EAAE;QACjB,MAAM,QAAQ,CAAC,UAAU,EAAE,CAAA;QAC3B,SAAS,GAAG,MAAM,QAAQ,CAAC,aAAa,EAAE,CAAA;QAC1C,MAAM,SAAS,CAAC,KAAK,EAAE,CAAA;QACvB,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,SAAS,CAAC,MAAM,CAAC,WAAW,CAClD,EAAE,SAAS,EAAE,WAAW,EAAE,EAC1B,QAAQ,CAAC,MAAM,CAClB,CAAA;QAED,KAAK,GAAG,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAE,CAAA;IAC/C,CAAC,CAAC,CAAA;IAEF,QAAQ,CAAC,KAAK,IAAI,EAAE;QAChB,MAAM,SAAS,CAAC,IAAI,EAAE,CAAA;IAC1B,CAAC,CAAC,CAAA;IAEF,IAAI,CAAC,yCAAyC,EAAE,KAAK,IAAI,EAAE;QACvD,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;QACzD,MAAM,OAAO,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAA;QACnE,MAAM,OAAO,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAA;QAEjE,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAA;QAClC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QACtC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAA;IACpD,CAAC,CAAC,CAAA;IAEF,IAAI,CAAC,gFAAgF,EAAE,KAAK,IAAI,EAAE;QAC9F,MAAM,SAAS,GAAG,IAAI,GAAG,EAAE,CAAA;QAC3B,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,MAAM,CAAC,CAAA;QAClD,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC,CAAA;IAC/D,CAAC,CAAC,CAAA;AACN,CAAC,CAAC,CAAA"}
@@ -1,5 +0,0 @@
1
- /**
2
- * @group with-entitlements
3
- */
4
- export {};
5
- //# sourceMappingURL=riverConnection.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"riverConnection.test.d.ts","sourceRoot":"","sources":["../../../../src/tests/multi/sync-agent/riverConnection.test.ts"],"names":[],"mappings":"AAAA;;GAEG"}
@@ -1,39 +0,0 @@
1
- /**
2
- * @group with-entitlements
3
- */
4
- import { Bot } from '../../../sync-agent/utils/bot';
5
- import { waitFor } from '../../testUtils';
6
- describe('RiverConnection.test.ts', () => {
7
- const testUser = new Bot();
8
- beforeEach(async () => {
9
- await testUser.fundWallet();
10
- });
11
- // test that a riverConnection will eventually be defined if passed valid config
12
- test('riverConnection initializes from empty', async () => {
13
- const syncAgent = await testUser.makeSyncAgent();
14
- const riverConnection = syncAgent.riverConnection;
15
- // check initial state
16
- expect(riverConnection.client).toBeUndefined();
17
- // load
18
- await syncAgent.start();
19
- await waitFor(() => {
20
- expect(riverConnection.client).toBeDefined();
21
- });
22
- // cleanup
23
- await syncAgent.stop();
24
- });
25
- // test that a riverConnection will instantly be defined if data exists in local store
26
- test('riverConnection loads from db', async () => {
27
- // init
28
- const syncAgent = await testUser.makeSyncAgent();
29
- const riverConnection = syncAgent.riverConnection;
30
- // check initial state
31
- expect(riverConnection.client).toBeUndefined();
32
- // load
33
- await syncAgent.start();
34
- // should still be defined before we even start!
35
- expect(riverConnection.client).toBeDefined();
36
- await riverConnection.stop();
37
- });
38
- });
39
- //# sourceMappingURL=riverConnection.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"riverConnection.test.js","sourceRoot":"","sources":["../../../../src/tests/multi/sync-agent/riverConnection.test.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,GAAG,EAAE,MAAM,+BAA+B,CAAA;AACnD,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAA;AAEzC,QAAQ,CAAC,yBAAyB,EAAE,GAAG,EAAE;IACrC,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAE,CAAA;IAE1B,UAAU,CAAC,KAAK,IAAI,EAAE;QAClB,MAAM,QAAQ,CAAC,UAAU,EAAE,CAAA;IAC/B,CAAC,CAAC,CAAA;IAEF,gFAAgF;IAChF,IAAI,CAAC,wCAAwC,EAAE,KAAK,IAAI,EAAE;QACtD,MAAM,SAAS,GAAG,MAAM,QAAQ,CAAC,aAAa,EAAE,CAAA;QAChD,MAAM,eAAe,GAAG,SAAS,CAAC,eAAe,CAAA;QAEjD,sBAAsB;QACtB,MAAM,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,aAAa,EAAE,CAAA;QAE9C,OAAO;QACP,MAAM,SAAS,CAAC,KAAK,EAAE,CAAA;QAEvB,MAAM,OAAO,CAAC,GAAG,EAAE;YACf,MAAM,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,WAAW,EAAE,CAAA;QAChD,CAAC,CAAC,CAAA;QACF,UAAU;QACV,MAAM,SAAS,CAAC,IAAI,EAAE,CAAA;IAC1B,CAAC,CAAC,CAAA;IACF,sFAAsF;IACtF,IAAI,CAAC,+BAA+B,EAAE,KAAK,IAAI,EAAE;QAC7C,OAAO;QACP,MAAM,SAAS,GAAG,MAAM,QAAQ,CAAC,aAAa,EAAE,CAAA;QAChD,MAAM,eAAe,GAAG,SAAS,CAAC,eAAe,CAAA;QAEjD,sBAAsB;QACtB,MAAM,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,aAAa,EAAE,CAAA;QAE9C,OAAO;QACP,MAAM,SAAS,CAAC,KAAK,EAAE,CAAA;QAEvB,gDAAgD;QAChD,MAAM,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,WAAW,EAAE,CAAA;QAC5C,MAAM,eAAe,CAAC,IAAI,EAAE,CAAA;IAChC,CAAC,CAAC,CAAA;AACN,CAAC,CAAC,CAAA"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=spaces.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"spaces.test.d.ts","sourceRoot":"","sources":["../../../../src/tests/multi/sync-agent/spaces.test.ts"],"names":[],"mappings":""}
@@ -1,33 +0,0 @@
1
- /**
2
- * @group with-entitlements
3
- */
4
- import { dlogger } from '@towns-labs/utils';
5
- import { Bot } from '../../../sync-agent/utils/bot';
6
- import { findMessageByText, waitFor } from '../../testUtils';
7
- const logger = dlogger('csb:test:spaces');
8
- describe('spaces.test.ts', () => {
9
- logger.log('start');
10
- const testUser = new Bot();
11
- test('create/leave/join space', async () => {
12
- await testUser.fundWallet();
13
- const syncAgent = await testUser.makeSyncAgent();
14
- await syncAgent.start();
15
- expect(syncAgent.spaces.value.status).not.toBe('loading');
16
- const { spaceId, defaultChannelId } = await syncAgent.spaces.createSpace({ spaceName: 'BlastOff' }, testUser.signer);
17
- expect(syncAgent.spaces.data.spaceIds.length).toBe(1);
18
- expect(syncAgent.spaces.data.spaceIds[0]).toBe(spaceId);
19
- expect(syncAgent.spaces.getSpace(spaceId)).toBeDefined();
20
- const space = syncAgent.spaces.getSpace(spaceId);
21
- await waitFor(() => expect(space.value.status).not.toBe('loading'));
22
- await waitFor(() => expect(space.data.channelIds.length).toBe(1));
23
- expect(space.data.channelIds[0]).toBe(defaultChannelId);
24
- expect(space.getChannel(defaultChannelId)).toBeDefined();
25
- const channel = space.getChannel(defaultChannelId);
26
- expect(channel.data.isJoined).toBe(true);
27
- await channel.sendMessage('hello world');
28
- expect(channel.timeline.events.value.length).toBeGreaterThan(1);
29
- expect(findMessageByText(channel.timeline.events.value, 'hello world')).toBeDefined();
30
- await syncAgent.stop();
31
- });
32
- });
33
- //# sourceMappingURL=spaces.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"spaces.test.js","sourceRoot":"","sources":["../../../../src/tests/multi/sync-agent/spaces.test.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAA;AAC3C,OAAO,EAAE,GAAG,EAAE,MAAM,+BAA+B,CAAA;AACnD,OAAO,EAAE,iBAAiB,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAA;AAE5D,MAAM,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAA;AAEzC,QAAQ,CAAC,gBAAgB,EAAE,GAAG,EAAE;IAC5B,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;IACnB,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAE,CAAA;IAE1B,IAAI,CAAC,yBAAyB,EAAE,KAAK,IAAI,EAAE;QACvC,MAAM,QAAQ,CAAC,UAAU,EAAE,CAAA;QAC3B,MAAM,SAAS,GAAG,MAAM,QAAQ,CAAC,aAAa,EAAE,CAAA;QAChD,MAAM,SAAS,CAAC,KAAK,EAAE,CAAA;QACvB,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;QACzD,MAAM,EAAE,OAAO,EAAE,gBAAgB,EAAE,GAAG,MAAM,SAAS,CAAC,MAAM,CAAC,WAAW,CACpE,EAAE,SAAS,EAAE,UAAU,EAAE,EACzB,QAAQ,CAAC,MAAM,CAClB,CAAA;QACD,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QACrD,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;QACvD,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,WAAW,EAAE,CAAA;QACxD,MAAM,KAAK,GAAG,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAA;QAChD,MAAM,OAAO,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAA;QACnE,MAAM,OAAO,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAA;QACjE,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAA;QACvD,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,gBAAgB,CAAC,CAAC,CAAC,WAAW,EAAE,CAAA;QACxD,MAAM,OAAO,GAAG,KAAK,CAAC,UAAU,CAAC,gBAAgB,CAAC,CAAA;QAClD,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QACxC,MAAM,OAAO,CAAC,WAAW,CAAC,aAAa,CAAC,CAAA;QACxC,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAA;QAC/D,MAAM,CAAC,iBAAiB,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,EAAE,aAAa,CAAC,CAAC,CAAC,WAAW,EAAE,CAAA;QACrF,MAAM,SAAS,CAAC,IAAI,EAAE,CAAA;IAC1B,CAAC,CAAC,CAAA;AACN,CAAC,CAAC,CAAA"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=streams.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"streams.test.d.ts","sourceRoot":"","sources":["../../../../src/tests/multi/sync-agent/streams.test.ts"],"names":[],"mappings":""}
@@ -1,27 +0,0 @@
1
- /**
2
- * @group with-entitlements
3
- */
4
- import { dlogger } from '@towns-labs/utils';
5
- import { Bot } from '../../../sync-agent/utils/bot';
6
- import { makeUniqueMediaStreamId, streamIdAsBytes } from '../../../id';
7
- const logger = dlogger('csb:test:streams');
8
- describe('streams.test.ts', () => {
9
- logger.log('start');
10
- const testUser = new Bot();
11
- beforeAll(async () => {
12
- await testUser.fundWallet();
13
- });
14
- test('stream exists', async () => {
15
- const syncAgent = await testUser.makeSyncAgent();
16
- await syncAgent.start();
17
- const { spaceId, defaultChannelId } = await syncAgent.spaces.createSpace({ spaceName: 'BlastOff' }, testUser.signer);
18
- const spaceExists = await syncAgent.riverConnection.streamExists(streamIdAsBytes(spaceId));
19
- expect(spaceExists).toBe(true);
20
- const channelExists = await syncAgent.riverConnection.streamExists(streamIdAsBytes(defaultChannelId));
21
- expect(channelExists).toBe(true);
22
- const notAStream = makeUniqueMediaStreamId();
23
- const notAStreamExists = await syncAgent.riverConnection.streamExists(streamIdAsBytes(notAStream));
24
- expect(notAStreamExists).toBe(false);
25
- });
26
- });
27
- //# sourceMappingURL=streams.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"streams.test.js","sourceRoot":"","sources":["../../../../src/tests/multi/sync-agent/streams.test.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAA;AAC3C,OAAO,EAAE,GAAG,EAAE,MAAM,+BAA+B,CAAA;AACnD,OAAO,EAAE,uBAAuB,EAAE,eAAe,EAAE,MAAM,aAAa,CAAA;AAEtE,MAAM,MAAM,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAAA;AAE1C,QAAQ,CAAC,iBAAiB,EAAE,GAAG,EAAE;IAC7B,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;IACnB,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAE,CAAA;IAE1B,SAAS,CAAC,KAAK,IAAI,EAAE;QACjB,MAAM,QAAQ,CAAC,UAAU,EAAE,CAAA;IAC/B,CAAC,CAAC,CAAA;IAEF,IAAI,CAAC,eAAe,EAAE,KAAK,IAAI,EAAE;QAC7B,MAAM,SAAS,GAAG,MAAM,QAAQ,CAAC,aAAa,EAAE,CAAA;QAChD,MAAM,SAAS,CAAC,KAAK,EAAE,CAAA;QACvB,MAAM,EAAE,OAAO,EAAE,gBAAgB,EAAE,GAAG,MAAM,SAAS,CAAC,MAAM,CAAC,WAAW,CACpE,EAAE,SAAS,EAAE,UAAU,EAAE,EACzB,QAAQ,CAAC,MAAM,CAClB,CAAA;QACD,MAAM,WAAW,GAAG,MAAM,SAAS,CAAC,eAAe,CAAC,YAAY,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC,CAAA;QAC1F,MAAM,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAE9B,MAAM,aAAa,GAAG,MAAM,SAAS,CAAC,eAAe,CAAC,YAAY,CAC9D,eAAe,CAAC,gBAAgB,CAAC,CACpC,CAAA;QACD,MAAM,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAEhC,MAAM,UAAU,GAAG,uBAAuB,EAAE,CAAA;QAC5C,MAAM,gBAAgB,GAAG,MAAM,SAAS,CAAC,eAAe,CAAC,YAAY,CACjE,eAAe,CAAC,UAAU,CAAC,CAC9B,CAAA;QACD,MAAM,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;IACxC,CAAC,CAAC,CAAA;AACN,CAAC,CAAC,CAAA"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=syncAgent.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"syncAgent.test.d.ts","sourceRoot":"","sources":["../../../../src/tests/multi/sync-agent/syncAgent.test.ts"],"names":[],"mappings":""}
@@ -1,68 +0,0 @@
1
- /**
2
- * @group with-entitlements
3
- */
4
- import { dlogger } from '@towns-labs/utils';
5
- import { waitFor } from '../../testUtils';
6
- import { MembershipOp } from '@towns-labs/proto';
7
- import { Bot } from '../../../sync-agent/utils/bot';
8
- import { AuthStatus } from '../../../sync-agent/river-connection/models/authStatus';
9
- import { makeBearerToken, makeSignerContextFromBearerToken } from '../../../signerContext';
10
- import { SyncAgent } from '../../../sync-agent/syncAgent';
11
- import { townsEnv } from '../../../townsEnv';
12
- const logger = dlogger('csb:test:syncAgent');
13
- describe('syncAgent.test.ts', () => {
14
- const townsConfig = townsEnv().makeTownsConfig();
15
- const testUser = new Bot(undefined, townsConfig);
16
- beforeEach(async () => {
17
- await testUser.fundWallet();
18
- });
19
- test('syncAgent', async () => {
20
- const syncAgent = await testUser.makeSyncAgent();
21
- expect(syncAgent.user.value.status).toBe('loading');
22
- expect(syncAgent.riverConnection.authStatus.value).toBe(AuthStatus.Initializing);
23
- await syncAgent.start();
24
- expect(syncAgent.user.value.status).toBe('loaded');
25
- await waitFor(() => expect(syncAgent.riverConnection.authStatus.value).toBe(AuthStatus.Credentialed));
26
- expect(Object.keys(syncAgent.user.memberships.data.memberships).length).toBe(0);
27
- expect(syncAgent.spaces.data.spaceIds.length).toBe(0);
28
- syncAgent.store.newTransactionGroup('createSpace');
29
- const { spaceId, defaultChannelId } = await syncAgent.spaces.createSpace({ spaceName: 'BlastOff' }, testUser.signer);
30
- logger.log('spaceId', spaceId);
31
- await waitFor(() => expect(Object.keys(syncAgent.user.memberships.data.memberships).length).toBe(2));
32
- expect(syncAgent.user.memberships.data.memberships[spaceId].op).toBe(MembershipOp.SO_JOIN);
33
- expect(syncAgent.user.memberships.data.memberships[defaultChannelId].op).toBe(MembershipOp.SO_JOIN);
34
- expect(syncAgent.riverConnection.authStatus.value).toBe(AuthStatus.ConnectedToRiver);
35
- expect(syncAgent.user.memberships.data.initialized).toBe(true);
36
- expect(syncAgent.user.value.status).toBe('loaded');
37
- await syncAgent.store.commitTransaction();
38
- expect(syncAgent.user.value.status).toBe('loaded');
39
- expect(syncAgent.spaces.data.spaceIds.length).toBe(1);
40
- await syncAgent.stop();
41
- });
42
- test('syncAgent loads again', async () => {
43
- const syncAgent = await testUser.makeSyncAgent();
44
- expect(syncAgent.user.value.status).toBe('loading');
45
- await syncAgent.start();
46
- expect(syncAgent.riverConnection.authStatus.value).toBe(AuthStatus.ConnectedToRiver);
47
- expect(syncAgent.user.value.status).toBe('loaded');
48
- expect(syncAgent.user.memberships.value.status).toBe('loaded');
49
- expect(syncAgent.user.memberships.data.initialized).toBe(true);
50
- await waitFor(() => expect(syncAgent.spaces.data.spaceIds.length).toBe(1));
51
- await syncAgent.stop();
52
- });
53
- test('logIn with delegate', async () => {
54
- const bearerToken = await makeBearerToken(testUser.signer, { days: 1 });
55
- logger.log('bearerTokenStr', bearerToken);
56
- const signerContext = await makeSignerContextFromBearerToken(bearerToken);
57
- const syncAgent = new SyncAgent({
58
- townsConfig: townsEnv().makeTownsConfig(),
59
- context: signerContext,
60
- });
61
- await syncAgent.start();
62
- expect(syncAgent.riverConnection.authStatus.value).toBe(AuthStatus.ConnectedToRiver);
63
- expect(syncAgent.user.value.status).toBe('loaded');
64
- await waitFor(() => expect(syncAgent.spaces.data.spaceIds.length).toBe(1));
65
- await syncAgent.stop();
66
- });
67
- });
68
- //# sourceMappingURL=syncAgent.test.js.map