@brightchain/brightchain-lib 0.29.25 → 0.29.27
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/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 +52 -0
- package/src/lib/enumerations/brightChainStrings.d.ts.map +1 -1
- package/src/lib/enumerations/brightChainStrings.js +54 -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/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/index.d.ts +10 -0
- package/src/lib/errors/index.d.ts.map +1 -1
- package/src/lib/errors/index.js +13 -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 +55 -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 +68 -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 +67 -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 +67 -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 +67 -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 +67 -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 +67 -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/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 +60 -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/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/index.d.ts +4 -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/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 +127 -12
- package/src/lib/services/communication/channelService.d.ts.map +1 -1
- package/src/lib/services/communication/channelService.js +486 -30
- 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 +237 -5
- 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 +359 -39
- 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 +497 -0
- package/src/lib/services/communication/serverService.js.map +1 -0
- package/src/lib/services/memberStore.d.ts +10 -0
- package/src/lib/services/memberStore.d.ts.map +1 -1
- package/src/lib/services/memberStore.js +52 -20
- 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
|
@@ -5,11 +5,24 @@
|
|
|
5
5
|
* Supports channel creation with visibility modes, join/leave, messaging,
|
|
6
6
|
* search, invite token generation/redemption, mute/kick operations.
|
|
7
7
|
*
|
|
8
|
-
*
|
|
8
|
+
* Uses epoch-aware key management via IKeyEpochState for forward secrecy.
|
|
9
|
+
* Each key rotation creates a new epoch. Messages record which epoch they
|
|
10
|
+
* were encrypted under. On member removal, all epoch keys are re-wrapped
|
|
11
|
+
* for remaining members only.
|
|
12
|
+
*
|
|
13
|
+
* When an IChatStorageProvider is injected, channels, channel messages, and
|
|
14
|
+
* invite tokens are also persisted to the provider's collections (write-through).
|
|
15
|
+
* Sync helper methods continue to read from the in-memory Maps so their
|
|
16
|
+
* signatures remain unchanged.
|
|
17
|
+
*
|
|
18
|
+
* Requirements: 10.3, 1.1, 1.2, 1.3, 1.4, 2.1, 2.2, 2.3, 2.4, 3.1, 3.2, 3.3, 3.4, 3.5, 3.6, 9.1
|
|
9
19
|
*/
|
|
10
20
|
import { ChannelVisibility, Permission } from '../../enumerations/communication';
|
|
11
|
-
import { IChannel, IChannelUpdate, ICommunicationMessage, IInviteToken, IPaginatedResult } from '../../interfaces/communication';
|
|
21
|
+
import { IChannel, IChannelUpdate, IChatAttachmentInput, ICommunicationMessage, IInviteToken, IPaginatedResult } from '../../interfaces/communication';
|
|
22
|
+
import { IChatStorageProvider } from '../../interfaces/communication/chatStorageProvider';
|
|
23
|
+
import { IBlockContentStore } from '../../interfaces/communication/blockContentStore';
|
|
12
24
|
import { ICommunicationEventEmitter } from '../../interfaces/events';
|
|
25
|
+
import { IKeyEpochState } from './keyEpochManager';
|
|
13
26
|
import { MessageOperationsService } from './messageOperationsService';
|
|
14
27
|
import { PermissionService } from './permissionService';
|
|
15
28
|
export declare class ChannelNotFoundError extends Error {
|
|
@@ -64,32 +77,95 @@ export declare class ChannelService {
|
|
|
64
77
|
private readonly channels;
|
|
65
78
|
/** channelId → messages (ordered by createdAt ascending) */
|
|
66
79
|
private readonly messages;
|
|
67
|
-
/** channelId → raw
|
|
68
|
-
private readonly
|
|
80
|
+
/** channelId → epoch-aware key state (raw keys + wrapped keys per epoch) */
|
|
81
|
+
private readonly keyEpochStates;
|
|
69
82
|
/** token string → IInviteToken */
|
|
70
83
|
private readonly inviteTokens;
|
|
71
84
|
/** channel name (lowercase) → channelId for uniqueness */
|
|
72
85
|
private readonly nameIndex;
|
|
86
|
+
/** Whether init() has already been called (idempotency guard). */
|
|
87
|
+
private initialized;
|
|
73
88
|
private readonly permissionService;
|
|
74
89
|
private readonly encryptKey;
|
|
75
90
|
private readonly messageOps;
|
|
76
91
|
private readonly eventEmitter;
|
|
77
92
|
private readonly randomBytesProvider;
|
|
78
|
-
|
|
93
|
+
/** Optional persistent collection for channels (write-through). */
|
|
94
|
+
private readonly channelCollection;
|
|
95
|
+
/** Optional persistent collection for channel messages (write-through). */
|
|
96
|
+
private readonly channelMessageCollection;
|
|
97
|
+
/** Optional persistent collection for invite tokens (write-through). */
|
|
98
|
+
private readonly inviteTokenCollection;
|
|
99
|
+
/** Optional block content store for storing message content as blocks. */
|
|
100
|
+
private readonly blockContentStore;
|
|
101
|
+
constructor(permissionService: PermissionService, encryptKey?: ChannelKeyEncryptionHandler, messageOps?: MessageOperationsService, eventEmitter?: ICommunicationEventEmitter, randomBytesProvider?: (length: number) => Uint8Array, storageProvider?: IChatStorageProvider, blockContentStore?: IBlockContentStore);
|
|
102
|
+
/**
|
|
103
|
+
* Load persisted channels, channel messages, and invite tokens back into
|
|
104
|
+
* in-memory Maps, rebuilding derived indexes, key epoch states, and
|
|
105
|
+
* permission registrations.
|
|
106
|
+
*
|
|
107
|
+
* Idempotent: only the first call performs rehydration. No-op when no
|
|
108
|
+
* storage provider was supplied at construction time.
|
|
109
|
+
*
|
|
110
|
+
* Requirements: 1.3, 1.5, 1.6, 4.1, 4.2, 4.3, 4.4, 4.5, 4.6, 4.7, 8.1, 8.2, 8.3, 9.1, 9.3, 9.4
|
|
111
|
+
*/
|
|
112
|
+
init(): Promise<void>;
|
|
79
113
|
private assertChannelExists;
|
|
80
114
|
private assertIsMember;
|
|
81
115
|
private assertPermission;
|
|
82
116
|
private assertNotMuted;
|
|
83
117
|
private generateSymmetricKey;
|
|
118
|
+
/**
|
|
119
|
+
* Encrypt a symmetric key for multiple members, returning a Map<memberId, wrappedKey>.
|
|
120
|
+
* Wraps key wrapping failures as KeyUnwrapError with context information.
|
|
121
|
+
*
|
|
122
|
+
* Requirements: 12.3
|
|
123
|
+
*/
|
|
84
124
|
private encryptKeyForMembers;
|
|
125
|
+
/**
|
|
126
|
+
* Create initial epoch state (epoch 0) for a new channel.
|
|
127
|
+
* Uses KeyEpochManager pattern: creates epoch 0 with wrapped keys for all members.
|
|
128
|
+
*
|
|
129
|
+
* Requirements: 1.3, 2.1
|
|
130
|
+
*/
|
|
131
|
+
private createInitialEpochState;
|
|
132
|
+
/**
|
|
133
|
+
* Add a member to an existing epoch state: wrap ALL epoch keys for the new member.
|
|
134
|
+
* This gives the new member access to full message history.
|
|
135
|
+
*
|
|
136
|
+
* Requirements: 2.2, 6.1, 6.3
|
|
137
|
+
*/
|
|
138
|
+
private addMemberToEpochState;
|
|
139
|
+
/**
|
|
140
|
+
* Rotate key: increment epoch, add new key, delete removed member from ALL epochs,
|
|
141
|
+
* re-wrap ALL epoch keys for remaining members.
|
|
142
|
+
*
|
|
143
|
+
* Requirements: 3.1, 3.2, 3.3, 3.4, 3.5, 3.6
|
|
144
|
+
*/
|
|
145
|
+
private rotateEpochState;
|
|
146
|
+
/**
|
|
147
|
+
* Rotate the channel's symmetric key using epoch-aware key management.
|
|
148
|
+
* Generates a new key, increments epoch, re-wraps all epoch keys for remaining members,
|
|
149
|
+
* and removes the departed member from all epochs.
|
|
150
|
+
*
|
|
151
|
+
* Requirements: 3.1, 3.2, 3.3, 3.4, 3.5
|
|
152
|
+
*/
|
|
85
153
|
private rotateKey;
|
|
154
|
+
/**
|
|
155
|
+
* Assert that a key epoch exists in the epoch state for a given context.
|
|
156
|
+
* Throws KeyEpochNotFoundError if the epoch is not found.
|
|
157
|
+
*
|
|
158
|
+
* Requirements: 12.3
|
|
159
|
+
*/
|
|
160
|
+
private assertEpochExists;
|
|
86
161
|
private normalizeChannelName;
|
|
87
162
|
/**
|
|
88
163
|
* Create a new channel.
|
|
89
164
|
* Generates a shared symmetric key and encrypts it for the creator.
|
|
90
165
|
* The creator is assigned the OWNER role.
|
|
166
|
+
* Uses KeyEpochManager pattern to create initial epoch 0.
|
|
91
167
|
*
|
|
92
|
-
*
|
|
168
|
+
* Requirements: 10.3, 1.3, 2.1, 9.1
|
|
93
169
|
*/
|
|
94
170
|
createChannel(name: string, creatorId: string, visibility: ChannelVisibility, topic?: string): Promise<IChannel>;
|
|
95
171
|
/**
|
|
@@ -117,21 +193,51 @@ export declare class ChannelService {
|
|
|
117
193
|
deleteChannel(channelId: string, requesterId: string): Promise<void>;
|
|
118
194
|
/**
|
|
119
195
|
* Join a public channel. Rejects invite-only channels.
|
|
196
|
+
* Wraps ALL epoch keys for the new member so they can read history.
|
|
120
197
|
*
|
|
121
|
-
*
|
|
198
|
+
* Requirements: 10.3, 2.2
|
|
122
199
|
*/
|
|
123
200
|
joinChannel(channelId: string, memberId: string): Promise<void>;
|
|
201
|
+
/**
|
|
202
|
+
* Remove a member from a channel (server-level operation).
|
|
203
|
+
* Bypasses permission checks — used by ServerService when a member is removed
|
|
204
|
+
* from a server so that key rotation is performed for each affected channel.
|
|
205
|
+
* Silently skips if the member is not in the channel.
|
|
206
|
+
*
|
|
207
|
+
* Requirements: 7.1, 7.2, 7.3
|
|
208
|
+
*/
|
|
209
|
+
removeMemberFromChannel(channelId: string, memberId: string): Promise<void>;
|
|
210
|
+
/**
|
|
211
|
+
* Add a member to a channel (server-level operation).
|
|
212
|
+
* Bypasses visibility checks — used by ServerService when a member joins a server
|
|
213
|
+
* so that all epoch keys are wrapped for the new member across all server channels.
|
|
214
|
+
* Silently skips if the member is already in the channel.
|
|
215
|
+
*
|
|
216
|
+
* Requirements: 6.1, 6.2, 6.3
|
|
217
|
+
*/
|
|
218
|
+
addMemberToChannel(channelId: string, memberId: string): Promise<void>;
|
|
124
219
|
/**
|
|
125
220
|
* Leave a channel voluntarily. Rotates the shared key.
|
|
221
|
+
*
|
|
222
|
+
* Requirements: 3.5
|
|
126
223
|
*/
|
|
127
224
|
leaveChannel(channelId: string, memberId: string): Promise<void>;
|
|
128
225
|
/**
|
|
129
226
|
* Send a message to a channel.
|
|
130
|
-
*
|
|
227
|
+
* Encrypts content with the current epoch's CEK and records the keyEpoch.
|
|
228
|
+
* Optionally accepts attachments which are validated against platform limits.
|
|
229
|
+
*
|
|
230
|
+
* Requirements: 10.3, 1.1, 1.4, 9.1, 11.1, 11.2, 11.4, 11.5
|
|
131
231
|
*/
|
|
132
|
-
sendMessage(channelId: string, senderId: string, content: string): Promise<ICommunicationMessage>;
|
|
232
|
+
sendMessage(channelId: string, senderId: string, content: string, attachments?: IChatAttachmentInput[]): Promise<ICommunicationMessage>;
|
|
133
233
|
/**
|
|
134
234
|
* Get messages in a channel with cursor-based pagination.
|
|
235
|
+
* Messages are returned with their keyEpoch so clients can decrypt
|
|
236
|
+
* using the appropriate epoch's CEK.
|
|
237
|
+
* Validates that each message's keyEpoch exists in the epoch state;
|
|
238
|
+
* throws KeyEpochNotFoundError if a message references a non-existent epoch.
|
|
239
|
+
*
|
|
240
|
+
* Requirements: 1.2, 12.3
|
|
135
241
|
*/
|
|
136
242
|
getMessages(channelId: string, memberId: string, cursor?: string, limit?: number): Promise<IPaginatedResult<ICommunicationMessage>>;
|
|
137
243
|
/**
|
|
@@ -147,8 +253,9 @@ export declare class ChannelService {
|
|
|
147
253
|
createInvite(channelId: string, creatorId: string, maxUses?: number, expiresInMs?: number): Promise<IInviteToken>;
|
|
148
254
|
/**
|
|
149
255
|
* Redeem an invite token to join a channel.
|
|
256
|
+
* Wraps ALL epoch keys for the joining member.
|
|
150
257
|
*
|
|
151
|
-
*
|
|
258
|
+
* Requirements: 10.3, 2.2
|
|
152
259
|
*/
|
|
153
260
|
redeemInvite(token: string, memberId: string): Promise<void>;
|
|
154
261
|
/**
|
|
@@ -159,10 +266,10 @@ export declare class ChannelService {
|
|
|
159
266
|
*/
|
|
160
267
|
muteMember(channelId: string, requesterId: string, targetId: string, durationMs: number): Promise<void>;
|
|
161
268
|
/**
|
|
162
|
-
* Kick a member from a channel. Rotates encryption keys.
|
|
269
|
+
* Kick a member from a channel. Rotates encryption keys using epoch-aware rotation.
|
|
163
270
|
* Requires KICK_MEMBERS permission.
|
|
164
271
|
*
|
|
165
|
-
*
|
|
272
|
+
* Requirements: 10.3, 3.1, 3.2, 3.3, 3.4
|
|
166
273
|
*/
|
|
167
274
|
kickMember(channelId: string, requesterId: string, targetId: string): Promise<void>;
|
|
168
275
|
/**
|
|
@@ -196,7 +303,15 @@ export declare class ChannelService {
|
|
|
196
303
|
*/
|
|
197
304
|
removeReaction(channelId: string, messageId: string, memberId: string, reactionId: string): Promise<void>;
|
|
198
305
|
getChannelById(channelId: string): IChannel | undefined;
|
|
306
|
+
/**
|
|
307
|
+
* Get the current epoch's raw symmetric key for a channel.
|
|
308
|
+
* Returns the key for the latest epoch (backward-compatible accessor).
|
|
309
|
+
*/
|
|
199
310
|
getSymmetricKey(channelId: string): Uint8Array | undefined;
|
|
311
|
+
/**
|
|
312
|
+
* Get the full epoch state for a channel (testing / internal use).
|
|
313
|
+
*/
|
|
314
|
+
getKeyEpochState(channelId: string): IKeyEpochState<string> | undefined;
|
|
200
315
|
getAllMessages(channelId: string): ICommunicationMessage[];
|
|
201
316
|
getInviteToken(token: string): IInviteToken | undefined;
|
|
202
317
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"channelService.d.ts","sourceRoot":"","sources":["../../../../../../brightchain-lib/src/lib/services/communication/channelService.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"channelService.d.ts","sourceRoot":"","sources":["../../../../../../brightchain-lib/src/lib/services/communication/channelService.ts"],"names":[],"mappings":"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"}
|