@towns-protocol/sdk 0.0.265 → 0.0.267

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 (60) hide show
  1. package/dist/client.d.ts +10 -2
  2. package/dist/client.d.ts.map +1 -1
  3. package/dist/client.js +81 -12
  4. package/dist/client.js.map +1 -1
  5. package/dist/clientDecryptionExtensions.d.ts +10 -3
  6. package/dist/clientDecryptionExtensions.d.ts.map +1 -1
  7. package/dist/clientDecryptionExtensions.js +83 -13
  8. package/dist/clientDecryptionExtensions.js.map +1 -1
  9. package/dist/decryptionExtensions.d.ts +25 -8
  10. package/dist/decryptionExtensions.d.ts.map +1 -1
  11. package/dist/decryptionExtensions.js +230 -64
  12. package/dist/decryptionExtensions.js.map +1 -1
  13. package/dist/memberMetadata_Usernames.d.ts +3 -1
  14. package/dist/memberMetadata_Usernames.d.ts.map +1 -1
  15. package/dist/memberMetadata_Usernames.js +8 -2
  16. package/dist/memberMetadata_Usernames.js.map +1 -1
  17. package/dist/sign.d.ts +3 -2
  18. package/dist/sign.d.ts.map +1 -1
  19. package/dist/sign.js +5 -3
  20. package/dist/sign.js.map +1 -1
  21. package/dist/streamEvents.d.ts +3 -2
  22. package/dist/streamEvents.d.ts.map +1 -1
  23. package/dist/streamStateView.d.ts +1 -0
  24. package/dist/streamStateView.d.ts.map +1 -1
  25. package/dist/streamStateView.js +33 -2
  26. package/dist/streamStateView.js.map +1 -1
  27. package/dist/streamStateView_MemberMetadata.d.ts +2 -1
  28. package/dist/streamStateView_MemberMetadata.d.ts.map +1 -1
  29. package/dist/streamStateView_MemberMetadata.js +4 -2
  30. package/dist/streamStateView_MemberMetadata.js.map +1 -1
  31. package/dist/streamStateView_Members.d.ts +1 -1
  32. package/dist/streamStateView_Members.d.ts.map +1 -1
  33. package/dist/streamStateView_Members.js +2 -2
  34. package/dist/streamStateView_Members.js.map +1 -1
  35. package/dist/streamUtils.d.ts.map +1 -1
  36. package/dist/streamUtils.js +1 -0
  37. package/dist/streamUtils.js.map +1 -1
  38. package/dist/syncedStreamsLoop.d.ts.map +1 -1
  39. package/dist/syncedStreamsLoop.js +16 -2
  40. package/dist/syncedStreamsLoop.js.map +1 -1
  41. package/dist/tests/multi/botMembership.test.js +2 -0
  42. package/dist/tests/multi/botMembership.test.js.map +1 -1
  43. package/dist/tests/multi/channelScrubbing.test.js +58 -2
  44. package/dist/tests/multi/channelScrubbing.test.js.map +1 -1
  45. package/dist/tests/multi_ne/clientDecryptionExtensions.test.js +12 -5
  46. package/dist/tests/multi_ne/clientDecryptionExtensions.test.js.map +1 -1
  47. package/dist/tests/multi_ne/ephemeralEvents.test.d.ts +5 -0
  48. package/dist/tests/multi_ne/ephemeralEvents.test.d.ts.map +1 -0
  49. package/dist/tests/multi_ne/ephemeralEvents.test.js +114 -0
  50. package/dist/tests/multi_ne/ephemeralEvents.test.js.map +1 -0
  51. package/dist/tests/multi_ne/memberMetadata.test.js +67 -0
  52. package/dist/tests/multi_ne/memberMetadata.test.js.map +1 -1
  53. package/dist/tests/multi_ne/memberMetadata_Usernames.test.js +14 -1
  54. package/dist/tests/multi_ne/memberMetadata_Usernames.test.js.map +1 -1
  55. package/dist/types.d.ts +1 -0
  56. package/dist/types.d.ts.map +1 -1
  57. package/dist/types.js.map +1 -1
  58. package/dist/views/streams/unreadMarkersTransform.js +1 -1
  59. package/dist/views/streams/unreadMarkersTransform.js.map +1 -1
  60. package/package.json +9 -9
