@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.
- package/dist/createApp.d.ts.map +1 -1
- package/dist/createApp.js +7 -1
- package/dist/createApp.js.map +1 -1
- package/dist/id.d.ts +1 -0
- package/dist/id.d.ts.map +1 -1
- package/dist/id.js +3 -0
- package/dist/id.js.map +1 -1
- package/dist/streamStateView_Members.d.ts +7 -0
- package/dist/streamStateView_Members.d.ts.map +1 -1
- package/dist/streamStateView_Members.js +19 -0
- package/dist/streamStateView_Members.js.map +1 -1
- package/dist/sync-agent/dms/models/dm.d.ts +2 -4
- package/dist/sync-agent/dms/models/dm.d.ts.map +1 -1
- package/dist/sync-agent/dms/models/dm.js +2 -30
- package/dist/sync-agent/dms/models/dm.js.map +1 -1
- package/dist/sync-agent/gdms/models/gdm.d.ts +2 -4
- package/dist/sync-agent/gdms/models/gdm.d.ts.map +1 -1
- package/dist/sync-agent/gdms/models/gdm.js +2 -30
- package/dist/sync-agent/gdms/models/gdm.js.map +1 -1
- package/dist/sync-agent/river-connection/riverConnection.d.ts +1 -3
- package/dist/sync-agent/river-connection/riverConnection.d.ts.map +1 -1
- package/dist/sync-agent/river-connection/riverConnection.js +5 -3
- package/dist/sync-agent/river-connection/riverConnection.js.map +1 -1
- package/dist/sync-agent/spaces/models/channel.d.ts +3 -6
- package/dist/sync-agent/spaces/models/channel.d.ts.map +1 -1
- package/dist/sync-agent/spaces/models/channel.js +4 -76
- package/dist/sync-agent/spaces/models/channel.js.map +1 -1
- package/dist/sync-agent/spaces/models/space.d.ts +6 -6
- package/dist/sync-agent/spaces/models/space.d.ts.map +1 -1
- package/dist/sync-agent/spaces/models/space.js +8 -30
- package/dist/sync-agent/spaces/models/space.js.map +1 -1
- package/dist/sync-agent/spaces/spaces.d.ts +3 -4
- package/dist/sync-agent/spaces/spaces.d.ts.map +1 -1
- package/dist/sync-agent/spaces/spaces.js +6 -25
- package/dist/sync-agent/spaces/spaces.js.map +1 -1
- package/dist/sync-agent/syncAgent.d.ts.map +1 -1
- package/dist/sync-agent/syncAgent.js +2 -7
- package/dist/sync-agent/syncAgent.js.map +1 -1
- package/dist/tests/multi_ne/gdms.test.js +50 -3
- package/dist/tests/multi_ne/gdms.test.js.map +1 -1
- package/dist/tests/multi_ne/userInboxMessage.test.js +3 -3
- package/dist/tests/multi_ne/userInboxMessage.test.js.map +1 -1
- package/dist/townsEnv.js +5 -5
- package/dist/townsEnv.js.map +1 -1
- package/package.json +10 -10
- package/dist/createBot.d.ts +0 -159
- package/dist/createBot.d.ts.map +0 -1
- package/dist/createBot.js +0 -206
- package/dist/createBot.js.map +0 -1
- package/dist/makeRiverRpcClient.d.ts +0 -6
- package/dist/makeRiverRpcClient.d.ts.map +0 -1
- package/dist/makeRiverRpcClient.js +0 -9
- package/dist/makeRiverRpcClient.js.map +0 -1
- package/dist/streamStateView_ChannelMetadata.d.ts +0 -22
- package/dist/streamStateView_ChannelMetadata.d.ts.map +0 -1
- package/dist/streamStateView_ChannelMetadata.js +0 -77
- package/dist/streamStateView_ChannelMetadata.js.map +0 -1
- package/dist/sync-agent/entitlements/entitlements.d.ts +0 -10
- package/dist/sync-agent/entitlements/entitlements.d.ts.map +0 -1
- package/dist/sync-agent/entitlements/entitlements.js +0 -20
- package/dist/sync-agent/entitlements/entitlements.js.map +0 -1
- package/dist/sync-agent/river-connection/models/riverChain.d.ts +0 -24
- package/dist/sync-agent/river-connection/models/riverChain.d.ts.map +0 -1
- package/dist/sync-agent/river-connection/models/riverChain.js +0 -66
- package/dist/sync-agent/river-connection/models/riverChain.js.map +0 -1
- package/dist/tests/multi/appRegistryService.test.d.ts +0 -2
- package/dist/tests/multi/appRegistryService.test.d.ts.map +0 -1
- package/dist/tests/multi/appRegistryService.test.js +0 -41
- package/dist/tests/multi/appRegistryService.test.js.map +0 -1
- package/dist/tests/multi/botEntitlements.test.d.ts +0 -5
- package/dist/tests/multi/botEntitlements.test.d.ts.map +0 -1
- package/dist/tests/multi/botEntitlements.test.js +0 -178
- package/dist/tests/multi/botEntitlements.test.js.map +0 -1
- package/dist/tests/multi/botMembership.test.d.ts +0 -5
- package/dist/tests/multi/botMembership.test.d.ts.map +0 -1
- package/dist/tests/multi/botMembership.test.js +0 -295
- package/dist/tests/multi/botMembership.test.js.map +0 -1
- package/dist/tests/multi/botStreamCreation.test.d.ts +0 -5
- package/dist/tests/multi/botStreamCreation.test.d.ts.map +0 -1
- package/dist/tests/multi/botStreamCreation.test.js +0 -60
- package/dist/tests/multi/botStreamCreation.test.js.map +0 -1
- package/dist/tests/multi/channelScrubbing.test.d.ts +0 -5
- package/dist/tests/multi/channelScrubbing.test.d.ts.map +0 -1
- package/dist/tests/multi/channelScrubbing.test.js +0 -102
- package/dist/tests/multi/channelScrubbing.test.js.map +0 -1
- package/dist/tests/multi/notificationService.test.d.ts +0 -2
- package/dist/tests/multi/notificationService.test.d.ts.map +0 -1
- package/dist/tests/multi/notificationService.test.js +0 -51
- package/dist/tests/multi/notificationService.test.js.map +0 -1
- package/dist/tests/multi/sync-agent/member-queue.test.d.ts +0 -2
- package/dist/tests/multi/sync-agent/member-queue.test.d.ts.map +0 -1
- package/dist/tests/multi/sync-agent/member-queue.test.js +0 -54
- package/dist/tests/multi/sync-agent/member-queue.test.js.map +0 -1
- package/dist/tests/multi/sync-agent/member.test.d.ts +0 -2
- package/dist/tests/multi/sync-agent/member.test.d.ts.map +0 -1
- package/dist/tests/multi/sync-agent/member.test.js +0 -45
- package/dist/tests/multi/sync-agent/member.test.js.map +0 -1
- package/dist/tests/multi/sync-agent/members.test.d.ts +0 -2
- package/dist/tests/multi/sync-agent/members.test.d.ts.map +0 -1
- package/dist/tests/multi/sync-agent/members.test.js +0 -35
- package/dist/tests/multi/sync-agent/members.test.js.map +0 -1
- package/dist/tests/multi/sync-agent/riverConnection.test.d.ts +0 -5
- package/dist/tests/multi/sync-agent/riverConnection.test.d.ts.map +0 -1
- package/dist/tests/multi/sync-agent/riverConnection.test.js +0 -39
- package/dist/tests/multi/sync-agent/riverConnection.test.js.map +0 -1
- package/dist/tests/multi/sync-agent/spaces.test.d.ts +0 -2
- package/dist/tests/multi/sync-agent/spaces.test.d.ts.map +0 -1
- package/dist/tests/multi/sync-agent/spaces.test.js +0 -33
- package/dist/tests/multi/sync-agent/spaces.test.js.map +0 -1
- package/dist/tests/multi/sync-agent/streams.test.d.ts +0 -2
- package/dist/tests/multi/sync-agent/streams.test.d.ts.map +0 -1
- package/dist/tests/multi/sync-agent/streams.test.js +0 -27
- package/dist/tests/multi/sync-agent/streams.test.js.map +0 -1
- package/dist/tests/multi/sync-agent/syncAgent.test.d.ts +0 -2
- package/dist/tests/multi/sync-agent/syncAgent.test.d.ts.map +0 -1
- package/dist/tests/multi/sync-agent/syncAgent.test.js +0 -68
- package/dist/tests/multi/sync-agent/syncAgent.test.js.map +0 -1
- package/dist/tests/multi/sync-agent/syncAgents.test.d.ts +0 -2
- package/dist/tests/multi/sync-agent/syncAgents.test.d.ts.map +0 -1
- package/dist/tests/multi/sync-agent/syncAgents.test.js +0 -163
- package/dist/tests/multi/sync-agent/syncAgents.test.js.map +0 -1
- package/dist/tests/multi/sync-agent/timeline.test.d.ts +0 -2
- package/dist/tests/multi/sync-agent/timeline.test.d.ts.map +0 -1
- package/dist/tests/multi/sync-agent/timeline.test.js +0 -232
- package/dist/tests/multi/sync-agent/timeline.test.js.map +0 -1
- package/dist/tests/multi/sync-agent/user.test.d.ts +0 -5
- package/dist/tests/multi/sync-agent/user.test.d.ts.map +0 -1
- package/dist/tests/multi/sync-agent/user.test.js +0 -55
- package/dist/tests/multi/sync-agent/user.test.js.map +0 -1
- package/dist/tests/multi/transactions.test.d.ts +0 -5
- package/dist/tests/multi/transactions.test.d.ts.map +0 -1
- package/dist/tests/multi/transactions.test.js +0 -153
- package/dist/tests/multi/transactions.test.js.map +0 -1
- package/dist/tests/multi/transactions_SpaceReview.test.d.ts +0 -2
- package/dist/tests/multi/transactions_SpaceReview.test.d.ts.map +0 -1
- package/dist/tests/multi/transactions_SpaceReview.test.js +0 -278
- package/dist/tests/multi/transactions_SpaceReview.test.js.map +0 -1
- package/dist/tests/multi/transactions_Tip.test.d.ts +0 -5
- package/dist/tests/multi/transactions_Tip.test.d.ts.map +0 -1
- package/dist/tests/multi/transactions_Tip.test.js +0 -379
- package/dist/tests/multi/transactions_Tip.test.js.map +0 -1
- package/dist/tests/multi_ne/nodeSelection.test.d.ts +0 -5
- package/dist/tests/multi_ne/nodeSelection.test.d.ts.map +0 -1
- package/dist/tests/multi_ne/nodeSelection.test.js +0 -41
- package/dist/tests/multi_ne/nodeSelection.test.js.map +0 -1
- package/dist/tests/multi_ne/trading.solana.test.d.ts +0 -2
- package/dist/tests/multi_ne/trading.solana.test.d.ts.map +0 -1
- package/dist/tests/multi_ne/trading.solana.test.js +0 -229
- package/dist/tests/multi_ne/trading.solana.test.js.map +0 -1
- package/dist/tests/multi_ne/trading.test.d.ts +0 -2
- package/dist/tests/multi_ne/trading.test.d.ts.map +0 -1
- package/dist/tests/multi_ne/trading.test.js +0 -243
- 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
|
package/dist/createBot.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"createBot.js","sourceRoot":"","sources":["../src/createBot.ts"],"names":[],"mappings":"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"}
|
|
@@ -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 +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 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"botEntitlements.test.d.ts","sourceRoot":"","sources":["../../../src/tests/multi/botEntitlements.test.ts"],"names":[],"mappings":"AAAA;;GAEG"}
|