@wireapp/core 46.46.0 → 46.46.1

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 (24) hide show
  1. package/lib/Account.test.js +13 -0
  2. package/lib/conversation/ConversationService/ConversationService.d.ts +60 -13
  3. package/lib/conversation/ConversationService/ConversationService.d.ts.map +1 -1
  4. package/lib/conversation/ConversationService/ConversationService.js +199 -319
  5. package/lib/conversation/ConversationService/ConversationService.test.js +34 -8
  6. package/lib/messagingProtocols/mls/MLSService/CoreCryptoMLSError.d.ts +5 -0
  7. package/lib/messagingProtocols/mls/MLSService/CoreCryptoMLSError.d.ts.map +1 -1
  8. package/lib/messagingProtocols/mls/MLSService/MLSService.js +1 -1
  9. package/lib/messagingProtocols/mls/recovery/MlsErrorMapper.d.ts +78 -0
  10. package/lib/messagingProtocols/mls/recovery/MlsErrorMapper.d.ts.map +1 -0
  11. package/lib/messagingProtocols/mls/recovery/MlsErrorMapper.js +173 -0
  12. package/lib/messagingProtocols/mls/recovery/MlsErrorMapper.test.d.ts +2 -0
  13. package/lib/messagingProtocols/mls/recovery/MlsErrorMapper.test.d.ts.map +1 -0
  14. package/lib/messagingProtocols/mls/recovery/MlsErrorMapper.test.js +117 -0
  15. package/lib/messagingProtocols/mls/recovery/MlsRecoveryOrchestrator.d.ts +167 -0
  16. package/lib/messagingProtocols/mls/recovery/MlsRecoveryOrchestrator.d.ts.map +1 -0
  17. package/lib/messagingProtocols/mls/recovery/MlsRecoveryOrchestrator.js +316 -0
  18. package/lib/messagingProtocols/mls/recovery/MlsRecoveryOrchestrator.test.d.ts +2 -0
  19. package/lib/messagingProtocols/mls/recovery/MlsRecoveryOrchestrator.test.d.ts.map +1 -0
  20. package/lib/messagingProtocols/mls/recovery/MlsRecoveryOrchestrator.test.js +248 -0
  21. package/lib/messagingProtocols/mls/recovery/index.d.ts +5 -0
  22. package/lib/messagingProtocols/mls/recovery/index.d.ts.map +1 -0
  23. package/lib/messagingProtocols/mls/recovery/index.js +28 -0
  24. package/package.json +2 -2
@@ -57,6 +57,19 @@ const uuid_1 = require("uuid");
57
57
  const api_client_1 = require("@wireapp/api-client");
58
58
  const commons_1 = require("@wireapp/commons");
59
59
  const protocol_messaging_1 = require("@wireapp/protocol-messaging");
60
+ // Mock ConversationService to avoid requiring MLSService in constructor during tests
61
+ jest.mock('./conversation', () => {
62
+ const actual = jest.requireActual('./conversation');
63
+ class FakeConversationService {
64
+ constructor(..._args) { }
65
+ // Return unhandled so NotificationService falls back to generic handling in tests
66
+ handleEvent = jest.fn(async () => ({ status: 'unhandled' }));
67
+ }
68
+ return {
69
+ ...actual,
70
+ ConversationService: FakeConversationService,
71
+ };
72
+ });
60
73
  const Account_1 = require("./Account");
61
74
  const notification_2 = require("./notification");
62
75
  const BASE_URL = 'mock-backend.wire.com';
