@towns-protocol/sdk 0.0.252 → 0.0.255
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/client.d.ts +2 -1
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +6 -5
- package/dist/client.js.map +1 -1
- package/dist/clientDecryptionExtensions.d.ts +2 -1
- package/dist/clientDecryptionExtensions.d.ts.map +1 -1
- package/dist/clientDecryptionExtensions.js +1 -1
- package/dist/clientDecryptionExtensions.js.map +1 -1
- package/dist/decryptionExtensions.d.ts +199 -0
- package/dist/decryptionExtensions.d.ts.map +1 -0
- package/dist/decryptionExtensions.js +678 -0
- package/dist/decryptionExtensions.js.map +1 -0
- package/dist/index.d.ts +21 -5
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +21 -5
- package/dist/index.js.map +1 -1
- package/dist/observable/combine.d.ts +4 -2
- package/dist/observable/combine.d.ts.map +1 -1
- package/dist/observable/combine.js +5 -2
- package/dist/observable/combine.js.map +1 -1
- package/dist/observable/observable.d.ts +1 -1
- package/dist/observable/observable.d.ts.map +1 -1
- package/dist/observable/observable.js +1 -4
- package/dist/observable/observable.js.map +1 -1
- package/dist/observable/observableRecord.d.ts +18 -0
- package/dist/observable/observableRecord.d.ts.map +1 -0
- package/dist/observable/observableRecord.js +71 -0
- package/dist/observable/observableRecord.js.map +1 -0
- package/dist/observable/utils.d.ts +2 -0
- package/dist/observable/utils.d.ts.map +1 -0
- package/dist/observable/utils.js +12 -0
- package/dist/observable/utils.js.map +1 -0
- package/dist/stream.d.ts +1 -1
- package/dist/stream.d.ts.map +1 -1
- package/dist/streamEvents.d.ts +2 -1
- package/dist/streamEvents.d.ts.map +1 -1
- package/dist/streamStateView.d.ts +1 -1
- package/dist/streamStateView.d.ts.map +1 -1
- package/dist/streamStateView.js +9 -9
- package/dist/streamStateView.js.map +1 -1
- package/dist/streamStateView_ChannelMetadata.d.ts +10 -10
- package/dist/streamStateView_ChannelMetadata.d.ts.map +1 -1
- package/dist/streamStateView_ChannelMetadata.js +43 -23
- package/dist/streamStateView_ChannelMetadata.js.map +1 -1
- package/dist/streamStateView_DMChannel.d.ts +7 -4
- package/dist/streamStateView_DMChannel.d.ts.map +1 -1
- package/dist/streamStateView_DMChannel.js +18 -8
- package/dist/streamStateView_DMChannel.js.map +1 -1
- package/dist/streamStateView_GDMChannel.d.ts +5 -2
- package/dist/streamStateView_GDMChannel.d.ts.map +1 -1
- package/dist/streamStateView_GDMChannel.js +12 -5
- package/dist/streamStateView_GDMChannel.js.map +1 -1
- package/dist/streamStateView_Members.d.ts +5 -2
- package/dist/streamStateView_Members.d.ts.map +1 -1
- package/dist/streamStateView_Members.js +11 -1
- package/dist/streamStateView_Members.js.map +1 -1
- package/dist/streamStateView_Members_Solicitations.d.ts +1 -1
- package/dist/streamStateView_Members_Solicitations.d.ts.map +1 -1
- package/dist/streamStateView_Space.d.ts +5 -8
- package/dist/streamStateView_Space.d.ts.map +1 -1
- package/dist/streamStateView_Space.js +26 -23
- package/dist/streamStateView_Space.js.map +1 -1
- package/dist/streamStateView_User.d.ts +11 -18
- package/dist/streamStateView_User.d.ts.map +1 -1
- package/dist/streamStateView_User.js +35 -20
- package/dist/streamStateView_User.js.map +1 -1
- package/dist/streamStateView_UserInbox.d.ts +4 -1
- package/dist/streamStateView_UserInbox.d.ts.map +1 -1
- package/dist/streamStateView_UserInbox.js +6 -1
- package/dist/streamStateView_UserInbox.js.map +1 -1
- package/dist/streamStateView_UserMetadata.d.ts +4 -1
- package/dist/streamStateView_UserMetadata.d.ts.map +1 -1
- package/dist/streamStateView_UserMetadata.js +6 -1
- package/dist/streamStateView_UserMetadata.js.map +1 -1
- package/dist/streamStateView_UserSettings.d.ts +4 -3
- package/dist/streamStateView_UserSettings.d.ts.map +1 -1
- package/dist/streamStateView_UserSettings.js +11 -12
- package/dist/streamStateView_UserSettings.js.map +1 -1
- package/dist/sync-agent/entitlements/entitlements.d.ts +1 -1
- package/dist/sync-agent/river-connection/models/transactionalClient.d.ts +2 -1
- package/dist/sync-agent/river-connection/models/transactionalClient.d.ts.map +1 -1
- package/dist/sync-agent/river-connection/models/transactionalClient.js.map +1 -1
- package/dist/sync-agent/river-connection/riverConnection.d.ts +2 -1
- package/dist/sync-agent/river-connection/riverConnection.d.ts.map +1 -1
- package/dist/sync-agent/river-connection/riverConnection.js.map +1 -1
- package/dist/sync-agent/spaces/models/space.js +1 -1
- package/dist/sync-agent/spaces/models/space.js.map +1 -1
- package/dist/sync-agent/timeline/models/timeline-types.d.ts +1 -2
- package/dist/sync-agent/timeline/models/timeline-types.d.ts.map +1 -1
- package/dist/sync-agent/timeline/models/timeline-types.js +1 -2
- package/dist/sync-agent/timeline/models/timeline-types.js.map +1 -1
- package/dist/sync-agent/user/models/userMemberships.d.ts.map +1 -1
- package/dist/sync-agent/user/models/userMemberships.js +3 -1
- package/dist/sync-agent/user/models/userMemberships.js.map +1 -1
- package/dist/syncedStream.js +1 -1
- package/dist/syncedStream.js.map +1 -1
- package/dist/tests/multi/channelSpaceSettings.test.js +23 -23
- package/dist/tests/multi/channelSpaceSettings.test.js.map +1 -1
- package/dist/tests/multi_ne/client.test.js +2 -1
- package/dist/tests/multi_ne/client.test.js.map +1 -1
- package/dist/tests/multi_ne/space.test.js +5 -7
- package/dist/tests/multi_ne/space.test.js.map +1 -1
- package/dist/tests/multi_ne/streamStateView_User.test.js +3 -3
- package/dist/tests/multi_ne/streamStateView_User.test.js.map +1 -1
- package/dist/tests/testUtils.d.ts +1 -1
- package/dist/tests/testUtils.d.ts.map +1 -1
- package/dist/tests/unit/decryptionExtensions.test.d.ts +2 -0
- package/dist/tests/unit/decryptionExtensions.test.d.ts.map +1 -0
- package/dist/tests/unit/decryptionExtensions.test.js +353 -0
- package/dist/tests/unit/decryptionExtensions.test.js.map +1 -0
- package/dist/tests/unit/observable/combine.test.js +23 -23
- package/dist/tests/unit/observable/combine.test.js.map +1 -1
- package/dist/types.d.ts +1 -1
- package/dist/types.d.ts.map +1 -1
- package/dist/views/streams/channelStreams.d.ts +8 -0
- package/dist/views/streams/channelStreams.d.ts.map +1 -0
- package/dist/views/streams/channelStreams.js +9 -0
- package/dist/views/streams/channelStreams.js.map +1 -0
- package/dist/views/streams/dmStreams.d.ts +13 -0
- package/dist/views/streams/dmStreams.d.ts.map +1 -0
- package/dist/views/streams/dmStreams.js +33 -0
- package/dist/views/streams/dmStreams.js.map +1 -0
- package/dist/views/streams/gdmStreams.d.ts +16 -0
- package/dist/views/streams/gdmStreams.d.ts.map +1 -0
- package/dist/views/streams/gdmStreams.js +40 -0
- package/dist/views/streams/gdmStreams.js.map +1 -0
- package/dist/views/streams/spaceStreams.d.ts +17 -0
- package/dist/views/streams/spaceStreams.d.ts.map +1 -0
- package/dist/views/streams/spaceStreams.js +52 -0
- package/dist/views/streams/spaceStreams.js.map +1 -0
- package/dist/views/streams/streamMemberIds.d.ts +8 -0
- package/dist/views/streams/streamMemberIds.d.ts.map +1 -0
- package/dist/views/streams/streamMemberIds.js +34 -0
- package/dist/views/streams/streamMemberIds.js.map +1 -0
- package/dist/views/streams/streamStatus.d.ts +3 -2
- package/dist/views/streams/streamStatus.d.ts.map +1 -1
- package/dist/views/streams/streamStatus.js +11 -9
- package/dist/views/streams/streamStatus.js.map +1 -1
- package/dist/views/streams/timelineEvents.d.ts +1 -1
- package/dist/views/streams/timelines.d.ts +1 -1
- package/dist/views/streams/unreadMarkersTransform.d.ts +1 -1
- package/dist/views/streams/unreadMarkersTransform.d.ts.map +1 -1
- package/dist/views/streams/unreadMarkersTransform.js.map +1 -1
- package/dist/views/streams/userInboxStreams.d.ts +8 -0
- package/dist/views/streams/userInboxStreams.d.ts.map +1 -0
- package/dist/views/streams/userInboxStreams.js +11 -0
- package/dist/views/streams/userInboxStreams.js.map +1 -0
- package/dist/views/streams/userMetadataStreams.d.ts +8 -0
- package/dist/views/streams/userMetadataStreams.d.ts.map +1 -0
- package/dist/views/streams/userMetadataStreams.js +12 -0
- package/dist/views/streams/userMetadataStreams.js.map +1 -0
- package/dist/views/streams/userSettingsStreams.d.ts +6 -5
- package/dist/views/streams/userSettingsStreams.d.ts.map +1 -1
- package/dist/views/streams/userSettingsStreams.js +29 -17
- package/dist/views/streams/userSettingsStreams.js.map +1 -1
- package/dist/views/streams/userStreamsView.d.ts +26 -0
- package/dist/views/streams/userStreamsView.d.ts.map +1 -0
- package/dist/views/streams/userStreamsView.js +106 -0
- package/dist/views/streams/userStreamsView.js.map +1 -0
- package/dist/views/streamsView.d.ts +28 -2
- package/dist/views/streamsView.d.ts.map +1 -1
- package/dist/views/streamsView.js +71 -10
- package/dist/views/streamsView.js.map +1 -1
- package/dist/views/transforms/dmsAndGdmsTransform.d.ts +24 -0
- package/dist/views/transforms/dmsAndGdmsTransform.d.ts.map +1 -0
- package/dist/views/transforms/dmsAndGdmsTransform.js +63 -0
- package/dist/views/transforms/dmsAndGdmsTransform.js.map +1 -0
- package/dist/views/transforms/membershipsTransform.d.ts +4 -0
- package/dist/views/transforms/membershipsTransform.d.ts.map +1 -0
- package/dist/views/transforms/membershipsTransform.js +16 -0
- package/dist/views/transforms/membershipsTransform.js.map +1 -0
- package/dist/views/transforms/spaceIdsTransform.d.ts +3 -0
- package/dist/views/transforms/spaceIdsTransform.d.ts.map +1 -0
- package/dist/views/transforms/spaceIdsTransform.js +14 -0
- package/dist/views/transforms/spaceIdsTransform.js.map +1 -0
- package/package.json +9 -9
|
@@ -0,0 +1,353 @@
|
|
|
1
|
+
import { BaseDecryptionExtensions, DecryptionStatus, makeSessionKeys, } from '../../decryptionExtensions';
|
|
2
|
+
import { SessionKeysSchema, UserInboxPayload_GroupEncryptionSessionsSchema, } from '@towns-protocol/proto';
|
|
3
|
+
import { GroupEncryptionAlgorithmId, CryptoStore, GroupEncryptionCrypto, } from '@towns-protocol/encryption';
|
|
4
|
+
import { bin_fromHexString, bin_toHexString, dlog, shortenHexString } from '@towns-protocol/dlog';
|
|
5
|
+
import EventEmitter from 'events';
|
|
6
|
+
import { customAlphabet } from 'nanoid';
|
|
7
|
+
import { create, toJsonString } from '@bufbuild/protobuf';
|
|
8
|
+
const log = dlog('test:decryptionExtensions:');
|
|
9
|
+
describe.concurrent('TestDecryptionExtensions', () => {
|
|
10
|
+
// test should iterate over all the algorithms
|
|
11
|
+
it.each(Object.values(GroupEncryptionAlgorithmId))('should be able to make key solicitation request', async (algorithm) => {
|
|
12
|
+
// arrange
|
|
13
|
+
const clientDiscoveryService = {};
|
|
14
|
+
const streamId = genStreamId();
|
|
15
|
+
const alice = genUserId('Alice');
|
|
16
|
+
const aliceUserAddress = stringToArray(alice);
|
|
17
|
+
const bob = genUserId('Bob');
|
|
18
|
+
const bobsPlaintext = "bob's plaintext";
|
|
19
|
+
const { client: aliceClient, decryptionExtension: aliceDex } = await createCryptoMocks(alice, clientDiscoveryService);
|
|
20
|
+
const { crypto: bobCrypto, decryptionExtension: bobDex } = await createCryptoMocks(bob, clientDiscoveryService);
|
|
21
|
+
// act
|
|
22
|
+
aliceDex.start();
|
|
23
|
+
// bob starts the decryption extension
|
|
24
|
+
bobDex.start();
|
|
25
|
+
// bob encrypts a message
|
|
26
|
+
const encryptedData = await bobCrypto.encryptGroupEvent(streamId, new TextEncoder().encode(bobsPlaintext), algorithm);
|
|
27
|
+
const encryptedData_V0 = await bobCrypto.encryptGroupEvent_deprecated_v0(streamId, bobsPlaintext, algorithm);
|
|
28
|
+
const sessionId = encryptedData.sessionId;
|
|
29
|
+
// alice doesn't have the session key
|
|
30
|
+
// alice sends a key solicitation request
|
|
31
|
+
const keySolicitationData = {
|
|
32
|
+
deviceKey: aliceDex.userDevice.deviceKey,
|
|
33
|
+
fallbackKey: aliceDex.userDevice.fallbackKey,
|
|
34
|
+
isNewDevice: true,
|
|
35
|
+
sessionIds: [sessionId],
|
|
36
|
+
};
|
|
37
|
+
const keySolicitation = aliceClient.sendKeySolicitation(keySolicitationData);
|
|
38
|
+
// pretend bob receives a key solicitation request from alice, and starts processing it.
|
|
39
|
+
await bobDex.handleKeySolicitationRequest(streamId, '', alice, aliceUserAddress, keySolicitationData, {
|
|
40
|
+
hash: new Uint8Array(),
|
|
41
|
+
signature: new Uint8Array(),
|
|
42
|
+
event: {
|
|
43
|
+
creatorAddress: new Uint8Array(),
|
|
44
|
+
delegateSig: new Uint8Array(),
|
|
45
|
+
delegateExpiryEpochMs: 0n,
|
|
46
|
+
},
|
|
47
|
+
});
|
|
48
|
+
// alice waits for the response
|
|
49
|
+
await keySolicitation;
|
|
50
|
+
// after alice gets the session key,
|
|
51
|
+
// try to decrypt the message
|
|
52
|
+
const decrypted = await aliceDex.crypto.decryptGroupEvent(streamId, encryptedData);
|
|
53
|
+
const decrypted_V0 = await aliceDex.crypto.decryptGroupEvent(streamId, encryptedData_V0);
|
|
54
|
+
if (typeof decrypted === 'string') {
|
|
55
|
+
throw new Error('decrypted is a string'); // v1 should be bytes
|
|
56
|
+
}
|
|
57
|
+
if (typeof decrypted_V0 !== 'string') {
|
|
58
|
+
throw new Error('decrypted_V0 is a string'); // v0 should be bytes
|
|
59
|
+
}
|
|
60
|
+
// stop the decryption extensions
|
|
61
|
+
await bobDex.stop();
|
|
62
|
+
await aliceDex.stop();
|
|
63
|
+
// assert
|
|
64
|
+
expect(new TextDecoder().decode(decrypted)).toBe(bobsPlaintext);
|
|
65
|
+
expect(decrypted_V0).toBe(bobsPlaintext);
|
|
66
|
+
expect(bobDex.seenStates).toContain(DecryptionStatus.working);
|
|
67
|
+
expect(aliceDex.seenStates).toContain(DecryptionStatus.working);
|
|
68
|
+
});
|
|
69
|
+
// test should iterate over all the algorithms
|
|
70
|
+
it.each(Object.values(GroupEncryptionAlgorithmId))('should be able to export/import stream room key', async (algorithm) => {
|
|
71
|
+
// arrange
|
|
72
|
+
const clientDiscoveryService = {};
|
|
73
|
+
const streamId = genStreamId();
|
|
74
|
+
const alice = genUserId('Alice');
|
|
75
|
+
const bob = genUserId('Bob');
|
|
76
|
+
const bobsPlaintext = "bob's plaintext";
|
|
77
|
+
const { decryptionExtension: aliceDex } = await createCryptoMocks(alice, clientDiscoveryService);
|
|
78
|
+
const { crypto: bobCrypto, decryptionExtension: bobDex } = await createCryptoMocks(bob, clientDiscoveryService);
|
|
79
|
+
// act
|
|
80
|
+
aliceDex.start();
|
|
81
|
+
// bob starts the decryption extension
|
|
82
|
+
bobDex.start();
|
|
83
|
+
// bob encrypts a message
|
|
84
|
+
const encryptedData = await bobCrypto.encryptGroupEvent(streamId, new TextEncoder().encode(bobsPlaintext), algorithm);
|
|
85
|
+
const encryptedData_V0 = await bobCrypto.encryptGroupEvent_deprecated_v0(streamId, bobsPlaintext, algorithm);
|
|
86
|
+
// alice doesn't have the session key
|
|
87
|
+
// alice imports the keys exported by bob
|
|
88
|
+
const roomKeys = await bobDex.crypto.exportRoomKeys();
|
|
89
|
+
if (roomKeys) {
|
|
90
|
+
await aliceDex.crypto.importRoomKeys(roomKeys);
|
|
91
|
+
}
|
|
92
|
+
// after alice gets the session key,
|
|
93
|
+
// try to decrypt the message
|
|
94
|
+
const decrypted = await aliceDex.crypto.decryptGroupEvent(streamId, encryptedData);
|
|
95
|
+
if (typeof decrypted === 'string') {
|
|
96
|
+
throw new Error('decrypted is a string'); // v1 should be bytes
|
|
97
|
+
}
|
|
98
|
+
const decrypted_V0 = await aliceDex.crypto.decryptGroupEvent(streamId, encryptedData_V0);
|
|
99
|
+
if (typeof decrypted_V0 !== 'string') {
|
|
100
|
+
throw new Error('decrypted_V0 is a string'); // v0 should be bytes
|
|
101
|
+
}
|
|
102
|
+
// stop the decryption extensions
|
|
103
|
+
await bobDex.stop();
|
|
104
|
+
await aliceDex.stop();
|
|
105
|
+
// assert
|
|
106
|
+
expect(new TextDecoder().decode(decrypted)).toBe(bobsPlaintext);
|
|
107
|
+
expect(decrypted_V0).toBe(bobsPlaintext);
|
|
108
|
+
});
|
|
109
|
+
});
|
|
110
|
+
async function createCryptoMocks(userId, clientDiscoveryService) {
|
|
111
|
+
const cryptoStore = new CryptoStore(`db_${userId}`, userId);
|
|
112
|
+
const entitlementDelegate = new MockEntitlementsDelegate();
|
|
113
|
+
const client = new MockGroupEncryptionClient(clientDiscoveryService);
|
|
114
|
+
const crypto = new GroupEncryptionCrypto(client, cryptoStore);
|
|
115
|
+
await crypto.init();
|
|
116
|
+
const userDevice = crypto.getUserDevice();
|
|
117
|
+
const decryptionExtension = new MockDecryptionExtensions(userId, crypto, entitlementDelegate, userDevice, client);
|
|
118
|
+
client.crypto = crypto;
|
|
119
|
+
client.decryptionExtensions = decryptionExtension;
|
|
120
|
+
clientDiscoveryService[userDevice.deviceKey] = client;
|
|
121
|
+
return {
|
|
122
|
+
client,
|
|
123
|
+
crypto,
|
|
124
|
+
cryptoStore,
|
|
125
|
+
decryptionExtension,
|
|
126
|
+
userDevice,
|
|
127
|
+
};
|
|
128
|
+
}
|
|
129
|
+
class MicroTask {
|
|
130
|
+
resolve;
|
|
131
|
+
startState;
|
|
132
|
+
endState;
|
|
133
|
+
isStarted = false;
|
|
134
|
+
_isCompleted = false;
|
|
135
|
+
constructor(resolve, startState, endState) {
|
|
136
|
+
this.resolve = resolve;
|
|
137
|
+
this.startState = startState;
|
|
138
|
+
this.endState = endState;
|
|
139
|
+
}
|
|
140
|
+
get isCompleted() {
|
|
141
|
+
return this._isCompleted;
|
|
142
|
+
}
|
|
143
|
+
tick(state) {
|
|
144
|
+
if (state === this.startState) {
|
|
145
|
+
this.isStarted = true;
|
|
146
|
+
}
|
|
147
|
+
if (this.isStarted && state === this.endState) {
|
|
148
|
+
this.resolve();
|
|
149
|
+
this._isCompleted = true;
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
class MockDecryptionExtensions extends BaseDecryptionExtensions {
|
|
154
|
+
inProgress = {};
|
|
155
|
+
client;
|
|
156
|
+
_upToDateStreams;
|
|
157
|
+
constructor(userId, crypto, entitlementDelegate, userDevice, client) {
|
|
158
|
+
const upToDateStreams = new Set();
|
|
159
|
+
const logId = shortenHexString(userId);
|
|
160
|
+
super(client, crypto, entitlementDelegate, userDevice, userId, upToDateStreams, logId);
|
|
161
|
+
this._upToDateStreams = upToDateStreams;
|
|
162
|
+
this.client = client;
|
|
163
|
+
this._onStopFn = () => {
|
|
164
|
+
log('onStopFn');
|
|
165
|
+
};
|
|
166
|
+
client.on('decryptionExtStatusChanged', () => {
|
|
167
|
+
this.statusChangedTick();
|
|
168
|
+
});
|
|
169
|
+
}
|
|
170
|
+
seenStates = [];
|
|
171
|
+
shouldPauseTicking() {
|
|
172
|
+
return false;
|
|
173
|
+
}
|
|
174
|
+
newGroupSessions(sessions, senderId) {
|
|
175
|
+
log('newGroupSessions', sessions, senderId);
|
|
176
|
+
const streamId = bin_toHexString(sessions.streamId);
|
|
177
|
+
this.markStreamUpToDate(streamId);
|
|
178
|
+
const p = new Promise((resolve) => {
|
|
179
|
+
this.inProgress[streamId] = new MicroTask(resolve, DecryptionStatus.working, DecryptionStatus.done);
|
|
180
|
+
// start processing the new sessions
|
|
181
|
+
this.enqueueNewGroupSessions(sessions, senderId);
|
|
182
|
+
});
|
|
183
|
+
return p;
|
|
184
|
+
}
|
|
185
|
+
ackNewGroupSession(session) {
|
|
186
|
+
log('newGroupSessionsDone', session.streamId);
|
|
187
|
+
return Promise.resolve();
|
|
188
|
+
}
|
|
189
|
+
async handleKeySolicitationRequest(streamId, eventHashStr, fromUserId, fromUserAddress, keySolicitation, sigBundle) {
|
|
190
|
+
log('keySolicitationRequest', streamId, keySolicitation);
|
|
191
|
+
this.markStreamUpToDate(streamId);
|
|
192
|
+
const p = new Promise((resolve) => {
|
|
193
|
+
this.inProgress[streamId] = new MicroTask(resolve, DecryptionStatus.working, DecryptionStatus.done);
|
|
194
|
+
// start processing the request
|
|
195
|
+
this.enqueueKeySolicitation(streamId, eventHashStr, fromUserId, fromUserAddress, keySolicitation, sigBundle);
|
|
196
|
+
});
|
|
197
|
+
return p;
|
|
198
|
+
}
|
|
199
|
+
hasStream(streamId) {
|
|
200
|
+
log('canProcessStream', streamId, true);
|
|
201
|
+
return this._upToDateStreams.has(streamId);
|
|
202
|
+
}
|
|
203
|
+
isValidEvent(item) {
|
|
204
|
+
log('isValidEvent', item);
|
|
205
|
+
return { isValid: true };
|
|
206
|
+
}
|
|
207
|
+
decryptGroupEvent(_streamId, _eventId, _kind, _encryptedData) {
|
|
208
|
+
log('decryptGroupEvent');
|
|
209
|
+
return Promise.resolve();
|
|
210
|
+
}
|
|
211
|
+
downloadNewMessages() {
|
|
212
|
+
log('downloadNewMessages');
|
|
213
|
+
return Promise.resolve();
|
|
214
|
+
}
|
|
215
|
+
getKeySolicitations(_streamId) {
|
|
216
|
+
log('getKeySolicitations');
|
|
217
|
+
return [];
|
|
218
|
+
}
|
|
219
|
+
isUserEntitledToKeyExchange(_streamId, _userId) {
|
|
220
|
+
log('isUserEntitledToKeyExchange');
|
|
221
|
+
return Promise.resolve(true);
|
|
222
|
+
}
|
|
223
|
+
onDecryptionError(_item, _err) {
|
|
224
|
+
log('onDecryptionError', 'item:', _item, 'err:', _err);
|
|
225
|
+
}
|
|
226
|
+
sendKeySolicitation(args) {
|
|
227
|
+
log('sendKeySolicitation', args);
|
|
228
|
+
return Promise.resolve();
|
|
229
|
+
}
|
|
230
|
+
sendKeyFulfillment(args) {
|
|
231
|
+
log('sendKeyFulfillment', args);
|
|
232
|
+
return Promise.resolve({});
|
|
233
|
+
}
|
|
234
|
+
encryptAndShareGroupSessions(args) {
|
|
235
|
+
log('encryptAndSendToGroup');
|
|
236
|
+
return this.client.encryptAndSendMock(args);
|
|
237
|
+
}
|
|
238
|
+
uploadDeviceKeys() {
|
|
239
|
+
log('uploadDeviceKeys');
|
|
240
|
+
return Promise.resolve();
|
|
241
|
+
}
|
|
242
|
+
isUserInboxStreamUpToDate(_upToDateStreams) {
|
|
243
|
+
return true;
|
|
244
|
+
}
|
|
245
|
+
getPriorityForStream(_streamId, _highPriorityIds, _recentStreamIds) {
|
|
246
|
+
return 0;
|
|
247
|
+
}
|
|
248
|
+
markStreamUpToDate(streamId) {
|
|
249
|
+
this._upToDateStreams.add(streamId);
|
|
250
|
+
this.setStreamUpToDate(streamId);
|
|
251
|
+
}
|
|
252
|
+
statusChangedTick() {
|
|
253
|
+
this.seenStates.push(this.status);
|
|
254
|
+
Object.values(this.inProgress).forEach((t) => {
|
|
255
|
+
t.tick(this.status);
|
|
256
|
+
});
|
|
257
|
+
}
|
|
258
|
+
}
|
|
259
|
+
class MockGroupEncryptionClient extends EventEmitter {
|
|
260
|
+
clientDiscoveryService;
|
|
261
|
+
shareKeysResponses = {};
|
|
262
|
+
constructor(clientDiscoveryService) {
|
|
263
|
+
super();
|
|
264
|
+
this.clientDiscoveryService = clientDiscoveryService;
|
|
265
|
+
}
|
|
266
|
+
crypto;
|
|
267
|
+
decryptionExtensions;
|
|
268
|
+
get userDevice() {
|
|
269
|
+
return this.crypto ? this.crypto.getUserDevice() : undefined;
|
|
270
|
+
}
|
|
271
|
+
downloadUserDeviceInfo(_userIds, _forceDownload) {
|
|
272
|
+
return Promise.resolve({});
|
|
273
|
+
}
|
|
274
|
+
encryptAndShareGroupSessions(_streamId, _sessions, _devicesInRoom) {
|
|
275
|
+
return Promise.resolve();
|
|
276
|
+
}
|
|
277
|
+
getDevicesInStream(_streamId) {
|
|
278
|
+
return Promise.resolve({});
|
|
279
|
+
}
|
|
280
|
+
getMiniblockInfo(_streamId) {
|
|
281
|
+
return Promise.resolve({ miniblockNum: 0n, miniblockHash: new Uint8Array() });
|
|
282
|
+
}
|
|
283
|
+
sendKeySolicitation(args) {
|
|
284
|
+
// assume the request is sent
|
|
285
|
+
return new Promise((resolve) => {
|
|
286
|
+
// resolve when the response is received
|
|
287
|
+
this.shareKeysResponses[args.deviceKey] = resolve;
|
|
288
|
+
});
|
|
289
|
+
}
|
|
290
|
+
async encryptAndSendMock(args) {
|
|
291
|
+
const { sessions, streamId } = args;
|
|
292
|
+
if (!this.userDevice) {
|
|
293
|
+
throw new Error('no user device');
|
|
294
|
+
}
|
|
295
|
+
// prepare the common parts of the payload
|
|
296
|
+
const streamIdBytes = streamIdToBytes(streamId);
|
|
297
|
+
const sessionIds = sessions.map((s) => s.sessionId);
|
|
298
|
+
const payload = toJsonString(SessionKeysSchema, makeSessionKeys(sessions));
|
|
299
|
+
// encrypt and send the payload to each client
|
|
300
|
+
const otherClients = Object.values(this.clientDiscoveryService).filter((c) => c.userDevice?.deviceKey != this.userDevice?.deviceKey);
|
|
301
|
+
const promises = otherClients.map(async (c) => {
|
|
302
|
+
const cipertext = await this.crypto?.encryptWithDeviceKeys(payload, [c.userDevice]);
|
|
303
|
+
const groupSession = create(UserInboxPayload_GroupEncryptionSessionsSchema, {
|
|
304
|
+
streamId: streamIdBytes,
|
|
305
|
+
senderKey: this.userDevice?.deviceKey,
|
|
306
|
+
sessionIds: sessionIds,
|
|
307
|
+
ciphertexts: cipertext,
|
|
308
|
+
algorithm: args.algorithm,
|
|
309
|
+
});
|
|
310
|
+
// pretend sending the payload to the client
|
|
311
|
+
// ....
|
|
312
|
+
// pretend receiving the response
|
|
313
|
+
// trigger a new group session processing
|
|
314
|
+
await c.decryptionExtensions?.newGroupSessions(groupSession, this.userDevice.deviceKey);
|
|
315
|
+
await c.resolveGroupSessionResponse(args);
|
|
316
|
+
});
|
|
317
|
+
await Promise.all(promises);
|
|
318
|
+
}
|
|
319
|
+
resolveGroupSessionResponse(args) {
|
|
320
|
+
// fake receiving the response
|
|
321
|
+
const resolve = this.shareKeysResponses[args.item.solicitation.deviceKey];
|
|
322
|
+
if (resolve) {
|
|
323
|
+
resolve(args);
|
|
324
|
+
}
|
|
325
|
+
return Promise.resolve();
|
|
326
|
+
}
|
|
327
|
+
sendKeyFulfillment(_args) {
|
|
328
|
+
return Promise.resolve({});
|
|
329
|
+
}
|
|
330
|
+
uploadDeviceKeys() {
|
|
331
|
+
return Promise.resolve();
|
|
332
|
+
}
|
|
333
|
+
}
|
|
334
|
+
class MockEntitlementsDelegate {
|
|
335
|
+
isEntitled(_spaceId, _channelId, _user, _permission) {
|
|
336
|
+
return Promise.resolve(true);
|
|
337
|
+
}
|
|
338
|
+
}
|
|
339
|
+
function genUserId(name) {
|
|
340
|
+
return `0x${name}${Date.now()}`;
|
|
341
|
+
}
|
|
342
|
+
function genStreamId() {
|
|
343
|
+
const hexNanoId = customAlphabet('0123456789abcdef', 64);
|
|
344
|
+
return hexNanoId();
|
|
345
|
+
}
|
|
346
|
+
function stringToArray(fromString) {
|
|
347
|
+
const uint8Array = new TextEncoder().encode(fromString);
|
|
348
|
+
return uint8Array;
|
|
349
|
+
}
|
|
350
|
+
function streamIdToBytes(streamId) {
|
|
351
|
+
return bin_fromHexString(streamId);
|
|
352
|
+
}
|
|
353
|
+
//# sourceMappingURL=decryptionExtensions.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"decryptionExtensions.test.js","sourceRoot":"","sources":["../../../src/tests/unit/decryptionExtensions.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
/* eslint-disable @typescript-eslint/no-unsafe-member-access */
|
|
2
2
|
import { describe, it, expect, vi } from 'vitest';
|
|
3
3
|
import { Observable } from '../../../observable/observable';
|
|
4
|
-
import {
|
|
4
|
+
import { combine } from '../../../observable/combine';
|
|
5
5
|
describe('Combine', () => {
|
|
6
6
|
describe('constructor and basic functionality', () => {
|
|
7
7
|
it('should initialize with combined values from input observables', () => {
|
|
8
8
|
const nameObs = new Observable('John');
|
|
9
9
|
const ageObs = new Observable(25);
|
|
10
10
|
const isActiveObs = new Observable(true);
|
|
11
|
-
const combined =
|
|
11
|
+
const combined = combine({
|
|
12
12
|
name: nameObs,
|
|
13
13
|
age: ageObs,
|
|
14
14
|
isActive: isActiveObs,
|
|
@@ -24,7 +24,7 @@ describe('Combine', () => {
|
|
|
24
24
|
const numberObs = new Observable(42);
|
|
25
25
|
const objectObs = new Observable({ key: 'value' });
|
|
26
26
|
const arrayObs = new Observable([1, 2, 3]);
|
|
27
|
-
const combined =
|
|
27
|
+
const combined = combine({
|
|
28
28
|
str: stringObs,
|
|
29
29
|
num: numberObs,
|
|
30
30
|
obj: objectObs,
|
|
@@ -39,11 +39,11 @@ describe('Combine', () => {
|
|
|
39
39
|
});
|
|
40
40
|
it('should handle single observable', () => {
|
|
41
41
|
const obs = new Observable('single');
|
|
42
|
-
const combined =
|
|
42
|
+
const combined = combine({ single: obs });
|
|
43
43
|
expect(combined.value).toEqual({ single: 'single' });
|
|
44
44
|
});
|
|
45
45
|
it('should handle empty object of observables', () => {
|
|
46
|
-
const combined =
|
|
46
|
+
const combined = combine({});
|
|
47
47
|
expect(combined.value).toEqual({});
|
|
48
48
|
});
|
|
49
49
|
});
|
|
@@ -51,7 +51,7 @@ describe('Combine', () => {
|
|
|
51
51
|
it('should update combined value when any input observable changes', () => {
|
|
52
52
|
const nameObs = new Observable('John');
|
|
53
53
|
const ageObs = new Observable(25);
|
|
54
|
-
const combined =
|
|
54
|
+
const combined = combine({
|
|
55
55
|
name: nameObs,
|
|
56
56
|
age: ageObs,
|
|
57
57
|
});
|
|
@@ -71,7 +71,7 @@ describe('Combine', () => {
|
|
|
71
71
|
it('should trigger subscribers when any input observable changes', () => {
|
|
72
72
|
const nameObs = new Observable('John');
|
|
73
73
|
const ageObs = new Observable(25);
|
|
74
|
-
const combined =
|
|
74
|
+
const combined = combine({
|
|
75
75
|
name: nameObs,
|
|
76
76
|
age: ageObs,
|
|
77
77
|
});
|
|
@@ -85,7 +85,7 @@ describe('Combine', () => {
|
|
|
85
85
|
it('should not trigger when input observable value does not change', () => {
|
|
86
86
|
const nameObs = new Observable('John');
|
|
87
87
|
const ageObs = new Observable(25);
|
|
88
|
-
const combined =
|
|
88
|
+
const combined = combine({
|
|
89
89
|
name: nameObs,
|
|
90
90
|
age: ageObs,
|
|
91
91
|
});
|
|
@@ -98,7 +98,7 @@ describe('Combine', () => {
|
|
|
98
98
|
it('should handle multiple rapid changes', () => {
|
|
99
99
|
const obs1 = new Observable(1);
|
|
100
100
|
const obs2 = new Observable(2);
|
|
101
|
-
const combined =
|
|
101
|
+
const combined = combine({
|
|
102
102
|
a: obs1,
|
|
103
103
|
b: obs2,
|
|
104
104
|
});
|
|
@@ -114,7 +114,7 @@ describe('Combine', () => {
|
|
|
114
114
|
describe('subscription behavior', () => {
|
|
115
115
|
it('should call multiple subscribers when values change', () => {
|
|
116
116
|
const obs = new Observable('test');
|
|
117
|
-
const combined =
|
|
117
|
+
const combined = combine({ value: obs });
|
|
118
118
|
const subscriber1 = vi.fn();
|
|
119
119
|
const subscriber2 = vi.fn();
|
|
120
120
|
combined.subscribe(subscriber1);
|
|
@@ -125,14 +125,14 @@ describe('Combine', () => {
|
|
|
125
125
|
});
|
|
126
126
|
it('should support subscription options', () => {
|
|
127
127
|
const obs = new Observable(5);
|
|
128
|
-
const combined =
|
|
128
|
+
const combined = combine({ num: obs });
|
|
129
129
|
const subscriber = vi.fn();
|
|
130
130
|
combined.subscribe(subscriber, { fireImediately: true });
|
|
131
131
|
expect(subscriber).toHaveBeenCalledWith({ num: 5 }, { num: 5 });
|
|
132
132
|
});
|
|
133
133
|
it('should support conditional subscriptions', () => {
|
|
134
134
|
const obs = new Observable(5);
|
|
135
|
-
const combined =
|
|
135
|
+
const combined = combine({ num: obs });
|
|
136
136
|
const subscriber = vi.fn();
|
|
137
137
|
combined.subscribe(subscriber, {
|
|
138
138
|
condition: (value) => value.num > 10,
|
|
@@ -144,7 +144,7 @@ describe('Combine', () => {
|
|
|
144
144
|
});
|
|
145
145
|
it('should return unsubscribe function', () => {
|
|
146
146
|
const obs = new Observable('test');
|
|
147
|
-
const combined =
|
|
147
|
+
const combined = combine({ value: obs });
|
|
148
148
|
const subscriber = vi.fn();
|
|
149
149
|
const unsubscribe = combined.subscribe(subscriber);
|
|
150
150
|
obs.setValue('changed1');
|
|
@@ -158,7 +158,7 @@ describe('Combine', () => {
|
|
|
158
158
|
it('should dispose all input observable subscriptions', () => {
|
|
159
159
|
const obs1 = new Observable(1);
|
|
160
160
|
const obs2 = new Observable(2);
|
|
161
|
-
const combined =
|
|
161
|
+
const combined = combine({
|
|
162
162
|
a: obs1,
|
|
163
163
|
b: obs2,
|
|
164
164
|
});
|
|
@@ -174,7 +174,7 @@ describe('Combine', () => {
|
|
|
174
174
|
});
|
|
175
175
|
it('should handle multiple dispose calls', () => {
|
|
176
176
|
const obs = new Observable('test');
|
|
177
|
-
const combined =
|
|
177
|
+
const combined = combine({ value: obs });
|
|
178
178
|
// Should not throw error
|
|
179
179
|
expect(() => {
|
|
180
180
|
combined.dispose();
|
|
@@ -184,7 +184,7 @@ describe('Combine', () => {
|
|
|
184
184
|
it('should clear internal unsubscribers array', () => {
|
|
185
185
|
const obs1 = new Observable(1);
|
|
186
186
|
const obs2 = new Observable(2);
|
|
187
|
-
const combined =
|
|
187
|
+
const combined = combine({
|
|
188
188
|
a: obs1,
|
|
189
189
|
b: obs2,
|
|
190
190
|
});
|
|
@@ -196,7 +196,7 @@ describe('Combine', () => {
|
|
|
196
196
|
describe('inheritance from Observable', () => {
|
|
197
197
|
it('should support Observable methods like map', () => {
|
|
198
198
|
const obs = new Observable(5);
|
|
199
|
-
const combined =
|
|
199
|
+
const combined = combine({ num: obs });
|
|
200
200
|
const mapped = combined.map((value) => ({
|
|
201
201
|
doubled: value.num * 2,
|
|
202
202
|
}));
|
|
@@ -206,7 +206,7 @@ describe('Combine', () => {
|
|
|
206
206
|
});
|
|
207
207
|
it('should support Observable methods like when', async () => {
|
|
208
208
|
const obs = new Observable(5);
|
|
209
|
-
const combined =
|
|
209
|
+
const combined = combine({ num: obs });
|
|
210
210
|
const promise = combined.when((value) => value.num > 10);
|
|
211
211
|
setTimeout(() => obs.setValue(15), 10);
|
|
212
212
|
const result = await promise;
|
|
@@ -214,7 +214,7 @@ describe('Combine', () => {
|
|
|
214
214
|
});
|
|
215
215
|
it('should support setValue and set methods', () => {
|
|
216
216
|
const obs = new Observable(5);
|
|
217
|
-
const combined =
|
|
217
|
+
const combined = combine({ num: obs });
|
|
218
218
|
const subscriber = vi.fn();
|
|
219
219
|
combined.subscribe(subscriber);
|
|
220
220
|
// Use setValue directly on combined observable
|
|
@@ -230,7 +230,7 @@ describe('Combine', () => {
|
|
|
230
230
|
it('should handle observables with undefined values', () => {
|
|
231
231
|
const obs1 = new Observable(undefined);
|
|
232
232
|
const obs2 = new Observable(undefined);
|
|
233
|
-
const combined =
|
|
233
|
+
const combined = combine({
|
|
234
234
|
str: obs1,
|
|
235
235
|
num: obs2,
|
|
236
236
|
});
|
|
@@ -246,7 +246,7 @@ describe('Combine', () => {
|
|
|
246
246
|
});
|
|
247
247
|
it('should handle observables with null values', () => {
|
|
248
248
|
const obs = new Observable(null);
|
|
249
|
-
const combined =
|
|
249
|
+
const combined = combine({ value: obs });
|
|
250
250
|
expect(combined.value).toEqual({ value: null });
|
|
251
251
|
obs.setValue('not null');
|
|
252
252
|
expect(combined.value).toEqual({ value: 'not null' });
|
|
@@ -254,7 +254,7 @@ describe('Combine', () => {
|
|
|
254
254
|
it('should handle complex nested objects', () => {
|
|
255
255
|
const userObs = new Observable({ name: 'John', details: { age: 25 } });
|
|
256
256
|
const settingsObs = new Observable({ theme: 'dark', notifications: true });
|
|
257
|
-
const combined =
|
|
257
|
+
const combined = combine({
|
|
258
258
|
user: userObs,
|
|
259
259
|
settings: settingsObs,
|
|
260
260
|
});
|
|
@@ -269,7 +269,7 @@ describe('Combine', () => {
|
|
|
269
269
|
const obs1 = new Observable(1);
|
|
270
270
|
const obs2 = new Observable(2);
|
|
271
271
|
const obs3 = new Observable(3);
|
|
272
|
-
const combined =
|
|
272
|
+
const combined = combine({
|
|
273
273
|
z: obs3,
|
|
274
274
|
a: obs1,
|
|
275
275
|
m: obs2,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"combine.test.js","sourceRoot":"","sources":["../../../../src/tests/unit/observable/combine.test.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"combine.test.js","sourceRoot":"","sources":["../../../../src/tests/unit/observable/combine.test.ts"],"names":[],"mappings":"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"}
|
package/dist/types.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { PlainMessage, StreamEvent, ChannelMessage, ChannelMessage_Post_Content_Text, UserMetadataPayload_Inception, UserPayload_Inception, SpacePayload_Inception, ChannelPayload_Inception, UserSettingsPayload_Inception, SpacePayload_ChannelUpdate, SpacePayload_UpdateChannelAutojoin, SpacePayload_UpdateChannelHideUserJoinLeaveEvents, EncryptedData, UserPayload_UserMembership, UserSettingsPayload_UserBlock, UserSettingsPayload_FullyReadMarkers, MiniblockHeader, ChannelMessage_Post_Mention, ChannelMessage_Post, MediaPayload_Inception, MediaPayload_Chunk, DmChannelPayload_Inception, GdmChannelPayload_Inception, UserInboxPayload_Ack, UserInboxPayload_Inception, UserMetadataPayload_EncryptionDevice, UserInboxPayload_GroupEncryptionSessions, SyncCookie, Snapshot, UserPayload_UserMembershipAction, MemberPayload_Membership, MembershipOp, MemberPayload_KeyFulfillment, MemberPayload_KeySolicitation, MemberPayload_Nft, BlockchainTransaction } from '@towns-protocol/proto';
|
|
2
2
|
import { DecryptedContent } from './encryptedContentTypes';
|
|
3
|
-
import { DecryptionSessionError, EventSignatureBundle } from '
|
|
3
|
+
import { DecryptionSessionError, EventSignatureBundle } from './decryptionExtensions';
|
|
4
4
|
export type LocalEventStatus = 'sending' | 'sent' | 'failed';
|
|
5
5
|
export interface LocalEvent {
|
|
6
6
|
localId: string;
|