@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
package/dist/createBot.js DELETED
@@ -1,206 +0,0 @@
1
- /**
2
- * createBot - Create a bot (app) account for Towns
3
- *
4
- * This function handles the full setup flow:
5
- * 1. Creates a smart account via EIP-7702 relayer
6
- * 2. Initializes the user on the River network
7
- * 3. Sets up encryption keys
8
- * 4. Returns the app private data needed to run the bot
9
- */
10
- import { privateKeyToAccount, generatePrivateKey } from 'viem/accounts';
11
- import { encodeAbiParameters } from 'viem';
12
- import { ethers } from 'ethers';
13
- import { Client } from './client';
14
- import { makeSignerContext } from './signerContext';
15
- import { makeStreamRpcClient } from './makeStreamRpcClient';
16
- import { RiverDbManager } from './riverDbManager';
17
- import { MockEntitlementsDelegate } from './utils';
18
- import { makeAppPrivateData } from './id';
19
- import { townsEnv } from './townsEnv';
20
- /**
21
- * Creates a bot account for Towns.
22
- *
23
- * This sets up everything needed to run a bot:
24
- * - Creates an EIP-7702 smart account via the relayer
25
- * - Initializes the user on the River network
26
- * - Sets up encryption keys for E2E encrypted messaging
27
- * - Returns the app private data needed to run the bot
28
- *
29
- * @example
30
- * ```typescript
31
- * import { createPublicClient, http } from 'viem'
32
- * import { base } from 'viem/chains'
33
- * import { relayerActions } from '@towns-labs/relayer-client'
34
- * import { getAddresses } from '@towns-labs/contracts/deployments'
35
- * import { createBot, townsEnv } from '@towns-labs/sdk'
36
- *
37
- * // Set up public client with relayer
38
- * const publicClient = createPublicClient({
39
- * chain: base,
40
- * transport: http('https://mainnet.base.org'),
41
- * }).extend(relayerActions({ relayerUrl: 'https://relayer.towns.com' }))
42
- *
43
- * // Get contract addresses for your environment
44
- * const contracts = getAddresses('omega', base.id)
45
- *
46
- * // Create the bot
47
- * const { appAddress, appPrivateData, botPrivateKey } = await createBot({
48
- * ownerAddress: '0x...your-wallet-address...',
49
- * publicClient,
50
- * accountProxy: contracts.accountProxy,
51
- * })
52
- *
53
- * console.log('Bot created:', appAddress)
54
- * console.log('Save this app private data securely:', appPrivateData)
55
- *
56
- * // Now you can use appPrivateData with makeTownsAgent()
57
- * ```
58
- */
59
- export async function createBot(params) {
60
- const { ownerAddress, publicClient, accountProxy, botPrivateKey: providedPrivateKey } = params;
61
- // Get or create the towns config
62
- const townsConfig = params.townsConfig ?? townsEnv().makeTownsConfig();
63
- // Generate or use provided private key
64
- const botPrivateKey = providedPrivateKey ?? generatePrivateKey();
65
- const botAccount = privateKeyToAccount(botPrivateKey);
66
- // Encode the owner address for super admin key authorization
67
- const encodedSuperAdminKey = encodeAbiParameters([{ type: 'address' }], [ownerAddress]);
68
- // Step 1: Create the smart account via relayer
69
- const { accountAddress, success, error } = await publicClient.createAccount({
70
- accountAddress: botAccount.address,
71
- signerKey: botPrivateKey,
72
- delegation: accountProxy,
73
- authorizeKeys: [
74
- {
75
- expiry: '0', // No expiry
76
- type: 'secp256k1',
77
- role: 'admin',
78
- publicKey: encodedSuperAdminKey,
79
- permissions: [],
80
- },
81
- ],
82
- });
83
- if (!success || !accountAddress) {
84
- throw new Error(`Failed to create bot account: ${error ?? 'Unknown error'}`);
85
- }
86
- // Step 2: Create signer context using viem account for primary, ethers for delegate
87
- const delegatePrivateKey = generatePrivateKey();
88
- const delegateWallet = new ethers.Wallet(delegatePrivateKey);
89
- const signerContext = await makeSignerContext(botAccount, delegateWallet);
90
- // Step 3: Create RPC client
91
- const rpcClient = makeStreamRpcClient(townsConfig.services.node.url);
92
- // Step 4: Create crypto store
93
- const cryptoStore = RiverDbManager.getCryptoDb(accountAddress);
94
- // Step 5: Create and initialize the client
95
- const botClient = new Client(signerContext, accountAddress, rpcClient, cryptoStore, new MockEntitlementsDelegate());
96
- try {
97
- // Step 6: Initialize user on the River network
98
- await botClient.initializeUser({ appOwnerAddress: ownerAddress, skipSync: true });
99
- // Step 7: Upload device keys for encryption
100
- await botClient.uploadDeviceKeys();
101
- // Step 8: Export the encryption device
102
- const exportedDevice = await botClient.cryptoBackend?.exportDevice();
103
- if (!exportedDevice) {
104
- throw new Error('Failed to export encryption device');
105
- }
106
- // Step 9: Create the app private data
107
- const appPrivateData = makeAppPrivateData(botPrivateKey, exportedDevice, townsConfig.environmentId, accountAddress);
108
- return {
109
- appAddress: accountAddress,
110
- botPrivateKey,
111
- appPrivateData,
112
- };
113
- }
114
- finally {
115
- // Always stop the client
116
- await botClient.stop();
117
- }
118
- }
119
- /**
120
- * Creates a bot account using a WalletClient for signing.
121
- *
122
- * This variant is useful when you want to use a browser wallet or
123
- * other wallet provider that doesn't expose private keys directly.
124
- *
125
- * Note: You must provide a separate private key for the bot's encryption
126
- * device since the WalletClient can't export keys.
127
- *
128
- * @example
129
- * ```typescript
130
- * import { createWalletClient, custom } from 'viem'
131
- *
132
- * const walletClient = createWalletClient({
133
- * account: window.ethereum.selectedAddress,
134
- * chain: base,
135
- * transport: custom(window.ethereum),
136
- * })
137
- *
138
- * const result = await createBotFromWallet({
139
- * ownerAddress: walletClient.account.address,
140
- * publicClient,
141
- * accountProxy: contracts.accountProxy,
142
- * walletClient,
143
- * })
144
- * ```
145
- */
146
- export async function createBotFromWallet(params) {
147
- const { ownerAddress, publicClient, accountProxy, walletClient } = params;
148
- // Get or create the towns config
149
- const townsConfig = params.townsConfig ?? townsEnv().makeTownsConfig();
150
- // Generate a new private key for the bot
151
- const botPrivateKey = generatePrivateKey();
152
- const botAccount = privateKeyToAccount(botPrivateKey);
153
- // Encode the owner address for super admin key authorization
154
- const encodedSuperAdminKey = encodeAbiParameters([{ type: 'address' }], [ownerAddress]);
155
- // Step 1: Create the smart account via relayer using wallet client
156
- const { accountAddress, success, error } = await publicClient.createAccountWithWallet({
157
- accountAddress: botAccount.address,
158
- walletClient,
159
- delegation: accountProxy,
160
- authorizeKeys: [
161
- {
162
- expiry: '0',
163
- type: 'secp256k1',
164
- role: 'admin',
165
- publicKey: encodedSuperAdminKey,
166
- permissions: [],
167
- },
168
- ],
169
- });
170
- if (!success || !accountAddress) {
171
- throw new Error(`Failed to create bot account: ${error ?? 'Unknown error'}`);
172
- }
173
- // Step 2: Create signer context using viem account for primary, ethers for delegate
174
- const delegatePrivateKey = generatePrivateKey();
175
- const delegateWallet = new ethers.Wallet(delegatePrivateKey);
176
- const signerContext = await makeSignerContext(botAccount, delegateWallet);
177
- // Step 3: Create RPC client
178
- const rpcClient = makeStreamRpcClient(townsConfig.services.node.url);
179
- // Step 4: Create crypto store
180
- const cryptoStore = RiverDbManager.getCryptoDb(accountAddress);
181
- // Step 5: Create and initialize the client
182
- const botClient = new Client(signerContext, accountAddress, rpcClient, cryptoStore, new MockEntitlementsDelegate());
183
- try {
184
- // Step 6: Initialize user on the River network
185
- await botClient.initializeUser({ appOwnerAddress: ownerAddress, skipSync: true });
186
- // Step 7: Upload device keys for encryption
187
- await botClient.uploadDeviceKeys();
188
- // Step 8: Export the encryption device
189
- const exportedDevice = await botClient.cryptoBackend?.exportDevice();
190
- if (!exportedDevice) {
191
- throw new Error('Failed to export encryption device');
192
- }
193
- // Step 9: Create the app private data
194
- const appPrivateData = makeAppPrivateData(botPrivateKey, exportedDevice, townsConfig.environmentId, accountAddress);
195
- return {
196
- appAddress: accountAddress,
197
- botPrivateKey,
198
- appPrivateData,
199
- };
200
- }
201
- finally {
202
- // Always stop the client
203
- await botClient.stop();
204
- }
205
- }
206
- //# sourceMappingURL=createBot.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"createBot.js","sourceRoot":"","sources":["../src/createBot.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAA;AACvE,OAAO,EAAE,mBAAmB,EAAE,MAAM,MAAM,CAAA;AAC1C,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAE/B,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAA;AACjC,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAA;AACnD,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAA;AAC3D,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AACjD,OAAO,EAAE,wBAAwB,EAAE,MAAM,SAAS,CAAA;AAClD,OAAO,EAAE,kBAAkB,EAAE,MAAM,MAAM,CAAA;AACzC,OAAO,EAAE,QAAQ,EAAoB,MAAM,YAAY,CAAA;AA+DvD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsCG;AACH,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,MAAuB;IACnD,MAAM,EAAE,YAAY,EAAE,YAAY,EAAE,YAAY,EAAE,aAAa,EAAE,kBAAkB,EAAE,GAAG,MAAM,CAAA;IAE9F,iCAAiC;IACjC,MAAM,WAAW,GAAG,MAAM,CAAC,WAAW,IAAI,QAAQ,EAAE,CAAC,eAAe,EAAE,CAAA;IAEtE,uCAAuC;IACvC,MAAM,aAAa,GAAG,kBAAkB,IAAI,kBAAkB,EAAE,CAAA;IAChE,MAAM,UAAU,GAAG,mBAAmB,CAAC,aAAa,CAAC,CAAA;IAErD,6DAA6D;IAC7D,MAAM,oBAAoB,GAAG,mBAAmB,CAAC,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,EAAE,CAAC,YAAY,CAAC,CAAC,CAAA;IAEvF,+CAA+C;IAC/C,MAAM,EAAE,cAAc,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,MAAM,YAAY,CAAC,aAAa,CAAC;QACxE,cAAc,EAAE,UAAU,CAAC,OAAO;QAClC,SAAS,EAAE,aAAa;QACxB,UAAU,EAAE,YAAY;QACxB,aAAa,EAAE;YACX;gBACI,MAAM,EAAE,GAAG,EAAE,YAAY;gBACzB,IAAI,EAAE,WAAW;gBACjB,IAAI,EAAE,OAAO;gBACb,SAAS,EAAE,oBAAoB;gBAC/B,WAAW,EAAE,EAAE;aAClB;SACJ;KACJ,CAAC,CAAA;IAEF,IAAI,CAAC,OAAO,IAAI,CAAC,cAAc,EAAE,CAAC;QAC9B,MAAM,IAAI,KAAK,CAAC,iCAAiC,KAAK,IAAI,eAAe,EAAE,CAAC,CAAA;IAChF,CAAC;IAED,oFAAoF;IACpF,MAAM,kBAAkB,GAAG,kBAAkB,EAAE,CAAA;IAC/C,MAAM,cAAc,GAAG,IAAI,MAAM,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAA;IAC5D,MAAM,aAAa,GAAG,MAAM,iBAAiB,CAAC,UAAU,EAAE,cAAc,CAAC,CAAA;IAEzE,4BAA4B;IAC5B,MAAM,SAAS,GAAG,mBAAmB,CAAC,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;IAEpE,8BAA8B;IAC9B,MAAM,WAAW,GAAG,cAAc,CAAC,WAAW,CAAC,cAAc,CAAC,CAAA;IAE9D,2CAA2C;IAC3C,MAAM,SAAS,GAAG,IAAI,MAAM,CACxB,aAAa,EACb,cAAc,EACd,SAAS,EACT,WAAW,EACX,IAAI,wBAAwB,EAAE,CACjC,CAAA;IAED,IAAI,CAAC;QACD,+CAA+C;QAC/C,MAAM,SAAS,CAAC,cAAc,CAAC,EAAE,eAAe,EAAE,YAAY,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAA;QAEjF,4CAA4C;QAC5C,MAAM,SAAS,CAAC,gBAAgB,EAAE,CAAA;QAElC,uCAAuC;QACvC,MAAM,cAAc,GAAG,MAAM,SAAS,CAAC,aAAa,EAAE,YAAY,EAAE,CAAA;QACpE,IAAI,CAAC,cAAc,EAAE,CAAC;YAClB,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAA;QACzD,CAAC;QAED,sCAAsC;QACtC,MAAM,cAAc,GAAG,kBAAkB,CACrC,aAAa,EACb,cAAc,EACd,WAAW,CAAC,aAAa,EACzB,cAAc,CACjB,CAAA;QAED,OAAO;YACH,UAAU,EAAE,cAAc;YAC1B,aAAa;YACb,cAAc;SACjB,CAAA;IACL,CAAC;YAAS,CAAC;QACP,yBAAyB;QACzB,MAAM,SAAS,CAAC,IAAI,EAAE,CAAA;IAC1B,CAAC;AACL,CAAC;AAgCD;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACrC,MAAiC;IAEjC,MAAM,EAAE,YAAY,EAAE,YAAY,EAAE,YAAY,EAAE,YAAY,EAAE,GAAG,MAAM,CAAA;IAEzE,iCAAiC;IACjC,MAAM,WAAW,GAAG,MAAM,CAAC,WAAW,IAAI,QAAQ,EAAE,CAAC,eAAe,EAAE,CAAA;IAEtE,yCAAyC;IACzC,MAAM,aAAa,GAAG,kBAAkB,EAAE,CAAA;IAC1C,MAAM,UAAU,GAAG,mBAAmB,CAAC,aAAa,CAAC,CAAA;IAErD,6DAA6D;IAC7D,MAAM,oBAAoB,GAAG,mBAAmB,CAAC,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,EAAE,CAAC,YAAY,CAAC,CAAC,CAAA;IAEvF,mEAAmE;IACnE,MAAM,EAAE,cAAc,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,MAAM,YAAY,CAAC,uBAAuB,CAAC;QAClF,cAAc,EAAE,UAAU,CAAC,OAAO;QAClC,YAAY;QACZ,UAAU,EAAE,YAAY;QACxB,aAAa,EAAE;YACX;gBACI,MAAM,EAAE,GAAG;gBACX,IAAI,EAAE,WAAW;gBACjB,IAAI,EAAE,OAAO;gBACb,SAAS,EAAE,oBAAoB;gBAC/B,WAAW,EAAE,EAAE;aAClB;SACJ;KACJ,CAAC,CAAA;IAEF,IAAI,CAAC,OAAO,IAAI,CAAC,cAAc,EAAE,CAAC;QAC9B,MAAM,IAAI,KAAK,CAAC,iCAAiC,KAAK,IAAI,eAAe,EAAE,CAAC,CAAA;IAChF,CAAC;IAED,oFAAoF;IACpF,MAAM,kBAAkB,GAAG,kBAAkB,EAAE,CAAA;IAC/C,MAAM,cAAc,GAAG,IAAI,MAAM,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAA;IAC5D,MAAM,aAAa,GAAG,MAAM,iBAAiB,CAAC,UAAU,EAAE,cAAc,CAAC,CAAA;IAEzE,4BAA4B;IAC5B,MAAM,SAAS,GAAG,mBAAmB,CAAC,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;IAEpE,8BAA8B;IAC9B,MAAM,WAAW,GAAG,cAAc,CAAC,WAAW,CAAC,cAAc,CAAC,CAAA;IAE9D,2CAA2C;IAC3C,MAAM,SAAS,GAAG,IAAI,MAAM,CACxB,aAAa,EACb,cAAc,EACd,SAAS,EACT,WAAW,EACX,IAAI,wBAAwB,EAAE,CACjC,CAAA;IAED,IAAI,CAAC;QACD,+CAA+C;QAC/C,MAAM,SAAS,CAAC,cAAc,CAAC,EAAE,eAAe,EAAE,YAAY,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAA;QAEjF,4CAA4C;QAC5C,MAAM,SAAS,CAAC,gBAAgB,EAAE,CAAA;QAElC,uCAAuC;QACvC,MAAM,cAAc,GAAG,MAAM,SAAS,CAAC,aAAa,EAAE,YAAY,EAAE,CAAA;QACpE,IAAI,CAAC,cAAc,EAAE,CAAC;YAClB,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAA;QACzD,CAAC;QAED,sCAAsC;QACtC,MAAM,cAAc,GAAG,kBAAkB,CACrC,aAAa,EACb,cAAc,EACd,WAAW,CAAC,aAAa,EACzB,cAAc,CACjB,CAAA;QAED,OAAO;YACH,UAAU,EAAE,cAAc;YAC1B,aAAa;YACb,cAAc;SACjB,CAAA;IACL,CAAC;YAAS,CAAC;QACP,yBAAyB;QACzB,MAAM,SAAS,CAAC,IAAI,EAAE,CAAA;IAC1B,CAAC;AACL,CAAC"}
@@ -1,6 +0,0 @@
1
- import { RiverChainConfig } from '@towns-protocol/web3';
2
- import { StreamRpcClient } from './makeStreamRpcClient';
3
- import { ethers } from 'ethers';
4
- import { RpcOptions } from './rpcCommon';
5
- export declare function makeRiverRpcClient(provider: ethers.providers.Provider, config: RiverChainConfig, opts?: RpcOptions): Promise<StreamRpcClient>;
6
- //# sourceMappingURL=makeRiverRpcClient.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"makeRiverRpcClient.d.ts","sourceRoot":"","sources":["../src/makeRiverRpcClient.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAuB,MAAM,sBAAsB,CAAA;AAC5E,OAAO,EAAE,eAAe,EAAuB,MAAM,uBAAuB,CAAA;AAC5E,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAC/B,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAExC,wBAAsB,kBAAkB,CACpC,QAAQ,EAAE,MAAM,CAAC,SAAS,CAAC,QAAQ,EACnC,MAAM,EAAE,gBAAgB,EACxB,IAAI,CAAC,EAAE,UAAU,GAClB,OAAO,CAAC,eAAe,CAAC,CAK1B"}
@@ -1,9 +0,0 @@
1
- import { createRiverRegistry } from '@towns-protocol/web3';
2
- import { makeStreamRpcClient } from './makeStreamRpcClient';
3
- export async function makeRiverRpcClient(provider, config, opts) {
4
- const riverRegistry = createRiverRegistry(provider, config);
5
- const urls = await riverRegistry.getOperationalNodeUrls();
6
- const rpcClient = makeStreamRpcClient(urls, () => riverRegistry.getOperationalNodeUrls(), opts);
7
- return rpcClient;
8
- }
9
- //# sourceMappingURL=makeRiverRpcClient.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"makeRiverRpcClient.js","sourceRoot":"","sources":["../src/makeRiverRpcClient.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoB,mBAAmB,EAAE,MAAM,sBAAsB,CAAA;AAC5E,OAAO,EAAmB,mBAAmB,EAAE,MAAM,uBAAuB,CAAA;AAI5E,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACpC,QAAmC,EACnC,MAAwB,EACxB,IAAiB;IAEjB,MAAM,aAAa,GAAG,mBAAmB,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAA;IAC3D,MAAM,IAAI,GAAG,MAAM,aAAa,CAAC,sBAAsB,EAAE,CAAA;IACzD,MAAM,SAAS,GAAG,mBAAmB,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,aAAa,CAAC,sBAAsB,EAAE,EAAE,IAAI,CAAC,CAAA;IAC/F,OAAO,SAAS,CAAA;AACpB,CAAC"}
@@ -1,22 +0,0 @@
1
- import TypedEmitter from 'typed-emitter';
2
- import { ChannelProperties, WrappedEncryptedData } from '@towns-labs/proto';
3
- import { DecryptedContent } from './encryptedContentTypes';
4
- import { StreamEncryptionEvents, StreamEvents, StreamStateEvents } from './streamEvents';
5
- import { RemoteTimelineEvent } from './types';
6
- import { GdmStreamModel, GdmStreamsView } from './views/streams/gdmStreams';
7
- export declare class StreamStateView_ChannelMetadata {
8
- private gdmStreamsView;
9
- log: import("@towns-labs/utils").DLogger;
10
- readonly streamId: string;
11
- get channelProperties(): ChannelProperties | undefined;
12
- get metadataEventId(): string | undefined;
13
- get gdmStreamModel(): GdmStreamModel;
14
- constructor(streamId: string, gdmStreamsView: GdmStreamsView);
15
- applySnapshot(encryptedChannelProperties: WrappedEncryptedData, cleartexts: Record<string, Uint8Array | string> | undefined, encryptionEmitter: TypedEmitter<StreamEncryptionEvents> | undefined): void;
16
- appendEvent(event: RemoteTimelineEvent, cleartext: Uint8Array | string | undefined, emitter: TypedEmitter<StreamEvents> | undefined): void;
17
- prependEvent(_event: RemoteTimelineEvent, _cleartext: Uint8Array | string | undefined, _emitter: TypedEmitter<StreamEvents> | undefined): void;
18
- onDecryptedContent(eventId: string, content: DecryptedContent, stateEmitter: TypedEmitter<StreamStateEvents>): void;
19
- private decryptPayload;
20
- private handleDecryptedContent;
21
- }
22
- //# sourceMappingURL=streamStateView_ChannelMetadata.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"streamStateView_ChannelMetadata.d.ts","sourceRoot":"","sources":["../src/streamStateView_ChannelMetadata.ts"],"names":[],"mappings":"AAAA,OAAO,YAAY,MAAM,eAAe,CAAA;AACxC,OAAO,EAAE,iBAAiB,EAAiB,oBAAoB,EAAE,MAAM,mBAAmB,CAAA;AAE1F,OAAO,EAAE,gBAAgB,EAAsB,MAAM,yBAAyB,CAAA;AAC9E,OAAO,EAAE,sBAAsB,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAA;AACxF,OAAO,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAA;AAC7C,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAA;AAG3E,qBAAa,+BAA+B;IAmBpC,OAAO,CAAC,cAAc;IAlB1B,GAAG,sCAAuC;IAC1C,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;IAGzB,IAAI,iBAAiB,IAAI,iBAAiB,GAAG,SAAS,CAErD;IAED,IAAI,eAAe,IAAI,MAAM,GAAG,SAAS,CAExC;IAED,IAAI,cAAc,IAAI,cAAc,CAEnC;gBAGG,QAAQ,EAAE,MAAM,EACR,cAAc,EAAE,cAAc;IAK1C,aAAa,CACT,0BAA0B,EAAE,oBAAoB,EAChD,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,GAAG,MAAM,CAAC,GAAG,SAAS,EAC3D,iBAAiB,EAAE,YAAY,CAAC,sBAAsB,CAAC,GAAG,SAAS,GACpE,IAAI;IAWP,WAAW,CACP,KAAK,EAAE,mBAAmB,EAC1B,SAAS,EAAE,UAAU,GAAG,MAAM,GAAG,SAAS,EAC1C,OAAO,EAAE,YAAY,CAAC,YAAY,CAAC,GAAG,SAAS,GAChD,IAAI;IAQP,YAAY,CACR,MAAM,EAAE,mBAAmB,EAC3B,UAAU,EAAE,UAAU,GAAG,MAAM,GAAG,SAAS,EAC3C,QAAQ,EAAE,YAAY,CAAC,YAAY,CAAC,GAAG,SAAS,GACjD,IAAI;IAIP,kBAAkB,CACd,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,gBAAgB,EACzB,YAAY,EAAE,YAAY,CAAC,iBAAiB,CAAC,GAC9C,IAAI;IAIP,OAAO,CAAC,cAAc;IAqBtB,OAAO,CAAC,sBAAsB;CAwBjC"}
@@ -1,77 +0,0 @@
1
- import { bin_toHexString, dlog, check } from '@towns-labs/utils';
2
- import { toDecryptedContent } from './encryptedContentTypes';
3
- // channel metadata is only used by gdms, could be moved back into the _GDMChannel helper
4
- export class StreamStateView_ChannelMetadata {
5
- gdmStreamsView;
6
- log = dlog('csb:streams:channel_metadata');
7
- streamId;
8
- // named channelProperties for backwards compatibility
9
- get channelProperties() {
10
- return this.gdmStreamModel.metadata;
11
- }
12
- get metadataEventId() {
13
- return this.gdmStreamModel.metadataEventId;
14
- }
15
- get gdmStreamModel() {
16
- return this.gdmStreamsView.get(this.streamId);
17
- }
18
- constructor(streamId, gdmStreamsView) {
19
- this.gdmStreamsView = gdmStreamsView;
20
- this.streamId = streamId;
21
- }
22
- applySnapshot(encryptedChannelProperties, cleartexts, encryptionEmitter) {
23
- if (!encryptedChannelProperties.data) {
24
- return;
25
- }
26
- const eventId = bin_toHexString(encryptedChannelProperties.eventHash);
27
- const cleartext = cleartexts?.[eventId];
28
- this.gdmStreamsView.setLatestMetadataEventId(this.streamId, eventId);
29
- this.decryptPayload(encryptedChannelProperties.data, eventId, cleartext, encryptionEmitter);
30
- }
31
- appendEvent(event, cleartext, emitter) {
32
- check(event.remoteEvent.event.payload.case === 'gdmChannelPayload');
33
- check(event.remoteEvent.event.payload.value.content.case === 'channelProperties');
34
- const payload = event.remoteEvent.event.payload.value.content.value;
35
- this.gdmStreamsView.setLatestMetadataEventId(this.streamId, event.hashStr);
36
- this.decryptPayload(payload, event.hashStr, cleartext, emitter);
37
- }
38
- prependEvent(_event, _cleartext, _emitter) {
39
- // conveyed in snapshot
40
- }
41
- onDecryptedContent(eventId, content, stateEmitter) {
42
- this.handleDecryptedContent(eventId, content, stateEmitter);
43
- }
44
- decryptPayload(payload, eventId, cleartext, encryptionEmitter) {
45
- if (cleartext) {
46
- const decryptedContent = toDecryptedContent('channelProperties', payload.version, cleartext);
47
- this.handleDecryptedContent(eventId, decryptedContent, encryptionEmitter);
48
- }
49
- else {
50
- encryptionEmitter?.emit('newEncryptedContent', this.streamId, eventId, {
51
- kind: 'channelProperties',
52
- content: payload,
53
- });
54
- }
55
- }
56
- handleDecryptedContent(eventId, content, emitter) {
57
- if (content.kind === 'channelProperties') {
58
- if (!this.gdmStreamModel.metadataEventId ||
59
- !this.gdmStreamModel.metadata ||
60
- this.gdmStreamModel.latestMetadataEventId === eventId) {
61
- this.gdmStreamsView.setMetadata(this.streamId, content.content, eventId);
62
- emitter?.emit('streamChannelPropertiesUpdated', this.streamId);
63
- }
64
- else {
65
- this.log('channelProperties eventId mismatch', {
66
- eventId,
67
- content,
68
- gdmStreamModel: this.gdmStreamModel,
69
- });
70
- }
71
- }
72
- else {
73
- check(false);
74
- }
75
- }
76
- }
77
- //# sourceMappingURL=streamStateView_ChannelMetadata.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"streamStateView_ChannelMetadata.js","sourceRoot":"","sources":["../src/streamStateView_ChannelMetadata.ts"],"names":[],"mappings":"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"}
@@ -1,10 +0,0 @@
1
- import { EntitlementsDelegate } from '../../decryptionExtensions';
2
- import { Permission, SpaceDapp } from '@towns-labs/web3';
3
- import { TownsConfig } from '../../townsEnv';
4
- export declare class Entitlements implements EntitlementsDelegate {
5
- private config;
6
- private spaceDapp;
7
- constructor(config: TownsConfig, spaceDapp: SpaceDapp);
8
- isEntitled(spaceId: string | undefined, channelId: string | undefined, user: string, permission: Permission): Promise<boolean>;
9
- }
10
- //# sourceMappingURL=entitlements.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"entitlements.d.ts","sourceRoot":"","sources":["../../../src/sync-agent/entitlements/entitlements.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAA;AACjE,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAA;AACxD,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAA;AAE5C,qBAAa,YAAa,YAAW,oBAAoB;IAEjD,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,SAAS;gBADT,MAAM,EAAE,WAAW,EACnB,SAAS,EAAE,SAAS;IAG1B,UAAU,CACZ,OAAO,EAAE,MAAM,GAAG,SAAS,EAC3B,SAAS,EAAE,MAAM,GAAG,SAAS,EAC7B,IAAI,EAAE,MAAM,EACZ,UAAU,EAAE,UAAU;CAU7B"}
@@ -1,20 +0,0 @@
1
- export class Entitlements {
2
- config;
3
- spaceDapp;
4
- constructor(config, spaceDapp) {
5
- this.config = config;
6
- this.spaceDapp = spaceDapp;
7
- }
8
- async isEntitled(spaceId, channelId, user, permission) {
9
- if (channelId && spaceId) {
10
- return this.spaceDapp.isEntitledToChannel(spaceId, channelId, user, permission);
11
- }
12
- else if (spaceId) {
13
- return this.spaceDapp.isEntitledToSpace(spaceId, user, permission);
14
- }
15
- else {
16
- return true;
17
- }
18
- }
19
- }
20
- //# sourceMappingURL=entitlements.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"entitlements.js","sourceRoot":"","sources":["../../../src/sync-agent/entitlements/entitlements.ts"],"names":[],"mappings":"AAIA,MAAM,OAAO,YAAY;IAET;IACA;IAFZ,YACY,MAAmB,EACnB,SAAoB;QADpB,WAAM,GAAN,MAAM,CAAa;QACnB,cAAS,GAAT,SAAS,CAAW;IAC7B,CAAC;IAEJ,KAAK,CAAC,UAAU,CACZ,OAA2B,EAC3B,SAA6B,EAC7B,IAAY,EACZ,UAAsB;QAEtB,IAAI,SAAS,IAAI,OAAO,EAAE,CAAC;YACvB,OAAO,IAAI,CAAC,SAAS,CAAC,mBAAmB,CAAC,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,UAAU,CAAC,CAAA;QACnF,CAAC;aAAM,IAAI,OAAO,EAAE,CAAC;YACjB,OAAO,IAAI,CAAC,SAAS,CAAC,iBAAiB,CAAC,OAAO,EAAE,IAAI,EAAE,UAAU,CAAC,CAAA;QACtE,CAAC;aAAM,CAAC;YACJ,OAAO,IAAI,CAAA;QACf,CAAC;IACL,CAAC;CACJ"}
@@ -1,24 +0,0 @@
1
- import { RiverRegistry } from '@towns-protocol/web3';
2
- import { PersistedObservable } from '../../../observable/persistedObservable';
3
- import { Store } from '../../../store/store';
4
- export interface RiverChainModel {
5
- id: '0';
6
- urls: {
7
- value: string;
8
- fetchedAtMs?: number;
9
- };
10
- }
11
- export declare class RiverChain extends PersistedObservable<RiverChainModel> {
12
- private riverRegistryDapp;
13
- private userId;
14
- private log;
15
- private sessionStartMs;
16
- private stopped;
17
- constructor(store: Store, riverRegistryDapp: RiverRegistry, userId: string, logId: string);
18
- protected onLoaded(): void;
19
- stop(): void;
20
- urls(): Promise<string>;
21
- fetchUrls(): Promise<string>;
22
- private withInfiniteRetries;
23
- }
24
- //# sourceMappingURL=riverChain.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"riverChain.d.ts","sourceRoot":"","sources":["../../../../src/sync-agent/river-connection/models/riverChain.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAA;AACpD,OAAO,EAAE,mBAAmB,EAAuB,MAAM,yCAAyC,CAAA;AAClG,OAAO,EAAgB,KAAK,EAAE,MAAM,sBAAsB,CAAA;AAM1D,MAAM,WAAW,eAAe;IAC5B,EAAE,EAAE,GAAG,CAAA;IAEP,IAAI,EAAE;QACF,KAAK,EAAE,MAAM,CAAA;QACb,WAAW,CAAC,EAAE,MAAM,CAAA;KACvB,CAAA;CACJ;AAGD,qBAGa,UAAW,SAAQ,mBAAmB,CAAC,eAAe,CAAC;IAO5D,OAAO,CAAC,iBAAiB;IACzB,OAAO,CAAC,MAAM;IAPlB,OAAO,CAAC,GAAG,CAAgB;IAC3B,OAAO,CAAC,cAAc,CAAa;IACnC,OAAO,CAAC,OAAO,CAAQ;gBAGnB,KAAK,EAAE,KAAK,EACJ,iBAAiB,EAAE,aAAa,EAChC,MAAM,EAAE,MAAM,EACtB,KAAK,EAAE,MAAM;cASE,QAAQ;IAK3B,IAAI;IAIE,IAAI,IAAI,OAAO,CAAC,MAAM,CAAC;IAQvB,SAAS,IAAI,OAAO,CAAC,MAAM,CAAC;IAOlC,OAAO,CAAC,mBAAmB;CAY9B"}
@@ -1,66 +0,0 @@
1
- var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
- else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
- return c > 3 && r && Object.defineProperty(target, key, r), r;
6
- };
7
- import { PersistedObservable, persistedObservable } from '../../../observable/persistedObservable';
8
- import { LoadPriority } from '../../../store/store';
9
- import { dlogger } from '@towns-protocol/utils';
10
- // Define a class that will manage the data model, decorate it to give it store properties
11
- let RiverChain = class RiverChain extends PersistedObservable {
12
- riverRegistryDapp;
13
- userId;
14
- log;
15
- sessionStartMs = Date.now();
16
- stopped = false;
17
- // The constructor is where we set up the class, we pass in the store and any other dependencies
18
- constructor(store, riverRegistryDapp, userId, logId) {
19
- // pass a default value to the parent class, this is what will be used if the data is not loaded
20
- // set the load priority to high, this will load first
21
- super({ id: '0', urls: { value: '' } }, store, LoadPriority.high);
22
- this.riverRegistryDapp = riverRegistryDapp;
23
- this.userId = userId;
24
- this.log = dlogger(`csb:agent:riverChain:${logId}`);
25
- }
26
- // implement start function then wire it up from parent
27
- onLoaded() {
28
- this.log.info('riverChain onLoaded');
29
- this.withInfiniteRetries(() => this.fetchUrls());
30
- }
31
- stop() {
32
- this.stopped = true;
33
- }
34
- async urls() {
35
- // urls is returning the cached data if it exists, otherwise waiting for the data to be fetched
36
- // if the cached data returns a stale node url, the startup will fail
37
- // nodes almost never exit the network, so this is a very rare case
38
- await this.when((x) => x.data.urls.fetchedAtMs !== undefined, { timeoutMs: 15000 });
39
- return this.data.urls.value;
40
- }
41
- async fetchUrls() {
42
- const now = Date.now();
43
- const urls = await this.riverRegistryDapp.getOperationalNodeUrls(); // here we are fetching the node urls
44
- this.setData({ urls: { value: urls, fetchedAtMs: now } }); // if the data is new, update our own state
45
- return urls;
46
- }
47
- withInfiniteRetries(fn, delayMs = 5000) {
48
- if (this.stopped) {
49
- return;
50
- }
51
- fn().catch((e) => {
52
- this.log.error(e);
53
- this.log.info(`retrying in ${delayMs / 1000} seconds`);
54
- setTimeout(() => {
55
- this.withInfiniteRetries(fn, delayMs);
56
- }, delayMs);
57
- });
58
- }
59
- };
60
- RiverChain = __decorate([
61
- persistedObservable({
62
- tableName: 'riverChain', // this is the name of the table in the database
63
- })
64
- ], RiverChain);
65
- export { RiverChain };
66
- //# sourceMappingURL=riverChain.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"riverChain.js","sourceRoot":"","sources":["../../../../src/sync-agent/river-connection/models/riverChain.ts"],"names":[],"mappings":";;;;;;AACA,OAAO,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,yCAAyC,CAAA;AAClG,OAAO,EAAE,YAAY,EAAS,MAAM,sBAAsB,CAAA;AAC1D,OAAO,EAAE,OAAO,EAAkB,MAAM,uBAAuB,CAAA;AAc/D,0FAA0F;AAInF,IAAM,UAAU,GAAhB,MAAM,UAAW,SAAQ,mBAAoC;IAOpD;IACA;IAPJ,GAAG,CAAgB;IACnB,cAAc,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;IAC3B,OAAO,GAAG,KAAK,CAAA;IACvB,gGAAgG;IAChG,YACI,KAAY,EACJ,iBAAgC,EAChC,MAAc,EACtB,KAAa;QAEb,gGAAgG;QAChG,sDAAsD;QACtD,KAAK,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,YAAY,CAAC,IAAI,CAAC,CAAA;QANzD,sBAAiB,GAAjB,iBAAiB,CAAe;QAChC,WAAM,GAAN,MAAM,CAAQ;QAMtB,IAAI,CAAC,GAAG,GAAG,OAAO,CAAC,wBAAwB,KAAK,EAAE,CAAC,CAAA;IACvD,CAAC;IAED,uDAAuD;IACpC,QAAQ;QACvB,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAA;QACpC,IAAI,CAAC,mBAAmB,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,CAAA;IACpD,CAAC;IAED,IAAI;QACA,IAAI,CAAC,OAAO,GAAG,IAAI,CAAA;IACvB,CAAC;IAED,KAAK,CAAC,IAAI;QACN,+FAA+F;QAC/F,qEAAqE;QACrE,mEAAmE;QACnE,MAAM,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,KAAK,SAAS,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAA;QACnF,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAA;IAC/B,CAAC;IAED,KAAK,CAAC,SAAS;QACX,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;QACtB,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,sBAAsB,EAAE,CAAA,CAAC,qCAAqC;QACxG,IAAI,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,WAAW,EAAE,GAAG,EAAE,EAAE,CAAC,CAAA,CAAC,2CAA2C;QACrG,OAAO,IAAI,CAAA;IACf,CAAC;IAEO,mBAAmB,CAAI,EAAoB,EAAE,UAAkB,IAAI;QACvE,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACf,OAAM;QACV,CAAC;QACD,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE;YACb,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;YACjB,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,eAAe,OAAO,GAAG,IAAI,UAAU,CAAC,CAAA;YACtD,UAAU,CAAC,GAAG,EAAE;gBACZ,IAAI,CAAC,mBAAmB,CAAC,EAAE,EAAE,OAAO,CAAC,CAAA;YACzC,CAAC,EAAE,OAAO,CAAC,CAAA;QACf,CAAC,CAAC,CAAA;IACN,CAAC;CACJ,CAAA;AAtDY,UAAU;IAHtB,mBAAmB,CAAC;QACjB,SAAS,EAAE,YAAY,EAAE,gDAAgD;KAC5E,CAAC;GACW,UAAU,CAsDtB"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=appRegistryService.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"appRegistryService.test.d.ts","sourceRoot":"","sources":["../../../src/tests/multi/appRegistryService.test.ts"],"names":[],"mappings":""}
@@ -1,41 +0,0 @@
1
- import { makeSignerContext } from '../../signerContext';
2
- import { AppRegistryService } from '../../appRegistryService';
3
- import { ethers } from 'ethers';
4
- import { townsEnv } from '../../townsEnv';
5
- import { bin_fromHexString } from '@towns-labs/utils';
6
- import { setupWalletsAndContexts, createSpaceAndDefaultChannel, everyoneMembershipStruct, } from '../testUtils';
7
- const appRegistryUrl = townsEnv().getAppRegistryUrl(process.env.RIVER_ENV);
8
- describe('appRegistryService test', () => {
9
- test('authenticate with primary key', async () => {
10
- const wallet = ethers.Wallet.createRandom();
11
- const { finishResponse } = await AppRegistryService.authenticateWithSigner(wallet.address, wallet, appRegistryUrl);
12
- expect(finishResponse.sessionToken).toBeDefined();
13
- });
14
- test('authenticate with delegate key', async () => {
15
- const wallet = ethers.Wallet.createRandom();
16
- const delegateWallet = ethers.Wallet.createRandom();
17
- const signerContext = await makeSignerContext(wallet, delegateWallet, { days: 1 });
18
- const { finishResponse } = await AppRegistryService.authenticate(signerContext, appRegistryUrl);
19
- expect(finishResponse.sessionToken).toBeDefined();
20
- });
21
- test('cannot register a non-app user stream', async () => {
22
- // Set up wallets and contexts for space creation
23
- const { bob, bobProvider, bobSpaceDapp } = await setupWalletsAndContexts();
24
- // Create a space so that bob's user stream can be initialized.
25
- const everyoneMembership = await everyoneMembershipStruct(bobSpaceDapp, bob);
26
- await createSpaceAndDefaultChannel(bob, bobSpaceDapp, bobProvider.wallet, 'test space', everyoneMembership);
27
- // Authentication should work for any user
28
- const { appRegistryRpcClient } = await AppRegistryService.authenticateWithSigner(bob.userId, bob.wallet, // Use wallet directly as signer
29
- appRegistryUrl);
30
- expect(appRegistryRpcClient).toBeDefined();
31
- // However, trying to register should fail because the user's address
32
- // is not a registered app contract address
33
- await expect(appRegistryRpcClient.register({
34
- appId: bin_fromHexString(bob.wallet.address), // Regular user address, not an app contract
35
- appOwnerId: bin_fromHexString(bob.userId),
36
- })).rejects.toThrow();
37
- // Cleanup
38
- await bob.stopSync();
39
- });
40
- });
41
- //# sourceMappingURL=appRegistryService.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"appRegistryService.test.js","sourceRoot":"","sources":["../../../src/tests/multi/appRegistryService.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAA;AACvD,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAA;AAC7D,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAC/B,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AACzC,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAA;AACrD,OAAO,EACH,uBAAuB,EACvB,4BAA4B,EAC5B,wBAAwB,GAC3B,MAAM,cAAc,CAAA;AAErB,MAAM,cAAc,GAAG,QAAQ,EAAE,CAAC,iBAAiB,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAA;AAE1E,QAAQ,CAAC,yBAAyB,EAAE,GAAG,EAAE;IACrC,IAAI,CAAC,+BAA+B,EAAE,KAAK,IAAI,EAAE;QAC7C,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,YAAY,EAAE,CAAA;QAC3C,MAAM,EAAE,cAAc,EAAE,GAAG,MAAM,kBAAkB,CAAC,sBAAsB,CACtE,MAAM,CAAC,OAAO,EACd,MAAM,EACN,cAAc,CACjB,CAAA;QACD,MAAM,CAAC,cAAc,CAAC,YAAY,CAAC,CAAC,WAAW,EAAE,CAAA;IACrD,CAAC,CAAC,CAAA;IACF,IAAI,CAAC,gCAAgC,EAAE,KAAK,IAAI,EAAE;QAC9C,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,YAAY,EAAE,CAAA;QAC3C,MAAM,cAAc,GAAG,MAAM,CAAC,MAAM,CAAC,YAAY,EAAE,CAAA;QACnD,MAAM,aAAa,GAAG,MAAM,iBAAiB,CAAC,MAAM,EAAE,cAAc,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,CAAA;QAElF,MAAM,EAAE,cAAc,EAAE,GAAG,MAAM,kBAAkB,CAAC,YAAY,CAC5D,aAAa,EACb,cAAc,CACjB,CAAA;QACD,MAAM,CAAC,cAAc,CAAC,YAAY,CAAC,CAAC,WAAW,EAAE,CAAA;IACrD,CAAC,CAAC,CAAA;IACF,IAAI,CAAC,uCAAuC,EAAE,KAAK,IAAI,EAAE;QACrD,iDAAiD;QACjD,MAAM,EAAE,GAAG,EAAE,WAAW,EAAE,YAAY,EAAE,GAAG,MAAM,uBAAuB,EAAE,CAAA;QAE1E,+DAA+D;QAC/D,MAAM,kBAAkB,GAAG,MAAM,wBAAwB,CAAC,YAAY,EAAE,GAAG,CAAC,CAAA;QAC5E,MAAM,4BAA4B,CAC9B,GAAG,EACH,YAAY,EACZ,WAAW,CAAC,MAAM,EAClB,YAAY,EACZ,kBAAkB,CACrB,CAAA;QAED,0CAA0C;QAC1C,MAAM,EAAE,oBAAoB,EAAE,GAAG,MAAM,kBAAkB,CAAC,sBAAsB,CAC5E,GAAG,CAAC,MAAM,EACV,GAAG,CAAC,MAAM,EAAE,gCAAgC;QAC5C,cAAc,CACjB,CAAA;QACD,MAAM,CAAC,oBAAoB,CAAC,CAAC,WAAW,EAAE,CAAA;QAE1C,qEAAqE;QACrE,2CAA2C;QAC3C,MAAM,MAAM,CACR,oBAAoB,CAAC,QAAQ,CAAC;YAC1B,KAAK,EAAE,iBAAiB,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,4CAA4C;YAC1F,UAAU,EAAE,iBAAiB,CAAC,GAAG,CAAC,MAAM,CAAC;SAC5C,CAAC,CACL,CAAC,OAAO,CAAC,OAAO,EAAE,CAAA;QAEnB,UAAU;QACV,MAAM,GAAG,CAAC,QAAQ,EAAE,CAAA;IACxB,CAAC,CAAC,CAAA;AACN,CAAC,CAAC,CAAA"}
@@ -1,5 +0,0 @@
1
- /**
2
- * @group with-entitlements
3
- */
4
- export {};
5
- //# sourceMappingURL=botEntitlements.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"botEntitlements.test.d.ts","sourceRoot":"","sources":["../../../src/tests/multi/botEntitlements.test.ts"],"names":[],"mappings":"AAAA;;GAEG"}