@@ -31,8 +31,8 @@ export declare class ConversationService extends TypedEventEmitter<Events> {
31
31
  private readonly _mlsService?;
32
32
  readonly messageTimer: MessageTimer;
33
33
  private readonly logger;
34
- private readonly recoveringKeyMaterialGroups;
35
34
  private groupIdConversationMap;
35
+ private MLSRecoveryOrchestrator;
36
36
  constructor(apiClient: APIClient, proteusService: ProteusService, coreDatabase: CoreDatabase, groupIdFromConversationId: (conversationId: QualifiedId, subconversationId?: SUBCONVERSATION_ID) => Promise<string | undefined>, subconversationService: SubconversationService, isMLSConversationRecoveryEnabled: () => Promise<boolean>, _mlsService?: MLSService | undefined);
37
37
  get mlsService(): MLSService;
38
38
  /**
@@ -110,23 +110,57 @@ export declare class ConversationService extends TypedEventEmitter<Events> {
110
110
  * @param conversationData
111
111
  */
112
112
  establishMLSGroupConversation(groupId: string, userIdsToAdd: QualifiedId[], selfUserId: QualifiedId, selfClientId: string, conversationQualifiedId: QualifiedId): Promise<BaseCreateConversationResponse>;
113
+ /**
114
+ * Send an MLS message wrapped with recovery.
115
+ *
116
+ * Uses the MLS recovery orchestrator to handle transient MLS errors (for example, wrong epoch)
117
+ * according to per-operation policies. When configured, the original send is retried once
118
+ * after a successful recovery. Unrecoverable errors are re-thrown by the orchestrator.
119
+ * The low-level send logic lives in {@link performSendMLSMessageAPI}.
120
+ */
113
121
  private sendMLSMessage;
122
+ private performSendMLSMessageAPI;
114
123
  /**
115
- * Will add users to existing MLS group by claiming their key packages and passing them to CoreCrypto.addClientsToConversation
124
+ * Add users to an existing MLS group with recovery.
116
125
  *
117
- * @param qualifiedUsers List of qualified user ids (with optional skipOwnClientId field - if provided we will not claim key package for this self client)
118
- * @param groupId Id of the group to which we want to add users
119
- * @param conversationId Id of the conversation to which we want to add users
126
+ * Claims key packages and passes them to CoreCrypto.addClientsToConversation. The MLS recovery
127
+ * orchestrator handles recoverable failures (e.g., wrong epoch) and may retry the operation once
128
+ * depending on policy. The optional shouldRetry flag is ignored; retries are governed by policies.
129
+ *
130
+ * @param qualifiedUsers List of qualified user ids (use skipOwnClientId on self to avoid claiming its key package)
131
+ * @param groupId Id of the MLS group to add users to
132
+ * @param conversationId Qualified id of the conversation
120
133
  */
121
- addUsersToMLSConversation({ qualifiedUsers, groupId, conversationId, shouldRetry, }: Required<AddUsersParams> & {
134
+ addUsersToMLSConversation({ qualifiedUsers, groupId, conversationId, }: Required<AddUsersParams> & {
122
135
  shouldRetry?: boolean;
123
136
  }): Promise<BaseCreateConversationResponse>;
124
- removeUsersFromMLSConversation({ groupId, conversationId, qualifiedUserIds, shouldRetry, }: RemoveUsersParams & {
137
+ private performAddUsersToMLSConversationAPI;
138
+ /**
139
+ * Remove users from an existing MLS group with recovery.
140
+ *
141
+ * The MLS recovery orchestrator handles recoverable failures and may retry the operation once
142
+ * depending on policy. The optional shouldRetry flag is ignored; retries are policy-driven.
143
+ */
144
+ removeUsersFromMLSConversation({ groupId, conversationId, qualifiedUserIds, }: RemoveUsersParams & {
125
145
  shouldRetry?: boolean;
126
146
  }): Promise<Conversation>;
127
- joinByExternalCommit(conversationId: QualifiedId, shouldRetry?: boolean): Promise<void>;
147
+ private performRemoveUsersFromMLSConversationAPI;
148
+ /**
149
+ * Join an MLS conversation via external commit with recovery.
150
+ *
151
+ * If the group is not established or is out of date, the orchestrator recovers accordingly.
152
+ * The join operation itself is not automatically re-run by policy.
153
+ */
154
+ joinByExternalCommit(conversationId: QualifiedId): Promise<void>;
155
+ private performJoinByExternalCommitAPI;
128
156
  private refreshGroupIdConversationMap;
129
157
  private getConversationByGroupId;
158
+ /**
159
+ * React to a key material update failure using the recovery orchestrator.
160
+ *
161
+ * The original error is forwarded to the orchestrator under the 'keyMaterialUpdate' operation
162
+ * so it can map and apply the configured recovery policy. Unrecoverable errors are logged.
163
+ */
130
164
  private reactToKeyMaterialUpdateFailure;
131
165
  private resetMLSConversation;
132
166
  /**
@@ -194,15 +228,28 @@ export declare class ConversationService extends TypedEventEmitter<Events> {
194
228
  selfUserId: QualifiedId;
195
229
  qualifiedUsers: QualifiedId[];
196
230
  }): Promise<void>;
231
+ /**
232
+ * Handle an inbound MLS message-add event with recovery.
233
+ *
234
+ * Policies (see MlsRecoveryOrchestrator):
235
+ * - WrongEpoch.handleMessageAdd → recover from epoch mismatch and re-run once.
236
+ * - GroupOutOfSync.handleMessageAdd → not handled here; the error bubbles.
237
+ *
238
+ * Returns the decrypted payload when available. Unknown or unrecoverable errors are logged
239
+ * and result in null so event processing can continue safely.
240
+ */
197
241
  private handleMLSMessageAddEvent;
198
242
  private recoverMLSGroupFromEpochMismatch;
199
- private handleMLSWelcomeMessageEvent;
200
- private handleMlsOrphanWelcomeEvent;
201
243
  /**
202
- * In case of an "MLS conversation already exists" error, we have to wipe the conversation from core-crypto
203
- * and retry processing the welcome message.
244
+ * Handle an MLS welcome event with recovery.
245
+ *
246
+ * Policies (see MlsRecoveryOrchestrator):
247
+ * - OrphanWelcome → join via external commit (no auto re-run).
248
+ * - ConversationAlreadyExists → wipe local state and re-run welcome once.
249
+ *
250
+ * Always resolves to null; the effects are applied to local state.
204
251
  */
205
- private handleMlsConversationAlreadyExistsEvent;
252
+ private handleMLSWelcomeMessageEvent;
206
253
  private handleOtrMessageAddEvent;
207
254
  private isConversationBlacklisted;
208
255
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"ConversationService.d.ts","sourceRoot":"","sources":["../../../src/conversation/ConversationService/ConversationService.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ConversationService.d.ts","sourceRoot":"","sources":["../../../src/conversation/ConversationService/ConversationService.ts"],"names":[],"mappings":"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"}