@brightchain/brightchain-lib 0.29.26 → 0.30.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.
- package/package.json +10 -4
- package/src/index.d.ts +1 -1
- package/src/index.d.ts.map +1 -1
- package/src/index.js +2 -1
- package/src/index.js.map +1 -1
- package/src/lib/constants.d.ts +3 -26
- package/src/lib/constants.d.ts.map +1 -1
- package/src/lib/constants.js +2 -1
- package/src/lib/constants.js.map +1 -1
- package/src/lib/db/collection.d.ts +1 -1
- package/src/lib/db/collection.d.ts.map +1 -1
- package/src/lib/db/collection.js +2 -1
- package/src/lib/db/collection.js.map +1 -1
- package/src/lib/enumeration-translations/index.d.ts +2 -0
- package/src/lib/enumeration-translations/index.d.ts.map +1 -1
- package/src/lib/enumeration-translations/index.js +1 -0
- package/src/lib/enumeration-translations/index.js.map +1 -1
- package/src/lib/enumeration-translations/memberStatusType.d.ts +5 -0
- package/src/lib/enumeration-translations/memberStatusType.d.ts.map +1 -0
- package/src/lib/enumeration-translations/memberStatusType.js +58 -0
- package/src/lib/enumeration-translations/memberStatusType.js.map +1 -0
- package/src/lib/enumerations/brightChainStrings.d.ts +61 -0
- package/src/lib/enumerations/brightChainStrings.d.ts.map +1 -1
- package/src/lib/enumerations/brightChainStrings.js +64 -0
- package/src/lib/enumerations/brightChainStrings.js.map +1 -1
- package/src/lib/enumerations/brightchainFeatures.d.ts +1 -0
- package/src/lib/enumerations/brightchainFeatures.d.ts.map +1 -1
- package/src/lib/enumerations/brightchainFeatures.js +1 -0
- package/src/lib/enumerations/brightchainFeatures.js.map +1 -1
- package/src/lib/enumerations/communication.d.ts +7 -1
- package/src/lib/enumerations/communication.d.ts.map +1 -1
- package/src/lib/enumerations/communication.js +6 -0
- package/src/lib/enumerations/communication.js.map +1 -1
- package/src/lib/enumerations/friendRequestStatus.d.ts +7 -0
- package/src/lib/enumerations/friendRequestStatus.d.ts.map +1 -0
- package/src/lib/enumerations/friendRequestStatus.js +11 -0
- package/src/lib/enumerations/friendRequestStatus.js.map +1 -0
- package/src/lib/enumerations/friendsErrorCode.d.ts +10 -0
- package/src/lib/enumerations/friendsErrorCode.d.ts.map +1 -0
- package/src/lib/enumerations/friendsErrorCode.js +14 -0
- package/src/lib/enumerations/friendsErrorCode.js.map +1 -0
- package/src/lib/enumerations/friendshipStatus.d.ts +7 -0
- package/src/lib/enumerations/friendshipStatus.d.ts.map +1 -0
- package/src/lib/enumerations/friendshipStatus.js +11 -0
- package/src/lib/enumerations/friendshipStatus.js.map +1 -0
- package/src/lib/enumerations/index.d.ts +3 -0
- package/src/lib/enumerations/index.d.ts.map +1 -1
- package/src/lib/enumerations/index.js +4 -0
- package/src/lib/enumerations/index.js.map +1 -1
- package/src/lib/enumerations/messaging/emailErrorType.d.ts +15 -2
- package/src/lib/enumerations/messaging/emailErrorType.d.ts.map +1 -1
- package/src/lib/enumerations/messaging/emailErrorType.js +17 -1
- package/src/lib/enumerations/messaging/emailErrorType.js.map +1 -1
- package/src/lib/enumerations/messaging/messageEncryptionScheme.d.ts +4 -2
- package/src/lib/enumerations/messaging/messageEncryptionScheme.d.ts.map +1 -1
- package/src/lib/enumerations/messaging/messageEncryptionScheme.js +3 -1
- package/src/lib/enumerations/messaging/messageEncryptionScheme.js.map +1 -1
- package/src/lib/errors/encryptionErrors.d.ts +71 -0
- package/src/lib/errors/encryptionErrors.d.ts.map +1 -0
- package/src/lib/errors/encryptionErrors.js +112 -0
- package/src/lib/errors/encryptionErrors.js.map +1 -0
- package/src/lib/errors/friendsServiceError.d.ts +20 -0
- package/src/lib/errors/friendsServiceError.d.ts.map +1 -0
- package/src/lib/errors/friendsServiceError.js +48 -0
- package/src/lib/errors/friendsServiceError.js.map +1 -0
- package/src/lib/errors/index.d.ts +15 -0
- package/src/lib/errors/index.d.ts.map +1 -1
- package/src/lib/errors/index.js +21 -0
- package/src/lib/errors/index.js.map +1 -1
- package/src/lib/i18n/i18n-setup.d.ts +2 -2
- package/src/lib/i18n/i18n-setup.d.ts.map +1 -1
- package/src/lib/i18n/strings/englishUK.d.ts +2 -2
- package/src/lib/i18n/strings/englishUK.d.ts.map +1 -1
- package/src/lib/i18n/strings/englishUK.js.map +1 -1
- package/src/lib/i18n/strings/englishUs.d.ts +2 -2
- package/src/lib/i18n/strings/englishUs.d.ts.map +1 -1
- package/src/lib/i18n/strings/englishUs.js +65 -1
- package/src/lib/i18n/strings/englishUs.js.map +1 -1
- package/src/lib/i18n/strings/french.d.ts +2 -2
- package/src/lib/i18n/strings/french.d.ts.map +1 -1
- package/src/lib/i18n/strings/french.js +78 -13
- package/src/lib/i18n/strings/french.js.map +1 -1
- package/src/lib/i18n/strings/german.d.ts +2 -2
- package/src/lib/i18n/strings/german.d.ts.map +1 -1
- package/src/lib/i18n/strings/german.js +77 -12
- package/src/lib/i18n/strings/german.js.map +1 -1
- package/src/lib/i18n/strings/japanese.d.ts +2 -2
- package/src/lib/i18n/strings/japanese.d.ts.map +1 -1
- package/src/lib/i18n/strings/japanese.js +77 -12
- package/src/lib/i18n/strings/japanese.js.map +1 -1
- package/src/lib/i18n/strings/mandarin.d.ts +2 -2
- package/src/lib/i18n/strings/mandarin.d.ts.map +1 -1
- package/src/lib/i18n/strings/mandarin.js +77 -12
- package/src/lib/i18n/strings/mandarin.js.map +1 -1
- package/src/lib/i18n/strings/spanish.d.ts +2 -2
- package/src/lib/i18n/strings/spanish.d.ts.map +1 -1
- package/src/lib/i18n/strings/spanish.js +77 -12
- package/src/lib/i18n/strings/spanish.js.map +1 -1
- package/src/lib/i18n/strings/ukrainian.d.ts +2 -2
- package/src/lib/i18n/strings/ukrainian.d.ts.map +1 -1
- package/src/lib/i18n/strings/ukrainian.js +77 -12
- package/src/lib/i18n/strings/ukrainian.js.map +1 -1
- package/src/lib/index.d.ts +31 -0
- package/src/lib/index.d.ts.map +1 -1
- package/src/lib/index.js +29 -1
- package/src/lib/index.js.map +1 -1
- package/src/lib/interfaces/appSubsystemPlugin.d.ts +69 -0
- package/src/lib/interfaces/appSubsystemPlugin.d.ts.map +1 -0
- package/src/lib/interfaces/appSubsystemPlugin.js +3 -0
- package/src/lib/interfaces/appSubsystemPlugin.js.map +1 -0
- package/src/lib/interfaces/auth/writeProof.d.ts +2 -0
- package/src/lib/interfaces/auth/writeProof.d.ts.map +1 -1
- package/src/lib/interfaces/auth/writeProofUtils.d.ts +1 -1
- package/src/lib/interfaces/auth/writeProofUtils.d.ts.map +1 -1
- package/src/lib/interfaces/auth/writeProofUtils.js +2 -2
- package/src/lib/interfaces/auth/writeProofUtils.js.map +1 -1
- package/src/lib/interfaces/availability/gossipService.d.ts +99 -1
- package/src/lib/interfaces/availability/gossipService.d.ts.map +1 -1
- package/src/lib/interfaces/availability/gossipService.js +4 -0
- package/src/lib/interfaces/availability/gossipService.js.map +1 -1
- package/src/lib/interfaces/communication/blockContentStore.d.ts +57 -0
- package/src/lib/interfaces/communication/blockContentStore.d.ts.map +1 -0
- package/src/lib/interfaces/communication/blockContentStore.js +21 -0
- package/src/lib/interfaces/communication/blockContentStore.js.map +1 -0
- package/src/lib/interfaces/communication/chatStorageProvider.d.ts +77 -0
- package/src/lib/interfaces/communication/chatStorageProvider.d.ts.map +1 -0
- package/src/lib/interfaces/communication/chatStorageProvider.js +25 -0
- package/src/lib/interfaces/communication/chatStorageProvider.js.map +1 -0
- package/src/lib/interfaces/communication/index.d.ts +4 -0
- package/src/lib/interfaces/communication/index.d.ts.map +1 -0
- package/src/lib/interfaces/communication/index.js +3 -0
- package/src/lib/interfaces/communication/index.js.map +1 -0
- package/src/lib/interfaces/communication/server.d.ts +57 -0
- package/src/lib/interfaces/communication/server.d.ts.map +1 -0
- package/src/lib/interfaces/communication/server.js +14 -0
- package/src/lib/interfaces/communication/server.js.map +1 -0
- package/src/lib/interfaces/communication.d.ts +62 -5
- package/src/lib/interfaces/communication.d.ts.map +1 -1
- package/src/lib/interfaces/communication.js +8 -0
- package/src/lib/interfaces/communication.js.map +1 -1
- package/src/lib/interfaces/communicationEvents.d.ts +59 -1
- package/src/lib/interfaces/communicationEvents.d.ts.map +1 -1
- package/src/lib/interfaces/constants.d.ts +2 -0
- package/src/lib/interfaces/constants.d.ts.map +1 -1
- package/src/lib/interfaces/events/communicationEventEmitter.d.ts +9 -0
- package/src/lib/interfaces/events/communicationEventEmitter.d.ts.map +1 -1
- package/src/lib/interfaces/events/communicationEventEmitter.js +9 -0
- package/src/lib/interfaces/events/communicationEventEmitter.js.map +1 -1
- package/src/lib/interfaces/friends/baseFriendRequest.d.ts +13 -0
- package/src/lib/interfaces/friends/baseFriendRequest.d.ts.map +1 -0
- package/src/lib/interfaces/friends/baseFriendRequest.js +3 -0
- package/src/lib/interfaces/friends/baseFriendRequest.js.map +1 -0
- package/src/lib/interfaces/friends/baseFriendship.d.ts +11 -0
- package/src/lib/interfaces/friends/baseFriendship.d.ts.map +1 -0
- package/src/lib/interfaces/friends/baseFriendship.js +3 -0
- package/src/lib/interfaces/friends/baseFriendship.js.map +1 -0
- package/src/lib/interfaces/friends/friendsService.d.ts +32 -0
- package/src/lib/interfaces/friends/friendsService.d.ts.map +1 -0
- package/src/lib/interfaces/friends/friendsService.js +3 -0
- package/src/lib/interfaces/friends/friendsService.js.map +1 -0
- package/src/lib/interfaces/friends/friendsSuggestionProvider.d.ts +17 -0
- package/src/lib/interfaces/friends/friendsSuggestionProvider.d.ts.map +1 -0
- package/src/lib/interfaces/friends/friendsSuggestionProvider.js +3 -0
- package/src/lib/interfaces/friends/friendsSuggestionProvider.js.map +1 -0
- package/src/lib/interfaces/friends/index.d.ts +6 -0
- package/src/lib/interfaces/friends/index.d.ts.map +1 -0
- package/src/lib/interfaces/friends/index.js +3 -0
- package/src/lib/interfaces/friends/index.js.map +1 -0
- package/src/lib/interfaces/friends/pagination.d.ts +11 -0
- package/src/lib/interfaces/friends/pagination.d.ts.map +1 -0
- package/src/lib/interfaces/friends/pagination.js +3 -0
- package/src/lib/interfaces/friends/pagination.js.map +1 -0
- package/src/lib/interfaces/index.d.ts +6 -1
- package/src/lib/interfaces/index.d.ts.map +1 -1
- package/src/lib/interfaces/index.js +3 -0
- package/src/lib/interfaces/index.js.map +1 -1
- package/src/lib/interfaces/messaging/gpgKey.d.ts +93 -0
- package/src/lib/interfaces/messaging/gpgKey.d.ts.map +1 -0
- package/src/lib/interfaces/messaging/gpgKey.js +12 -0
- package/src/lib/interfaces/messaging/gpgKey.js.map +1 -0
- package/src/lib/interfaces/messaging/index.d.ts +4 -0
- package/src/lib/interfaces/messaging/index.d.ts.map +1 -1
- package/src/lib/interfaces/messaging/index.js +4 -0
- package/src/lib/interfaces/messaging/index.js.map +1 -1
- package/src/lib/interfaces/messaging/keyStore.d.ts +100 -0
- package/src/lib/interfaces/messaging/keyStore.d.ts.map +1 -0
- package/src/lib/interfaces/messaging/keyStore.js +13 -0
- package/src/lib/interfaces/messaging/keyStore.js.map +1 -0
- package/src/lib/interfaces/messaging/recipientKeyResolver.d.ts +92 -0
- package/src/lib/interfaces/messaging/recipientKeyResolver.d.ts.map +1 -0
- package/src/lib/interfaces/messaging/recipientKeyResolver.js +13 -0
- package/src/lib/interfaces/messaging/recipientKeyResolver.js.map +1 -0
- package/src/lib/interfaces/messaging/smimeCertificate.d.ts +99 -0
- package/src/lib/interfaces/messaging/smimeCertificate.d.ts.map +1 -0
- package/src/lib/interfaces/messaging/smimeCertificate.js +12 -0
- package/src/lib/interfaces/messaging/smimeCertificate.js.map +1 -0
- package/src/lib/interfaces/responses/adminDashboardResponse.d.ts +8 -0
- package/src/lib/interfaces/responses/adminDashboardResponse.d.ts.map +1 -1
- package/src/lib/interfaces/responses/communicationResponses.d.ts +25 -0
- package/src/lib/interfaces/responses/communicationResponses.d.ts.map +1 -1
- package/src/lib/interfaces/storage/documentTypes.d.ts +4 -0
- package/src/lib/interfaces/storage/documentTypes.d.ts.map +1 -1
- package/src/lib/services/blockService.d.ts +11 -3
- package/src/lib/services/blockService.d.ts.map +1 -1
- package/src/lib/services/blockService.js +22 -2
- package/src/lib/services/blockService.js.map +1 -1
- package/src/lib/services/communication/__tests__/mockChatStorageProvider.d.ts +108 -0
- package/src/lib/services/communication/__tests__/mockChatStorageProvider.d.ts.map +1 -0
- package/src/lib/services/communication/__tests__/mockChatStorageProvider.js +284 -0
- package/src/lib/services/communication/__tests__/mockChatStorageProvider.js.map +1 -0
- package/src/lib/services/communication/attachmentUtils.d.ts +20 -0
- package/src/lib/services/communication/attachmentUtils.d.ts.map +1 -0
- package/src/lib/services/communication/attachmentUtils.js +43 -0
- package/src/lib/services/communication/attachmentUtils.js.map +1 -0
- package/src/lib/services/communication/channelService.d.ts +143 -14
- package/src/lib/services/communication/channelService.d.ts.map +1 -1
- package/src/lib/services/communication/channelService.js +562 -41
- package/src/lib/services/communication/channelService.js.map +1 -1
- package/src/lib/services/communication/conversationService.d.ts +91 -4
- package/src/lib/services/communication/conversationService.d.ts.map +1 -1
- package/src/lib/services/communication/conversationService.js +269 -7
- package/src/lib/services/communication/conversationService.js.map +1 -1
- package/src/lib/services/communication/eciesKeyEncryptionHandler.d.ts +36 -0
- package/src/lib/services/communication/eciesKeyEncryptionHandler.d.ts.map +1 -0
- package/src/lib/services/communication/eciesKeyEncryptionHandler.js +30 -0
- package/src/lib/services/communication/eciesKeyEncryptionHandler.js.map +1 -0
- package/src/lib/services/communication/groupService.d.ts +99 -21
- package/src/lib/services/communication/groupService.d.ts.map +1 -1
- package/src/lib/services/communication/groupService.js +387 -41
- package/src/lib/services/communication/groupService.js.map +1 -1
- package/src/lib/services/communication/index.d.ts +6 -1
- package/src/lib/services/communication/index.d.ts.map +1 -1
- package/src/lib/services/communication/index.js +20 -1
- package/src/lib/services/communication/index.js.map +1 -1
- package/src/lib/services/communication/keyEpochManager.d.ts +41 -0
- package/src/lib/services/communication/keyEpochManager.d.ts.map +1 -0
- package/src/lib/services/communication/keyEpochManager.js +59 -0
- package/src/lib/services/communication/keyEpochManager.js.map +1 -0
- package/src/lib/services/communication/rehydrationHelpers.d.ts +32 -0
- package/src/lib/services/communication/rehydrationHelpers.d.ts.map +1 -0
- package/src/lib/services/communication/rehydrationHelpers.js +58 -0
- package/src/lib/services/communication/rehydrationHelpers.js.map +1 -0
- package/src/lib/services/communication/serverService.d.ts +193 -0
- package/src/lib/services/communication/serverService.d.ts.map +1 -0
- package/src/lib/services/communication/serverService.js +495 -0
- package/src/lib/services/communication/serverService.js.map +1 -0
- package/src/lib/services/copyOnWrite.service.d.ts +110 -0
- package/src/lib/services/copyOnWrite.service.d.ts.map +1 -0
- package/src/lib/services/copyOnWrite.service.js +256 -0
- package/src/lib/services/copyOnWrite.service.js.map +1 -0
- package/src/lib/services/index.d.ts +1 -0
- package/src/lib/services/index.d.ts.map +1 -1
- package/src/lib/services/index.js +1 -0
- package/src/lib/services/index.js.map +1 -1
- package/src/lib/services/memberStore.d.ts +17 -1
- package/src/lib/services/memberStore.d.ts.map +1 -1
- package/src/lib/services/memberStore.js +98 -17
- package/src/lib/services/memberStore.js.map +1 -1
- package/src/lib/services/messaging/emailEncryptionService.d.ts +162 -0
- package/src/lib/services/messaging/emailEncryptionService.d.ts.map +1 -1
- package/src/lib/services/messaging/emailEncryptionService.js +293 -0
- package/src/lib/services/messaging/emailEncryptionService.js.map +1 -1
- package/src/lib/services/messaging/emailMessageService.d.ts +64 -0
- package/src/lib/services/messaging/emailMessageService.d.ts.map +1 -1
- package/src/lib/services/messaging/emailMessageService.js +142 -13
- package/src/lib/services/messaging/emailMessageService.js.map +1 -1
- package/src/lib/services/messaging/gpgKeyManager.d.ts +130 -0
- package/src/lib/services/messaging/gpgKeyManager.d.ts.map +1 -0
- package/src/lib/services/messaging/gpgKeyManager.js +381 -0
- package/src/lib/services/messaging/gpgKeyManager.js.map +1 -0
- package/src/lib/services/messaging/index.d.ts +3 -0
- package/src/lib/services/messaging/index.d.ts.map +1 -1
- package/src/lib/services/messaging/index.js +3 -0
- package/src/lib/services/messaging/index.js.map +1 -1
- package/src/lib/services/messaging/recipientKeyResolver.d.ts +47 -0
- package/src/lib/services/messaging/recipientKeyResolver.d.ts.map +1 -0
- package/src/lib/services/messaging/recipientKeyResolver.js +132 -0
- package/src/lib/services/messaging/recipientKeyResolver.js.map +1 -0
- package/src/lib/services/messaging/smimeCertificateManager.d.ts +207 -0
- package/src/lib/services/messaging/smimeCertificateManager.d.ts.map +1 -0
- package/src/lib/services/messaging/smimeCertificateManager.js +696 -0
- package/src/lib/services/messaging/smimeCertificateManager.js.map +1 -0
- package/src/lib/utils/index.d.ts +6 -0
- package/src/lib/utils/index.d.ts.map +1 -1
- package/src/lib/utils/index.js +9 -0
- package/src/lib/utils/index.js.map +1 -1
- package/src/lib/utils/sortPair.d.ts +6 -0
- package/src/lib/utils/sortPair.d.ts.map +1 -0
- package/src/lib/utils/sortPair.js +11 -0
- package/src/lib/utils/sortPair.js.map +1 -0
|
@@ -1,16 +1,24 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* GroupService — manages group lifecycle, key management, and messaging.
|
|
3
3
|
*
|
|
4
|
-
* Maintains in-memory stores for groups and messages, with
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
4
|
+
* Maintains in-memory stores for groups and messages, with epoch-aware
|
|
5
|
+
* symmetric key management via IKeyEpochState. Each key rotation creates
|
|
6
|
+
* a new epoch. Messages record which epoch they were encrypted under.
|
|
7
|
+
* On member removal, all epoch keys are re-wrapped for remaining members only.
|
|
8
8
|
*
|
|
9
|
-
*
|
|
9
|
+
* When an IChatStorageProvider is injected, groups and group messages are
|
|
10
|
+
* also persisted to the provider's collections (write-through). Sync helper
|
|
11
|
+
* methods continue to read from the in-memory Maps so their signatures
|
|
12
|
+
* remain unchanged.
|
|
13
|
+
*
|
|
14
|
+
* Requirements: 10.2, 5.1, 5.2, 5.3, 5.4, 9.3
|
|
10
15
|
*/
|
|
11
16
|
import { Permission } from '../../enumerations/communication';
|
|
12
|
-
import { ICommunicationMessage, IGroup, IPaginatedResult } from '../../interfaces/communication';
|
|
17
|
+
import { IChatAttachmentInput, ICommunicationMessage, IGroup, IPaginatedResult } from '../../interfaces/communication';
|
|
18
|
+
import { IChatStorageProvider } from '../../interfaces/communication/chatStorageProvider';
|
|
19
|
+
import { IBlockContentStore } from '../../interfaces/communication/blockContentStore';
|
|
13
20
|
import { ICommunicationEventEmitter } from '../../interfaces/events';
|
|
21
|
+
import { IKeyEpochState } from './keyEpochManager';
|
|
14
22
|
import { MessageOperationsService } from './messageOperationsService';
|
|
15
23
|
import { PermissionService } from './permissionService';
|
|
16
24
|
export declare class GroupNotFoundError extends Error {
|
|
@@ -54,35 +62,91 @@ export declare class GroupService {
|
|
|
54
62
|
private readonly groups;
|
|
55
63
|
/** groupId → messages (ordered by createdAt ascending) */
|
|
56
64
|
private readonly messages;
|
|
57
|
-
/** groupId → raw
|
|
58
|
-
private readonly
|
|
65
|
+
/** groupId → epoch-aware key state (raw keys + wrapped keys per epoch) */
|
|
66
|
+
private readonly keyEpochStates;
|
|
59
67
|
private readonly permissionService;
|
|
60
68
|
private readonly encryptKey;
|
|
61
69
|
private readonly messageOps;
|
|
62
70
|
private readonly eventEmitter;
|
|
63
71
|
private readonly randomBytesProvider;
|
|
64
|
-
|
|
72
|
+
/** Optional persistent collection for groups (write-through). */
|
|
73
|
+
private readonly groupCollection;
|
|
74
|
+
/** Optional persistent collection for group messages (write-through). */
|
|
75
|
+
private readonly groupMessageCollection;
|
|
76
|
+
/** Optional block content store for storing message content as blocks. */
|
|
77
|
+
private readonly blockContentStore;
|
|
78
|
+
/** Whether init() has already been called (idempotency guard). */
|
|
79
|
+
private initialized;
|
|
80
|
+
constructor(permissionService: PermissionService, encryptKey?: KeyEncryptionHandler, messageOps?: MessageOperationsService, eventEmitter?: ICommunicationEventEmitter, randomBytesProvider?: (length: number) => Uint8Array, storageProvider?: IChatStorageProvider, blockContentStore?: IBlockContentStore);
|
|
81
|
+
/**
|
|
82
|
+
* Load persisted groups and group messages back into in-memory Maps.
|
|
83
|
+
*
|
|
84
|
+
* Idempotent: only the first call performs rehydration. No-op when no
|
|
85
|
+
* storage provider was supplied at construction time.
|
|
86
|
+
*
|
|
87
|
+
* Requirements: 1.2, 1.5, 1.6, 3.1, 3.2, 3.3, 3.4, 3.5, 8.1, 8.2, 8.3, 9.1, 9.4
|
|
88
|
+
*/
|
|
89
|
+
init(): Promise<void>;
|
|
65
90
|
private assertGroupExists;
|
|
66
91
|
private assertIsMember;
|
|
67
92
|
private assertPermission;
|
|
68
93
|
private assertNotMuted;
|
|
69
94
|
private generateSymmetricKey;
|
|
95
|
+
/**
|
|
96
|
+
* Encrypt a symmetric key for multiple members, returning a Map<memberId, wrappedKey>.
|
|
97
|
+
* Wraps key wrapping failures as KeyUnwrapError with context information.
|
|
98
|
+
*
|
|
99
|
+
* Requirements: 12.3
|
|
100
|
+
*/
|
|
70
101
|
private encryptKeyForMembers;
|
|
71
102
|
/**
|
|
72
|
-
*
|
|
73
|
-
*
|
|
103
|
+
* Assert that a key epoch exists in the epoch state for a given context.
|
|
104
|
+
* Throws KeyEpochNotFoundError if the epoch is not found.
|
|
105
|
+
*
|
|
106
|
+
* Requirements: 12.3
|
|
107
|
+
*/
|
|
108
|
+
private assertEpochExists;
|
|
109
|
+
/**
|
|
110
|
+
* Create initial epoch state (epoch 0) for a new group.
|
|
111
|
+
* Uses KeyEpochManager pattern: creates epoch 0 with wrapped keys for all members.
|
|
112
|
+
*
|
|
113
|
+
* Requirements: 5.1
|
|
114
|
+
*/
|
|
115
|
+
private createInitialEpochState;
|
|
116
|
+
/**
|
|
117
|
+
* Add a member to an existing epoch state: wrap ALL epoch keys for the new member.
|
|
118
|
+
* This gives the new member access to full message history.
|
|
119
|
+
*
|
|
120
|
+
* Requirements: 5.2
|
|
121
|
+
*/
|
|
122
|
+
private addMemberToEpochState;
|
|
123
|
+
/**
|
|
124
|
+
* Rotate key: increment epoch, add new key, delete removed member from ALL epochs,
|
|
125
|
+
* re-wrap ALL epoch keys for remaining members.
|
|
126
|
+
*
|
|
127
|
+
* Requirements: 5.3
|
|
128
|
+
*/
|
|
129
|
+
private rotateEpochState;
|
|
130
|
+
/**
|
|
131
|
+
* Rotate the group's symmetric key using epoch-aware key management.
|
|
132
|
+
* Generates a new key, increments epoch, re-wraps all epoch keys for remaining members,
|
|
133
|
+
* and removes the departed member from all epochs.
|
|
134
|
+
*
|
|
135
|
+
* Requirements: 5.3
|
|
74
136
|
*/
|
|
75
137
|
private rotateKey;
|
|
76
138
|
/**
|
|
77
139
|
* Create a new group with the given members.
|
|
78
140
|
* Generates a shared symmetric key and encrypts it for each member.
|
|
79
141
|
* The creator is assigned the OWNER role; others get MEMBER.
|
|
142
|
+
* Uses KeyEpochManager pattern to create initial epoch 0.
|
|
80
143
|
*
|
|
81
|
-
*
|
|
144
|
+
* Requirements: 10.2, 5.1, 9.3
|
|
82
145
|
*/
|
|
83
146
|
createGroup(name: string, creatorId: string, memberIds: string[]): Promise<IGroup>;
|
|
84
147
|
/**
|
|
85
148
|
* Create a group from a promoted conversation, preserving message history.
|
|
149
|
+
* Generates a FRESH CEK (not reusing the DM key) per Requirement 5.4.
|
|
86
150
|
* Used by ConversationService.promoteToGroup.
|
|
87
151
|
*/
|
|
88
152
|
createGroupFromConversation(conversationId: string, existingParticipants: [string, string], newMemberIds: string[], existingMessages: ICommunicationMessage[], requesterId: string): Promise<IGroup>;
|
|
@@ -92,26 +156,35 @@ export declare class GroupService {
|
|
|
92
156
|
getGroup(groupId: string, requesterId: string): Promise<IGroup>;
|
|
93
157
|
/**
|
|
94
158
|
* Send a message to a group.
|
|
95
|
-
*
|
|
159
|
+
* Encrypts content with the current epoch's CEK and records the keyEpoch.
|
|
160
|
+
* Optionally accepts attachments which are validated against platform limits.
|
|
161
|
+
*
|
|
162
|
+
* Requirements: 10.2, 9.3, 11.1, 11.2, 11.4, 11.5
|
|
96
163
|
*/
|
|
97
|
-
sendMessage(groupId: string, senderId: string, content: string): Promise<ICommunicationMessage>;
|
|
164
|
+
sendMessage(groupId: string, senderId: string, content: string, attachments?: IChatAttachmentInput[]): Promise<ICommunicationMessage>;
|
|
98
165
|
/**
|
|
99
166
|
* Get messages in a group with cursor-based pagination.
|
|
167
|
+
* Messages are returned with their keyEpoch so clients can decrypt
|
|
168
|
+
* using the appropriate epoch's CEK.
|
|
169
|
+
* Validates that each message's keyEpoch exists in the epoch state;
|
|
170
|
+
* throws KeyEpochNotFoundError if a message references a non-existent epoch.
|
|
171
|
+
*
|
|
172
|
+
* Requirements: 5.1, 12.3
|
|
100
173
|
*/
|
|
101
174
|
getMessages(groupId: string, memberId: string, cursor?: string, limit?: number): Promise<IPaginatedResult<ICommunicationMessage>>;
|
|
102
175
|
/**
|
|
103
|
-
* Add members to a group.
|
|
104
|
-
*
|
|
176
|
+
* Add members to a group. Wraps ALL epoch keys for new members.
|
|
177
|
+
* Requirements: 10.2, 5.2
|
|
105
178
|
*/
|
|
106
179
|
addMembers(groupId: string, requesterId: string, memberIds: string[]): Promise<void>;
|
|
107
180
|
/**
|
|
108
|
-
* Remove a member from a group. Rotates the shared key.
|
|
109
|
-
*
|
|
181
|
+
* Remove a member from a group. Rotates the shared key using epoch-aware rotation.
|
|
182
|
+
* Requirements: 10.2, 5.3
|
|
110
183
|
*/
|
|
111
184
|
removeMember(groupId: string, requesterId: string, targetId: string): Promise<void>;
|
|
112
185
|
/**
|
|
113
|
-
* Leave a group voluntarily. Rotates the shared key.
|
|
114
|
-
*
|
|
186
|
+
* Leave a group voluntarily. Rotates the shared key using epoch-aware rotation.
|
|
187
|
+
* Requirements: 10.2, 5.3
|
|
115
188
|
*/
|
|
116
189
|
leaveGroup(groupId: string, memberId: string): Promise<void>;
|
|
117
190
|
/**
|
|
@@ -149,9 +222,14 @@ export declare class GroupService {
|
|
|
149
222
|
*/
|
|
150
223
|
getGroupById(groupId: string): IGroup | undefined;
|
|
151
224
|
/**
|
|
152
|
-
* Get the raw symmetric key for a group
|
|
225
|
+
* Get the current epoch's raw symmetric key for a group.
|
|
226
|
+
* Returns the key for the latest epoch (backward-compatible accessor).
|
|
153
227
|
*/
|
|
154
228
|
getSymmetricKey(groupId: string): Uint8Array | undefined;
|
|
229
|
+
/**
|
|
230
|
+
* Get the full epoch state for a group (testing / internal use).
|
|
231
|
+
*/
|
|
232
|
+
getKeyEpochState(groupId: string): IKeyEpochState<string> | undefined;
|
|
155
233
|
/**
|
|
156
234
|
* Get all messages for a group without pagination (testing/internal).
|
|
157
235
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"groupService.d.ts","sourceRoot":"","sources":["../../../../../../brightchain-lib/src/lib/services/communication/groupService.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"groupService.d.ts","sourceRoot":"","sources":["../../../../../../brightchain-lib/src/lib/services/communication/groupService.ts"],"names":[],"mappings":"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"}
|