@@ -1 +1 @@
1
- {"version":3,"file":"clientDecryptionExtensions.js","sourceRoot":"","sources":["../src/clientDecryptionExtensions.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"clientDecryptionExtensions.js","sourceRoot":"","sources":["../src/clientDecryptionExtensions.ts"],"names":[],"mappings":"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"}
@@ -49,6 +49,7 @@ export interface KeySolicitationItem {
49
49
  respondAfter: number;
50
50
  sigBundle: EventSignatureBundle;
51
51
  hashStr: string;
52
+ ephemeral?: boolean;
52
53
  }
53
54
  export interface KeySolicitationData {
54
55
  streamId: string;
@@ -96,16 +97,25 @@ export declare abstract class BaseDecryptionExtensions {
96
97
  private _status;
97
98
  private mainQueues;
98
99
  private streamQueues;
100
+ private mainQueueRunners;
101
+ private streamQueueRunners;
102
+ private allQueueRunners;
99
103
  private upToDateStreams;
100
104
  private highPriorityIds;
101
105
  private recentStreamIds;
102
106
  private decryptionFailures;
103
- private inProgressTick?;
104
- private timeoutId?;
105
- private delayMs;
107
+ protected ownEphemeralSolicitations: Map<string, {
108
+ deviceKey: string;
109
+ fallbackKey: string;
110
+ isNewDevice: boolean;
111
+ missingSessionIds: Set<string>;
112
+ timerId?: NodeJS.Timeout;
113
+ timestamp: number;
114
+ }[]>;
106
115
  private started;
107
116
  private numRecentStreamIds;
108
117
  private emitter;
118
+ private checkStartTimeoutId?;
109
119
  protected _onStopFn?: () => void;
110
120
  protected log: {
111
121
  debug: DLogger;
@@ -116,6 +126,7 @@ export declare abstract class BaseDecryptionExtensions {
116
126
  readonly entitlementDelegate: EntitlementsDelegate;
117
127
  readonly userDevice: UserDevice;
118
128
  readonly userId: string;
129
+ ephemeralTimeoutMs: number;
119
130
  constructor(emitter: TypedEmitter<DecryptionEvents>, crypto: GroupEncryptionCrypto, entitlementDelegate: EntitlementsDelegate, userDevice: UserDevice, userId: string, upToDateStreams: Set<string>, inLogId: string);
120
131
  abstract ackNewGroupSession(session: UserInboxPayload_GroupEncryptionSessions): Promise<void>;
121
132
  abstract decryptGroupEvent(streamId: string, eventId: string, kind: string, encryptedData: EncryptedData): Promise<void>;
@@ -131,8 +142,12 @@ export declare abstract class BaseDecryptionExtensions {
131
142
  };
132
143
  abstract isUserInboxStreamUpToDate(upToDateStreams: Set<string>): boolean;
133
144
  abstract onDecryptionError(item: EncryptedContentItem, err: DecryptionSessionError): void;
134
- abstract sendKeySolicitation(args: KeySolicitationData): Promise<void>;
135
- abstract sendKeyFulfillment(args: KeyFulfilmentData): Promise<{
145
+ abstract sendKeySolicitation(args: KeySolicitationData & {
146
+ ephemeral?: boolean;
147
+ }): Promise<void>;
148
+ abstract sendKeyFulfillment(args: KeyFulfilmentData & {
149
+ ephemeral?: boolean;
150
+ }): Promise<{
136
151
  error?: AddEventResponse_Error;
137
152
  }>;
138
153
  abstract encryptAndShareGroupSessions(args: GroupSessionsData): Promise<void>;
@@ -151,7 +166,7 @@ export declare abstract class BaseDecryptionExtensions {
151
166
  userAddress: Uint8Array;
152
167
  solicitations: KeySolicitationContent[];
153
168
  }[], sigBundle: EventSignatureBundle): void;
154
- enqueueKeySolicitation(streamId: string, eventHashStr: string, fromUserId: string, fromUserAddress: Uint8Array, keySolicitation: KeySolicitationContent, sigBundle: EventSignatureBundle): void;
169
+ enqueueKeySolicitation(streamId: string, eventHashStr: string, fromUserId: string, fromUserAddress: Uint8Array, keySolicitation: KeySolicitationContent, sigBundle: EventSignatureBundle, ephemeral?: boolean): void;
155
170
  setStreamUpToDate(streamId: string): void;
156
171
  resetUpToDateStreams(): void;
157
172
  retryDecryptionFailures(streamId: string): void;
@@ -166,7 +181,6 @@ export declare abstract class BaseDecryptionExtensions {
166
181
  private lastPrintedAt;
167
182
  protected checkStartTicking(): void;
168
183
  private stopTicking;
169
- private getDelayMs;
170
184
  private tick;
171
185
  /**
172
186
  * processNewGroupSession
@@ -189,10 +203,13 @@ export declare abstract class BaseDecryptionExtensions {
189
203
  * process incoming key solicitations and send keys and key fulfillments
190
204
  */
191
205
  private processKeySolicitation;
206
+ processEphemeralKeyFulfillment(event: KeyFulfilmentData): void;
192
207
  /**
193
208
  * can be overridden to add a delay to the key solicitation response
194
209
  */
195
- getRespondDelayMSForKeySolicitation(_streamId: string, _userId: string): number;
210
+ getRespondDelayMSForKeySolicitation(_streamId: string, _userId: string, _opts: {
211
+ ephemeral: boolean;
212
+ }): number;
196
213
  setHighPriorityStreams(streamIds: string[]): void;
197
214
  }
198
215
  export declare function makeSessionKeys(sessions: GroupEncryptionSession[]): SessionKeys;
@@ -1 +1 @@
1
- {"version":3,"file":"decryptionExtensions.d.ts","sourceRoot":"","sources":["../src/decryptionExtensions.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"decryptionExtensions.d.ts","sourceRoot":"","sources":["../src/decryptionExtensions.ts"],"names":[],"mappings":"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"}
@@ -3,6 +3,7 @@ import { shortenHexString, dlog, dlogError, check, bin_toHexString, } from '@tow
3
3
  import { GroupEncryptionAlgorithmId, parseGroupEncryptionAlgorithmId, } from '@towns-protocol/encryption';
4
4
  import { create, fromJsonString } from '@bufbuild/protobuf';
5
5
  import { sortedArraysEqual } from './observable/utils';
6
+ import { isDefined } from './check';
6
7
  export var DecryptionStatus;
7
8
  (function (DecryptionStatus) {
8
9
  DecryptionStatus["initializing"] = "initializing";
@@ -62,6 +63,52 @@ class StreamQueues {
62
63
  .join(', ');
63
64
  }
64
65
  }
66
+ class QueueRunner {
67
+ kind;
68
+ timeoutId;
69
+ inProgress;
70
+ streamId;
71
+ checkStartTicking;
72
+ logError;
73
+ tag;
74
+ constructor(kind) {
75
+ this.kind = kind;
76
+ }
77
+ toString() {
78
+ return `${this.kind}${this.tag ? ` ${this.tag}` : ''}${this.streamId ? ` ${this.streamId}` : ''}`;
79
+ }
80
+ run(promise, streamId, tag) {
81
+ this.tag = tag;
82
+ this.inProgress = promise;
83
+ this.streamId = streamId;
84
+ this.inProgress
85
+ .catch((e) => this.logError?.(`ProcessTick ${this.kind} Error`, e))
86
+ .finally(() => {
87
+ this.timeoutId = undefined;
88
+ this.inProgress = undefined;
89
+ this.streamId = undefined;
90
+ this.tag = undefined;
91
+ setTimeout(() => this.checkStartTicking?.());
92
+ });
93
+ }
94
+ async stop() {
95
+ if (this.timeoutId) {
96
+ clearTimeout(this.timeoutId);
97
+ this.timeoutId = undefined;
98
+ }
99
+ if (this.inProgress) {
100
+ try {
101
+ await this.inProgress;
102
+ }
103
+ catch (e) {
104
+ this.logError?.(`ProcessTick Error while stopping ${this.kind}`, e);
105
+ }
106
+ finally {
107
+ this.inProgress = undefined;
108
+ }
109
+ }
110
+ }
111
+ }
65
112
  /**
66
113
  *
67
114
  * Responsibilities:
@@ -87,24 +134,37 @@ export class BaseDecryptionExtensions {
87
134
  priorityTasks: new Array(),
88
135
  newGroupSession: new Array(),
89
136
  ownKeySolicitations: new Array(),
137
+ ephemeralKeySolicitations: new Array(),
90
138
  };
91
139
  streamQueues = new StreamQueues();
140
+ mainQueueRunners = {
141
+ priority: new QueueRunner('priority'),
142
+ newGroupSessions: new QueueRunner('newGroupSession'),
143
+ ownKeySolicitations: new QueueRunner('ownKeySolicitations'),
144
+ ephemeralKeySolicitations: new QueueRunner('ephemeralKeySolicitations'),
145
+ };
146
+ streamQueueRunners = [
147
+ new QueueRunner('stream1'),
148
+ new QueueRunner('stream2'),
149
+ new QueueRunner('stream3'),
150
+ ];
151
+ allQueueRunners = [...Object.values(this.mainQueueRunners), ...this.streamQueueRunners];
92
152
  upToDateStreams = new Set();
93
153
  highPriorityIds = new Set();
94
154
  recentStreamIds = [];
95
155
  decryptionFailures = {}; // streamId: sessionId: EncryptedContentItem[]
96
- inProgressTick;
97
- timeoutId;
98
- delayMs = 1;
156
+ ownEphemeralSolicitations = new Map(); // key: streamId, value: array of solicitations
99
157
  started = false;
100
158
  numRecentStreamIds = 5;
101
159
  emitter;
160
+ checkStartTimeoutId;
102
161
  _onStopFn;
103
162
  log;
104
163
  crypto;
105
164
  entitlementDelegate;
106
165
  userDevice;
107
166
  userId;
167
+ ephemeralTimeoutMs = 30000; // Default 30 seconds
108
168
  constructor(emitter, crypto, entitlementDelegate, userDevice, userId, upToDateStreams, inLogId) {
109
169
  this.emitter = emitter;
110
170
  this.crypto = crypto;
@@ -122,6 +182,11 @@ export class BaseDecryptionExtensions {
122
182
  error: dlogError('csb:decryption:error').extend(logId),
123
183
  };
124
184
  this.log.debug('new DecryptionExtensions', { userDevice });
185
+ // initialize the queue runners
186
+ for (const queueRunner of this.allQueueRunners) {
187
+ queueRunner.logError = this.log.error;
188
+ queueRunner.checkStartTicking = () => this.checkStartTicking();
189
+ }
125
190
  }
126
191
  enqueueNewGroupSessions(sessions, _senderId) {
127
192
  this.log.debug('enqueueNewGroupSessions', sessions);
@@ -167,7 +232,10 @@ export class BaseDecryptionExtensions {
167
232
  fromUserId,
168
233
  fromUserAddress,
169
234
  solicitation: keySolicitation,
170
- respondAfter: Date.now() + this.getRespondDelayMSForKeySolicitation(streamId, fromUserId),
235
+ respondAfter: Date.now() +
236
+ this.getRespondDelayMSForKeySolicitation(streamId, fromUserId, {
237
+ ephemeral: false,
238
+ }),
171
239
  sigBundle,
172
240
  hashStr: eventHashStr,
173
241
  });
@@ -176,15 +244,18 @@ export class BaseDecryptionExtensions {
176
244
  streamQueue.keySolicitationsNeedsSort = true;
177
245
  this.checkStartTicking();
178
246
  }
179
- enqueueKeySolicitation(streamId, eventHashStr, fromUserId, fromUserAddress, keySolicitation, sigBundle) {
247
+ enqueueKeySolicitation(streamId, eventHashStr, fromUserId, fromUserAddress, keySolicitation, sigBundle, ephemeral = false) {
180
248
  if (keySolicitation.deviceKey === this.userDevice.deviceKey) {
181
249
  //this.log.debug('ignoring key solicitation for our own device')
182
250
  return;
183
251
  }
252
+ // Non-ephemeral solicitation handling (existing logic)
184
253
  const streamQueue = this.streamQueues.getQueue(streamId);
185
- const selectedQueue = fromUserId === this.userId
186
- ? this.mainQueues.ownKeySolicitations
187
- : streamQueue.keySolicitations;
254
+ const selectedQueue = ephemeral
255
+ ? this.mainQueues.ephemeralKeySolicitations
256
+ : fromUserId === this.userId
257
+ ? this.mainQueues.ownKeySolicitations
258
+ : streamQueue.keySolicitations;
188
259
  const index = selectedQueue.findIndex((x) => x.streamId === streamId && x.solicitation.deviceKey === keySolicitation.deviceKey);
189
260
  if (index > -1) {
190
261
  selectedQueue.splice(index, 1);
@@ -197,9 +268,11 @@ export class BaseDecryptionExtensions {
197
268
  fromUserId,
198
269
  fromUserAddress,
199
270
  solicitation: keySolicitation,
200
- respondAfter: Date.now() + this.getRespondDelayMSForKeySolicitation(streamId, fromUserId),
271
+ respondAfter: Date.now() +
272
+ this.getRespondDelayMSForKeySolicitation(streamId, fromUserId, { ephemeral }),
201
273
  sigBundle,
202
274
  hashStr: eventHashStr,
275
+ ephemeral,
203
276
  });
204
277
  this.checkStartTicking();
205
278
  }
@@ -248,6 +321,15 @@ export class BaseDecryptionExtensions {
248
321
  async stop() {
249
322
  this._onStopFn?.();
250
323
  this._onStopFn = undefined;
324
+ // Clean up ephemeral solicitation timers
325
+ for (const solicitations of this.ownEphemeralSolicitations.values()) {
326
+ for (const solicitation of solicitations) {
327
+ if (solicitation.timerId) {
328
+ clearTimeout(solicitation.timerId);
329
+ }
330
+ }
331
+ }
332
+ this.ownEphemeralSolicitations.clear();
251
333
  // let the subclass override and do any custom shutdown tasks
252
334
  await this.onStop();
253
335
  await this.stopTicking();
@@ -274,7 +356,6 @@ export class BaseDecryptionExtensions {
274
356
  lastPrintedAt = 0;
275
357
  checkStartTicking() {
276
358
  if (!this.started ||
277
- this.timeoutId ||
278
359
  !this._onStopFn ||
279
360
  !this.isUserInboxStreamUpToDate(this.upToDateStreams) ||
280
361
  this.shouldPauseTicking()) {
@@ -282,17 +363,19 @@ export class BaseDecryptionExtensions {
282
363
  }
283
364
  if (!Object.values(this.mainQueues).find((q) => q.length > 0) &&
284
365
  this.streamQueues.isEmpty()) {
366
+ this.log.debug('no more work to do, setting status to done');
285
367
  this.setStatus(DecryptionStatus.done);
286
368
  return;
287
369
  }
288
- if (Date.now() - this.lastPrintedAt > 30000) {
370
+ const streamIds = this.streamQueues
371
+ .getStreamIds()
372
+ .filter((x) => !this.streamQueues.getQueue(x).isEmpty())
373
+ .sort((a, b) => this.compareStreamIds(a, b));
374
+ const logDebugInfo = Date.now() - this.lastPrintedAt > 30000;
375
+ if (logDebugInfo) {
289
376
  this.log.info(`status: ${this.status} queues: ${Object.entries(this.mainQueues)
290
377
  .map(([key, q]) => `${key}: ${q.length}`)
291
378
  .join(', ')} ${this.streamQueues.toString()}`);
292
- const streamIds = Array.from(this.streamQueues.streams.entries())
293
- .filter(([_, value]) => !value.isEmpty())
294
- .map(([key, _]) => key)
295
- .sort((a, b) => this.compareStreamIds(a, b));
296
379
  const first4Priority = streamIds
297
380
  .filter((x) => this.upToDateStreams.has(x))
298
381
  .slice(0, 4)
@@ -306,77 +389,98 @@ export class BaseDecryptionExtensions {
306
389
  }
307
390
  this.lastPrintedAt = Date.now();
308
391
  }
309
- this.timeoutId = setTimeout(() => {
310
- this.inProgressTick = this.tick();
311
- this.inProgressTick
312
- .catch((e) => this.log.error('ProcessTick Error', e))
313
- .finally(() => {
314
- this.timeoutId = undefined;
315
- setTimeout(() => this.checkStartTicking());
316
- });
317
- }, this.getDelayMs());
318
- }
319
- async stopTicking() {
320
- if (this.timeoutId) {
321
- clearTimeout(this.timeoutId);
322
- this.timeoutId = undefined;
323
- }
324
- if (this.inProgressTick) {
325
- try {
326
- await this.inProgressTick;
327
- }
328
- catch (e) {
329
- this.log.error('ProcessTick Error while stopping', e);
330
- }
331
- finally {
332
- this.inProgressTick = undefined;
392
+ this.tick(streamIds);
393
+ if (logDebugInfo) {
394
+ const runners = this.allQueueRunners.filter((x) => isDefined(x.inProgress));
395
+ if (runners.length > 0) {
396
+ this.log.info(`runners: ${runners.map((x) => x.toString()).join(', ')}`);
333
397
  }
334
398
  }
399
+ // it's possible that we're not doing work, but we have more things to do but "respondAfter" hasn't been reached
400
+ clearTimeout(this.checkStartTimeoutId);
401
+ this.checkStartTimeoutId = setTimeout(() => {
402
+ this.checkStartTicking();
403
+ }, 100);
335
404
  }
336
- getDelayMs() {
337
- if (this.mainQueues.newGroupSession.length > 0) {
338
- return 0;
339
- }
340
- else {
341
- return this.delayMs;
405
+ async stopTicking() {
406
+ clearTimeout(this.checkStartTimeoutId);
407
+ for (const queueRunner of this.allQueueRunners) {
408
+ await queueRunner.stop();
342
409
  }
343
410
  }
344
411
  // just do one thing then return
345
- tick() {
412
+ tick(streamIds) {
346
413
  const now = Date.now();
414
+ // update the priority queue
415
+ if (this.mainQueueRunners.priority.inProgress) {
416
+ return; // if the main queue is in progress, don't do anything else
417
+ }
347
418
  const priorityTask = this.mainQueues.priorityTasks.shift();
348
419
  if (priorityTask) {
349
420
  this.setStatus(DecryptionStatus.updating);
350
- return priorityTask();
421
+ this.mainQueueRunners.priority.run(priorityTask());
422
+ return; // if the priority queue is in progress, don't do anything else
351
423
  }
352
424
  // update any new group sessions
425
+ if (this.mainQueueRunners.newGroupSessions.inProgress) {
426
+ return; // if the new group sessions queue is in progress, don't do anything else
427
+ }
353
428
  const session = this.mainQueues.newGroupSession.shift();
354
429
  if (session) {
355
430
  this.setStatus(DecryptionStatus.working);
356
- return this.processNewGroupSession(session);
431
+ this.mainQueueRunners.newGroupSessions.run(this.processNewGroupSession(session));
432
+ return; // if the new group sessions queue is in progress, don't do anything else
433
+ }
434
+ // run the rest of the processes in parallel
435
+ if (!this.mainQueueRunners.ownKeySolicitations.inProgress) {
436
+ const ownSolicitation = this.mainQueues.ownKeySolicitations.shift();
437
+ if (ownSolicitation) {
438
+ this.log.debug(' processing own key solicitation');
439
+ this.setStatus(DecryptionStatus.working);
440
+ this.mainQueueRunners.ownKeySolicitations.run(this.processKeySolicitation(ownSolicitation));
441
+ }
357
442
  }
358
- const ownSolicitation = this.mainQueues.ownKeySolicitations.shift();
359
- if (ownSolicitation) {
360
- this.log.debug(' processing own key solicitation');
361
- this.setStatus(DecryptionStatus.working);
362
- return this.processKeySolicitation(ownSolicitation);
443
+ if (!this.mainQueueRunners.ephemeralKeySolicitations.inProgress) {
444
+ if (this.mainQueues.ephemeralKeySolicitations.length > 0) {
445
+ this.mainQueues.ephemeralKeySolicitations.sort((a, b) => a.respondAfter - b.respondAfter);
446
+ const ephemeralSolicitation = dequeueUpToDate(this.mainQueues.ephemeralKeySolicitations, now, (x) => x.respondAfter, this.upToDateStreams);
447
+ if (ephemeralSolicitation) {
448
+ this.log.debug(' processing ephemeral key solicitation');
449
+ this.setStatus(DecryptionStatus.working);
450
+ this.mainQueueRunners.ephemeralKeySolicitations.run(this.processKeySolicitation(ephemeralSolicitation));
451
+ }
452
+ }
363
453
  }
364
- const streamIds = this.streamQueues.getStreamIds();
365
- streamIds.sort((a, b) => this.compareStreamIds(a, b));
454
+ // grab open stream queues
455
+ const openRunners = this.streamQueueRunners.filter((x) => !x.inProgress);
456
+ const inProgressStreamIds = this.streamQueueRunners.map((x) => x.streamId).filter(isDefined);
366
457
  for (const streamId of streamIds) {
367
- if (!this.upToDateStreams.has(streamId)) {
458
+ if (openRunners.length === 0) {
459
+ return; // exit tick
460
+ }
461
+ if (inProgressStreamIds.includes(streamId)) {
368
462
  continue;
369
463
  }
370
464
  const streamQueue = this.streamQueues.getQueue(streamId);
371
465
  const encryptedContent = streamQueue.encryptedContent.shift();
372
466
  if (encryptedContent) {
373
467
  this.setStatus(DecryptionStatus.working);
374
- return this.processEncryptedContentItem(encryptedContent);
468
+ const runner = openRunners.shift();
469
+ runner.run(this.processEncryptedContentItem(encryptedContent), streamId, 'decrypting');
470
+ continue;
471
+ }
472
+ // if the stream is not up to date, don't move forward
473
+ // it might be useful to post key solicitations, but without knowing the
474
+ // state of the stream it's not a good idea
475
+ if (!this.upToDateStreams.has(streamId)) {
476
+ continue;
375
477
  }
376
478
  if (streamQueue.isMissingKeys) {
377
479
  this.setStatus(DecryptionStatus.working);
378
480
  streamQueue.isMissingKeys = false;
379
- return this.processMissingKeys(streamId);
481
+ const runner = openRunners.shift();
482
+ runner.run(this.processMissingKeys(streamId), streamId, 'missingKeys');
483
+ continue;
380
484
  }
381
485
  if (streamQueue.keySolicitationsNeedsSort) {
382
486
  streamQueue.sortKeySolicitations();
@@ -384,11 +488,14 @@ export class BaseDecryptionExtensions {
384
488
  const keySolicitation = dequeueUpToDate(streamQueue.keySolicitations, now, (x) => x.respondAfter, this.upToDateStreams);
385
489
  if (keySolicitation) {
386
490
  this.setStatus(DecryptionStatus.working);
387
- return this.processKeySolicitation(keySolicitation);
491
+ const runner = openRunners.shift();
492
+ runner.run(this.processKeySolicitation(keySolicitation), streamId, 'keySolicitation');
493
+ continue;
388
494
  }
389
495
  }
390
- this.setStatus(DecryptionStatus.idle);
391
- return Promise.resolve();
496
+ if (this.allQueueRunners.every((x) => !x.inProgress)) {
497
+ this.setStatus(DecryptionStatus.idle);
498
+ }
392
499
  }
393
500
  /**
394
501
  * processNewGroupSession
@@ -468,6 +575,7 @@ export class BaseDecryptionExtensions {
468
575
  await this.decryptGroupEvent(item.streamId, item.eventId, item.kind, item.encryptedData);
469
576
  }
470
577
  catch (err) {
578
+ this.log.debug('processEncryptedContentItem error', err, 'item:', item);
471
579
  const sessionNotFound = isSessionNotFoundError(err);
472
580
  this.onDecryptionError(item, {
473
581
  missingSession: sessionNotFound,
@@ -501,7 +609,7 @@ export class BaseDecryptionExtensions {
501
609
  streamQueue.isMissingKeys = true;
502
610
  }
503
611
  else {
504
- this.log.info('failed to decrypt', err, 'streamId', item.streamId);
612
+ this.log.info('failed to decrypt', err, 'eventId', item.eventId, 'streamId', item.streamId);
505
613
  }
506
614
  }
507
615
  }
@@ -537,11 +645,13 @@ export class BaseDecryptionExtensions {
537
645
  }
538
646
  const knownSessionIds = await this.crypto.getGroupSessionIds(streamId);
539
647
  const isNewDevice = knownSessionIds.length === 0;
540
- this.log.debug('requesting keys', streamId, 'isNewDevice', isNewDevice, 'sessionIds:', missingSessionIds.length);
648
+ this.log.debug('requesting keys (ephemeral)', streamId, 'isNewDevice', isNewDevice, 'sessionIds:', missingSessionIds.length);
649
+ // Send ephemeral solicitation first
541
650
  await this.sendKeySolicitation({
542
651
  streamId,
543
652
  isNewDevice,
544
653
  missingSessionIds,
654
+ ephemeral: true,
545
655
  });
546
656
  }
547
657
  /**
@@ -589,6 +699,7 @@ export class BaseDecryptionExtensions {
589
699
  requestedCount: item.solicitation.sessionIds.length,
590
700
  replyIds: replySessionIds.length,
591
701
  sessions: allSessions.length,
702
+ ephemeral: item.ephemeral,
592
703
  });
593
704
  if (allSessions.length === 0) {
594
705
  return;
@@ -602,6 +713,7 @@ export class BaseDecryptionExtensions {
602
713
  .map((x) => x.sessionId)
603
714
  .filter((x) => requestedSessionIds.has(x))
604
715
  .sort(),
716
+ ephemeral: item.ephemeral,
605
717
  });
606
718
  // if the key fulfillment failed, someone else already sent a key fulfillment
607
719
  if (error) {
@@ -631,10 +743,64 @@ export class BaseDecryptionExtensions {
631
743
  });
632
744
  }
633
745
  }
746
+ processEphemeralKeyFulfillment(event) {
747
+ if (event.deviceKey === this.userDevice.deviceKey) {
748
+ const solicitations = this.ownEphemeralSolicitations.get(event.streamId);
749
+ if (solicitations) {
750
+ // Process each solicitation and remove those that are fully fulfilled
751
+ const remainingSolicitations = solicitations.filter((solicitation) => {
752
+ // Remove fulfilled session IDs from the set
753
+ event.sessionIds.forEach((id) => {
754
+ solicitation.missingSessionIds.delete(id);
755
+ });
756
+ if (solicitation.missingSessionIds.size === 0) {
757
+ // All sessions fulfilled, cancel timer
758
+ if (solicitation.timerId) {
759
+ clearTimeout(solicitation.timerId);
760
+ }
761
+ this.log.debug('ephemeral solicitation fully fulfilled', event.streamId);
762
+ return false; // Remove this solicitation
763
+ }
764
+ else {
765
+ // Still has remaining session IDs
766
+ this.log.debug('ephemeral solicitation partially fulfilled', event.streamId, 'remaining:', solicitation.missingSessionIds.size);
767
+ return true; // Keep this solicitation
768
+ }
769
+ });
770
+ if (remainingSolicitations.length === 0) {
771
+ this.ownEphemeralSolicitations.delete(event.streamId);
772
+ }
773
+ else {
774
+ this.ownEphemeralSolicitations.set(event.streamId, remainingSolicitations);
775
+ }
776
+ }
777
+ }
778
+ // Cancel any pending ephemeral solicitations to prevent over-fulfilling
779
+ const streamQueue = this.mainQueues;
780
+ // Remove solicitations that are completely fulfilled
781
+ streamQueue.ephemeralKeySolicitations = streamQueue.ephemeralKeySolicitations.filter((solicitation) => {
782
+ if (solicitation.solicitation.deviceKey !== event.deviceKey) {
783
+ return true; // not the same device, keep it
784
+ }
785
+ // Check if all requested sessions are fulfilled by this fulfillment
786
+ const remainingSessionIds = solicitation.solicitation.sessionIds.filter((id) => !event.sessionIds.includes(id));
787
+ if (remainingSessionIds.length === 0) {
788
+ // All sessions fulfilled, remove this solicitation to prevent duplicate responses
789
+ this.log.debug('cancelling fully fulfilled ephemeral solicitation', event.streamId, solicitation.fromUserId, 'device:', solicitation.solicitation.deviceKey);
790
+ return false;
791
+ }
792
+ else {
793
+ // Update with remaining session IDs
794
+ solicitation.solicitation.sessionIds = remainingSessionIds;
795
+ this.log.debug('partially fulfilled ephemeral solicitation', event.streamId, solicitation.fromUserId, 'remaining:', remainingSessionIds.length, 'respondingIn', Date.now() - solicitation.respondAfter);
796
+ return true;
797
+ }
798
+ });
799
+ }
634
800
  /**
635
801
  * can be overridden to add a delay to the key solicitation response
636
802
  */
637
- getRespondDelayMSForKeySolicitation(_streamId, _userId) {
803
+ getRespondDelayMSForKeySolicitation(_streamId, _userId, _opts) {
638
804
  return 0;
639
805
  }
640
806
  setHighPriorityStreams(streamIds) {