@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
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mockChatStorageProvider.d.ts","sourceRoot":"","sources":["../../../../../../../brightchain-lib/src/lib/services/communication/__tests__/mockChatStorageProvider.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,284 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* In-memory mock implementation of IChatStorageProvider for property-based
|
|
4
|
+
* and unit tests.
|
|
5
|
+
*
|
|
6
|
+
* Each IChatCollection<T> is backed by a T[] array. findMany() returns the
|
|
7
|
+
* full array by default, but can be configured to throw for error-propagation
|
|
8
|
+
* tests.
|
|
9
|
+
*
|
|
10
|
+
* Also exports fast-check arbitraries for all BrightChat entity types.
|
|
11
|
+
*
|
|
12
|
+
* Requirements: all (test infrastructure)
|
|
13
|
+
*/
|
|
14
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
+
exports.arbServerInviteToken = exports.arbInviteToken = exports.arbMessage = exports.arbServer = exports.arbChannel = exports.arbGroup = exports.arbConversation = exports.arbEncryptedSharedKey = exports.MockChatStorageProvider = exports.MockChatCollection = void 0;
|
|
16
|
+
const tslib_1 = require("tslib");
|
|
17
|
+
const fast_check_1 = tslib_1.__importDefault(require("fast-check"));
|
|
18
|
+
const communication_1 = require("../../../enumerations/communication");
|
|
19
|
+
// ─── Mock Collection ────────────────────────────────────────────────────────
|
|
20
|
+
/**
|
|
21
|
+
* In-memory IChatCollection backed by a plain array.
|
|
22
|
+
*
|
|
23
|
+
* `findMany()` returns the full backing array unless `errorOnFindMany` is set,
|
|
24
|
+
* in which case it throws the configured error.
|
|
25
|
+
*/
|
|
26
|
+
class MockChatCollection {
|
|
27
|
+
items = [];
|
|
28
|
+
errorOnFindMany = null;
|
|
29
|
+
constructor(initialItems = []) {
|
|
30
|
+
this.items = [...initialItems];
|
|
31
|
+
}
|
|
32
|
+
/** Configure findMany() to throw the given error on next (and subsequent) calls. */
|
|
33
|
+
setFindManyError(error) {
|
|
34
|
+
this.errorOnFindMany = error;
|
|
35
|
+
}
|
|
36
|
+
/** Clear any configured findMany() error. */
|
|
37
|
+
clearFindManyError() {
|
|
38
|
+
this.errorOnFindMany = null;
|
|
39
|
+
}
|
|
40
|
+
async create(doc) {
|
|
41
|
+
this.items.push(doc);
|
|
42
|
+
}
|
|
43
|
+
async findById(key) {
|
|
44
|
+
// Simple lookup — assumes T has an `id` or `token` field
|
|
45
|
+
const item = this.items.find((i) => i['id'] === key ||
|
|
46
|
+
i['token'] === key);
|
|
47
|
+
return item ?? null;
|
|
48
|
+
}
|
|
49
|
+
async findMany(_filter) {
|
|
50
|
+
if (this.errorOnFindMany) {
|
|
51
|
+
throw this.errorOnFindMany;
|
|
52
|
+
}
|
|
53
|
+
return [...this.items];
|
|
54
|
+
}
|
|
55
|
+
async update(key, doc) {
|
|
56
|
+
const idx = this.items.findIndex((i) => i['id'] === key ||
|
|
57
|
+
i['token'] === key);
|
|
58
|
+
if (idx >= 0) {
|
|
59
|
+
this.items[idx] = doc;
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
async delete(key) {
|
|
63
|
+
this.items = this.items.filter((i) => i['id'] !== key &&
|
|
64
|
+
i['token'] !== key);
|
|
65
|
+
}
|
|
66
|
+
/** Direct access to the backing array (for test assertions). */
|
|
67
|
+
getItems() {
|
|
68
|
+
return [...this.items];
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
exports.MockChatCollection = MockChatCollection;
|
|
72
|
+
// ─── Mock Storage Provider ──────────────────────────────────────────────────
|
|
73
|
+
/**
|
|
74
|
+
* In-memory IChatStorageProvider. All collections are MockChatCollection
|
|
75
|
+
* instances that can be pre-populated and configured independently.
|
|
76
|
+
*/
|
|
77
|
+
class MockChatStorageProvider {
|
|
78
|
+
conversations;
|
|
79
|
+
messages;
|
|
80
|
+
groups;
|
|
81
|
+
groupMessages;
|
|
82
|
+
channels;
|
|
83
|
+
channelMessages;
|
|
84
|
+
inviteTokens;
|
|
85
|
+
servers;
|
|
86
|
+
serverInvites;
|
|
87
|
+
constructor(opts) {
|
|
88
|
+
this.conversations = new MockChatCollection(opts?.conversations);
|
|
89
|
+
this.messages = new MockChatCollection(opts?.messages);
|
|
90
|
+
this.groups = new MockChatCollection(opts?.groups);
|
|
91
|
+
this.groupMessages = new MockChatCollection(opts?.groupMessages);
|
|
92
|
+
this.channels = new MockChatCollection(opts?.channels);
|
|
93
|
+
this.channelMessages = new MockChatCollection(opts?.channelMessages);
|
|
94
|
+
this.inviteTokens = new MockChatCollection(opts?.inviteTokens);
|
|
95
|
+
this.servers = new MockChatCollection(opts?.servers);
|
|
96
|
+
this.serverInvites = new MockChatCollection(opts?.serverInvites);
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
exports.MockChatStorageProvider = MockChatStorageProvider;
|
|
100
|
+
// ─── fast-check Arbitraries ─────────────────────────────────────────────────
|
|
101
|
+
/** Arbitrary for non-empty alphanumeric IDs (1–36 chars). */
|
|
102
|
+
const arbId = fast_check_1.default.stringMatching(/^[a-zA-Z0-9]{1,36}$/);
|
|
103
|
+
/** Arbitrary for a Date within a reasonable range. */
|
|
104
|
+
const arbDate = fast_check_1.default.date({ min: new Date('2020-01-01'), max: new Date('2030-01-01') });
|
|
105
|
+
/** Arbitrary for DefaultRole enum values. */
|
|
106
|
+
const arbRole = fast_check_1.default.constantFrom(communication_1.DefaultRole.OWNER, communication_1.DefaultRole.ADMIN, communication_1.DefaultRole.MODERATOR, communication_1.DefaultRole.MEMBER);
|
|
107
|
+
/** Arbitrary for ChannelVisibility enum values. */
|
|
108
|
+
const arbVisibility = fast_check_1.default.constantFrom(communication_1.ChannelVisibility.PUBLIC, communication_1.ChannelVisibility.PRIVATE, communication_1.ChannelVisibility.SECRET, communication_1.ChannelVisibility.INVISIBLE);
|
|
109
|
+
/**
|
|
110
|
+
* Arbitrary for `Map<number, Map<string, string>>` representing
|
|
111
|
+
* encrypted shared keys across 1–5 epochs.
|
|
112
|
+
*
|
|
113
|
+
* Each epoch maps 1–5 member IDs to a base64-like wrapped key string.
|
|
114
|
+
*/
|
|
115
|
+
const arbEncryptedSharedKey = (minEpochs = 1, maxEpochs = 5) => fast_check_1.default
|
|
116
|
+
.array(fast_check_1.default.tuple(fast_check_1.default.nat({ max: 100 }), // epoch number
|
|
117
|
+
fast_check_1.default.array(fast_check_1.default.tuple(arbId, fast_check_1.default.base64String({ minLength: 8, maxLength: 64 })), { minLength: 1, maxLength: 5 })), { minLength: minEpochs, maxLength: maxEpochs })
|
|
118
|
+
.map((entries) => {
|
|
119
|
+
const outer = new Map();
|
|
120
|
+
// Use unique epoch numbers by offsetting duplicates
|
|
121
|
+
let nextEpoch = 0;
|
|
122
|
+
for (const [epoch, members] of entries) {
|
|
123
|
+
const usedEpoch = outer.has(epoch) ? nextEpoch++ : epoch;
|
|
124
|
+
if (outer.has(usedEpoch)) {
|
|
125
|
+
nextEpoch = usedEpoch + 1;
|
|
126
|
+
outer.set(nextEpoch++, new Map(members));
|
|
127
|
+
}
|
|
128
|
+
else {
|
|
129
|
+
outer.set(usedEpoch, new Map(members));
|
|
130
|
+
if (usedEpoch >= nextEpoch)
|
|
131
|
+
nextEpoch = usedEpoch + 1;
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
return outer;
|
|
135
|
+
});
|
|
136
|
+
exports.arbEncryptedSharedKey = arbEncryptedSharedKey;
|
|
137
|
+
/** Arbitrary for IGroupMember. */
|
|
138
|
+
const arbGroupMember = fast_check_1.default.record({
|
|
139
|
+
memberId: arbId,
|
|
140
|
+
role: arbRole,
|
|
141
|
+
joinedAt: arbDate,
|
|
142
|
+
mutedUntil: fast_check_1.default.option(arbDate, { nil: undefined }),
|
|
143
|
+
});
|
|
144
|
+
/** Arbitrary for IChannelMember. */
|
|
145
|
+
const arbChannelMember = fast_check_1.default.record({
|
|
146
|
+
memberId: arbId,
|
|
147
|
+
role: arbRole,
|
|
148
|
+
joinedAt: arbDate,
|
|
149
|
+
mutedUntil: fast_check_1.default.option(arbDate, { nil: undefined }),
|
|
150
|
+
});
|
|
151
|
+
/**
|
|
152
|
+
* Arbitrary for IConversation<string, string>.
|
|
153
|
+
* Generates a conversation with two distinct participants and a valid
|
|
154
|
+
* encryptedSharedKey map.
|
|
155
|
+
*/
|
|
156
|
+
exports.arbConversation = fast_check_1.default
|
|
157
|
+
.record({
|
|
158
|
+
id: arbId,
|
|
159
|
+
participant1: arbId,
|
|
160
|
+
participant2: arbId,
|
|
161
|
+
encryptedSharedKey: (0, exports.arbEncryptedSharedKey)(),
|
|
162
|
+
createdAt: arbDate,
|
|
163
|
+
lastMessageAt: arbDate,
|
|
164
|
+
lastMessagePreview: fast_check_1.default.option(fast_check_1.default.string({ minLength: 0, maxLength: 100 }), {
|
|
165
|
+
nil: undefined,
|
|
166
|
+
}),
|
|
167
|
+
})
|
|
168
|
+
.filter((r) => r.participant1 !== r.participant2)
|
|
169
|
+
.map((r) => ({
|
|
170
|
+
id: r.id,
|
|
171
|
+
participants: [r.participant1, r.participant2],
|
|
172
|
+
encryptedSharedKey: r.encryptedSharedKey,
|
|
173
|
+
createdAt: r.createdAt,
|
|
174
|
+
lastMessageAt: r.lastMessageAt,
|
|
175
|
+
lastMessagePreview: r.lastMessagePreview,
|
|
176
|
+
}));
|
|
177
|
+
/**
|
|
178
|
+
* Arbitrary for IGroup<string, string>.
|
|
179
|
+
* Generates a group with 1–10 members and a valid encryptedSharedKey map.
|
|
180
|
+
*/
|
|
181
|
+
exports.arbGroup = fast_check_1.default.record({
|
|
182
|
+
id: arbId,
|
|
183
|
+
name: fast_check_1.default.string({ minLength: 1, maxLength: 50 }),
|
|
184
|
+
creatorId: arbId,
|
|
185
|
+
members: fast_check_1.default.array(arbGroupMember, { minLength: 1, maxLength: 10 }),
|
|
186
|
+
encryptedSharedKey: (0, exports.arbEncryptedSharedKey)(),
|
|
187
|
+
createdAt: arbDate,
|
|
188
|
+
lastMessageAt: arbDate,
|
|
189
|
+
pinnedMessageIds: fast_check_1.default.array(arbId, { minLength: 0, maxLength: 5 }),
|
|
190
|
+
promotedFromConversation: fast_check_1.default.option(arbId, { nil: undefined }),
|
|
191
|
+
});
|
|
192
|
+
/**
|
|
193
|
+
* Arbitrary for IChannel<string, string>.
|
|
194
|
+
* Generates a channel with members, visibility, and a valid encryptedSharedKey.
|
|
195
|
+
*/
|
|
196
|
+
exports.arbChannel = fast_check_1.default.record({
|
|
197
|
+
id: arbId,
|
|
198
|
+
name: fast_check_1.default.string({ minLength: 1, maxLength: 50 }),
|
|
199
|
+
topic: fast_check_1.default.string({ minLength: 0, maxLength: 100 }),
|
|
200
|
+
creatorId: arbId,
|
|
201
|
+
visibility: arbVisibility,
|
|
202
|
+
members: fast_check_1.default.array(arbChannelMember, { minLength: 1, maxLength: 10 }),
|
|
203
|
+
encryptedSharedKey: (0, exports.arbEncryptedSharedKey)(),
|
|
204
|
+
createdAt: arbDate,
|
|
205
|
+
lastMessageAt: arbDate,
|
|
206
|
+
pinnedMessageIds: fast_check_1.default.array(arbId, { minLength: 0, maxLength: 5 }),
|
|
207
|
+
historyVisibleToNewMembers: fast_check_1.default.boolean(),
|
|
208
|
+
serverId: fast_check_1.default.option(arbId, { nil: undefined }),
|
|
209
|
+
});
|
|
210
|
+
/**
|
|
211
|
+
* Arbitrary for IServer<string, string>.
|
|
212
|
+
* Generates a server with members, channels, and categories.
|
|
213
|
+
*/
|
|
214
|
+
exports.arbServer = fast_check_1.default
|
|
215
|
+
.record({
|
|
216
|
+
id: arbId,
|
|
217
|
+
name: fast_check_1.default.string({ minLength: 1, maxLength: 100 }),
|
|
218
|
+
iconUrl: fast_check_1.default.option(fast_check_1.default.webUrl(), { nil: undefined }),
|
|
219
|
+
ownerId: arbId,
|
|
220
|
+
memberIds: fast_check_1.default.array(arbId, { minLength: 1, maxLength: 10 }),
|
|
221
|
+
channelIds: fast_check_1.default.array(arbId, { minLength: 0, maxLength: 10 }),
|
|
222
|
+
categories: fast_check_1.default.array(fast_check_1.default.record({
|
|
223
|
+
id: arbId,
|
|
224
|
+
name: fast_check_1.default.string({ minLength: 1, maxLength: 50 }),
|
|
225
|
+
position: fast_check_1.default.nat({ max: 20 }),
|
|
226
|
+
channelIds: fast_check_1.default.array(arbId, { minLength: 0, maxLength: 5 }),
|
|
227
|
+
}), { minLength: 0, maxLength: 5 }),
|
|
228
|
+
createdAt: arbDate,
|
|
229
|
+
updatedAt: arbDate,
|
|
230
|
+
});
|
|
231
|
+
/**
|
|
232
|
+
* Arbitrary for ICommunicationMessage<string, string>.
|
|
233
|
+
* Optionally accepts a fixed contextId; otherwise generates a random one.
|
|
234
|
+
*/
|
|
235
|
+
const arbMessage = (contextId) => fast_check_1.default.record({
|
|
236
|
+
id: arbId,
|
|
237
|
+
contextType: fast_check_1.default.constantFrom('conversation', 'group', 'channel'),
|
|
238
|
+
contextId: contextId ? fast_check_1.default.constant(contextId) : arbId,
|
|
239
|
+
senderId: arbId,
|
|
240
|
+
encryptedContent: fast_check_1.default.base64String({ minLength: 1, maxLength: 200 }),
|
|
241
|
+
createdAt: arbDate,
|
|
242
|
+
editedAt: fast_check_1.default.option(arbDate, { nil: undefined }),
|
|
243
|
+
editHistory: fast_check_1.default.constant([]),
|
|
244
|
+
deleted: fast_check_1.default.constant(false),
|
|
245
|
+
deletedBy: fast_check_1.default.option(arbId, { nil: undefined }),
|
|
246
|
+
pinned: fast_check_1.default.boolean(),
|
|
247
|
+
reactions: fast_check_1.default.constant([]),
|
|
248
|
+
keyEpoch: fast_check_1.default.nat({ max: 100 }),
|
|
249
|
+
attachments: fast_check_1.default.constant([]),
|
|
250
|
+
expiresAt: fast_check_1.default.option(arbDate, { nil: undefined }),
|
|
251
|
+
maxReads: fast_check_1.default.option(fast_check_1.default.nat({ max: 100 }), { nil: undefined }),
|
|
252
|
+
readCount: fast_check_1.default.option(fast_check_1.default.nat({ max: 100 }), { nil: undefined }),
|
|
253
|
+
readBy: fast_check_1.default.option(fast_check_1.default.constant(new Map()), { nil: undefined }),
|
|
254
|
+
exploded: fast_check_1.default.option(fast_check_1.default.boolean(), { nil: undefined }),
|
|
255
|
+
explodedAt: fast_check_1.default.option(arbDate, { nil: undefined }),
|
|
256
|
+
});
|
|
257
|
+
exports.arbMessage = arbMessage;
|
|
258
|
+
/**
|
|
259
|
+
* Arbitrary for IInviteToken<string>.
|
|
260
|
+
* Generates a channel invite token with valid metadata.
|
|
261
|
+
*/
|
|
262
|
+
exports.arbInviteToken = fast_check_1.default.record({
|
|
263
|
+
token: fast_check_1.default.stringMatching(/^[a-zA-Z0-9]{8,32}$/),
|
|
264
|
+
channelId: arbId,
|
|
265
|
+
createdBy: arbId,
|
|
266
|
+
createdAt: arbDate,
|
|
267
|
+
expiresAt: arbDate,
|
|
268
|
+
maxUses: fast_check_1.default.integer({ min: 1, max: 1000 }),
|
|
269
|
+
currentUses: fast_check_1.default.nat({ max: 999 }),
|
|
270
|
+
});
|
|
271
|
+
/**
|
|
272
|
+
* Arbitrary for IServerInviteToken<string>.
|
|
273
|
+
* Generates a server invite token with valid metadata.
|
|
274
|
+
*/
|
|
275
|
+
exports.arbServerInviteToken = fast_check_1.default.record({
|
|
276
|
+
token: fast_check_1.default.stringMatching(/^[a-zA-Z0-9]{8,32}$/),
|
|
277
|
+
serverId: arbId,
|
|
278
|
+
createdBy: arbId,
|
|
279
|
+
createdAt: arbDate,
|
|
280
|
+
expiresAt: fast_check_1.default.option(arbDate, { nil: undefined }),
|
|
281
|
+
maxUses: fast_check_1.default.option(fast_check_1.default.integer({ min: 1, max: 1000 }), { nil: undefined }),
|
|
282
|
+
currentUses: fast_check_1.default.nat({ max: 999 }),
|
|
283
|
+
});
|
|
284
|
+
//# sourceMappingURL=mockChatStorageProvider.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mockChatStorageProvider.js","sourceRoot":"","sources":["../../../../../../../brightchain-lib/src/lib/services/communication/__tests__/mockChatStorageProvider.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared attachment validation and processing utilities for chat services.
|
|
3
|
+
*
|
|
4
|
+
* Validates attachment size/count limits and converts IChatAttachmentInput[]
|
|
5
|
+
* into IChatAttachmentMetadata[] for storage on messages.
|
|
6
|
+
*
|
|
7
|
+
* Requirements: 11.1, 11.2, 11.4, 11.5
|
|
8
|
+
*/
|
|
9
|
+
import { IAttachmentConfig, IChatAttachmentInput, IChatAttachmentMetadata } from '../../interfaces/communication';
|
|
10
|
+
/**
|
|
11
|
+
* Validate attachment limits and produce metadata entries.
|
|
12
|
+
*
|
|
13
|
+
* Checks count limit first, then per-file size limit.
|
|
14
|
+
* Returns an array of IChatAttachmentMetadata with generated assetIds.
|
|
15
|
+
*
|
|
16
|
+
* @throws TooManyAttachmentsError if attachments.length > config.maxAttachmentsPerMessage
|
|
17
|
+
* @throws AttachmentTooLargeError if any attachment exceeds config.maxFileSizeBytes
|
|
18
|
+
*/
|
|
19
|
+
export declare function validateAndPrepareAttachments(attachments: IChatAttachmentInput[], config?: IAttachmentConfig): IChatAttachmentMetadata[];
|
|
20
|
+
//# sourceMappingURL=attachmentUtils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"attachmentUtils.d.ts","sourceRoot":"","sources":["../../../../../../brightchain-lib/src/lib/services/communication/attachmentUtils.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAOH,OAAO,EAEL,iBAAiB,EACjB,oBAAoB,EACpB,uBAAuB,EACxB,MAAM,gCAAgC,CAAC;AAExC;;;;;;;;GAQG;AACH,wBAAgB,6BAA6B,CAC3C,WAAW,EAAE,oBAAoB,EAAE,EACnC,MAAM,GAAE,iBAA6C,GACpD,uBAAuB,EAAE,CA6B3B"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Shared attachment validation and processing utilities for chat services.
|
|
4
|
+
*
|
|
5
|
+
* Validates attachment size/count limits and converts IChatAttachmentInput[]
|
|
6
|
+
* into IChatAttachmentMetadata[] for storage on messages.
|
|
7
|
+
*
|
|
8
|
+
* Requirements: 11.1, 11.2, 11.4, 11.5
|
|
9
|
+
*/
|
|
10
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
11
|
+
exports.validateAndPrepareAttachments = validateAndPrepareAttachments;
|
|
12
|
+
const uuid_1 = require("uuid");
|
|
13
|
+
const encryptionErrors_1 = require("../../errors/encryptionErrors");
|
|
14
|
+
const communication_1 = require("../../interfaces/communication");
|
|
15
|
+
/**
|
|
16
|
+
* Validate attachment limits and produce metadata entries.
|
|
17
|
+
*
|
|
18
|
+
* Checks count limit first, then per-file size limit.
|
|
19
|
+
* Returns an array of IChatAttachmentMetadata with generated assetIds.
|
|
20
|
+
*
|
|
21
|
+
* @throws TooManyAttachmentsError if attachments.length > config.maxAttachmentsPerMessage
|
|
22
|
+
* @throws AttachmentTooLargeError if any attachment exceeds config.maxFileSizeBytes
|
|
23
|
+
*/
|
|
24
|
+
function validateAndPrepareAttachments(attachments, config = communication_1.DEFAULT_ATTACHMENT_CONFIG) {
|
|
25
|
+
if (attachments.length > config.maxAttachmentsPerMessage) {
|
|
26
|
+
throw new encryptionErrors_1.TooManyAttachmentsError(attachments.length, config.maxAttachmentsPerMessage);
|
|
27
|
+
}
|
|
28
|
+
const metadata = [];
|
|
29
|
+
for (const att of attachments) {
|
|
30
|
+
if (att.content.length > config.maxFileSizeBytes) {
|
|
31
|
+
throw new encryptionErrors_1.AttachmentTooLargeError(att.fileName, att.content.length, config.maxFileSizeBytes);
|
|
32
|
+
}
|
|
33
|
+
metadata.push({
|
|
34
|
+
assetId: (0, uuid_1.v4)(),
|
|
35
|
+
fileName: att.fileName,
|
|
36
|
+
mimeType: att.mimeType,
|
|
37
|
+
encryptedSize: att.content.length, // placeholder — real encryption may change size
|
|
38
|
+
originalSize: att.content.length,
|
|
39
|
+
});
|
|
40
|
+
}
|
|
41
|
+
return metadata;
|
|
42
|
+
}
|
|
43
|
+
//# sourceMappingURL=attachmentUtils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"attachmentUtils.js","sourceRoot":"","sources":["../../../../../../brightchain-lib/src/lib/services/communication/attachmentUtils.ts"],"names":[],"mappings":";AAAA;;;;;;;GAOG;;AAuBH,sEAgCC;AArDD,+BAAoC;AACpC,oEAGuC;AACvC,kEAKwC;AAExC;;;;;;;;GAQG;AACH,SAAgB,6BAA6B,CAC3C,WAAmC,EACnC,SAA4B,yCAAyB;IAErD,IAAI,WAAW,CAAC,MAAM,GAAG,MAAM,CAAC,wBAAwB,EAAE,CAAC;QACzD,MAAM,IAAI,0CAAuB,CAC/B,WAAW,CAAC,MAAM,EAClB,MAAM,CAAC,wBAAwB,CAChC,CAAC;IACJ,CAAC;IAED,MAAM,QAAQ,GAA8B,EAAE,CAAC;IAE/C,KAAK,MAAM,GAAG,IAAI,WAAW,EAAE,CAAC;QAC9B,IAAI,GAAG,CAAC,OAAO,CAAC,MAAM,GAAG,MAAM,CAAC,gBAAgB,EAAE,CAAC;YACjD,MAAM,IAAI,0CAAuB,CAC/B,GAAG,CAAC,QAAQ,EACZ,GAAG,CAAC,OAAO,CAAC,MAAM,EAClB,MAAM,CAAC,gBAAgB,CACxB,CAAC;QACJ,CAAC;QAED,QAAQ,CAAC,IAAI,CAAC;YACZ,OAAO,EAAE,IAAA,SAAM,GAAE;YACjB,QAAQ,EAAE,GAAG,CAAC,QAAQ;YACtB,QAAQ,EAAE,GAAG,CAAC,QAAQ;YACtB,aAAa,EAAE,GAAG,CAAC,OAAO,CAAC,MAAM,EAAE,gDAAgD;YACnF,YAAY,EAAE,GAAG,CAAC,OAAO,CAAC,MAAM;SACjC,CAAC,CAAC;IACL,CAAC;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC"}
|
|
@@ -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,34 +77,111 @@ 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
|
+
/**
|
|
85
|
+
* Per-server channel name uniqueness index.
|
|
86
|
+
* Outer key = serverId (or '__standalone__' for channels without a server).
|
|
87
|
+
* Inner key = normalized channel name → channelId.
|
|
88
|
+
*/
|
|
72
89
|
private readonly nameIndex;
|
|
90
|
+
/** Sentinel key for channels that don't belong to any server. */
|
|
91
|
+
private static readonly STANDALONE_KEY;
|
|
92
|
+
/** Whether init() has already been called (idempotency guard). */
|
|
93
|
+
private initialized;
|
|
73
94
|
private readonly permissionService;
|
|
74
95
|
private readonly encryptKey;
|
|
75
96
|
private readonly messageOps;
|
|
76
97
|
private readonly eventEmitter;
|
|
77
98
|
private readonly randomBytesProvider;
|
|
78
|
-
|
|
99
|
+
/** Optional persistent collection for channels (write-through). */
|
|
100
|
+
private readonly channelCollection;
|
|
101
|
+
/** Optional persistent collection for channel messages (write-through). */
|
|
102
|
+
private readonly channelMessageCollection;
|
|
103
|
+
/** Optional persistent collection for invite tokens (write-through). */
|
|
104
|
+
private readonly inviteTokenCollection;
|
|
105
|
+
/** Optional block content store for storing message content as blocks. */
|
|
106
|
+
private readonly blockContentStore;
|
|
107
|
+
constructor(permissionService: PermissionService, encryptKey?: ChannelKeyEncryptionHandler, messageOps?: MessageOperationsService, eventEmitter?: ICommunicationEventEmitter, randomBytesProvider?: (length: number) => Uint8Array, storageProvider?: IChatStorageProvider, blockContentStore?: IBlockContentStore);
|
|
108
|
+
/**
|
|
109
|
+
* Load persisted channels, channel messages, and invite tokens back into
|
|
110
|
+
* in-memory Maps, rebuilding derived indexes, key epoch states, and
|
|
111
|
+
* permission registrations.
|
|
112
|
+
*
|
|
113
|
+
* Idempotent: only the first call performs rehydration. No-op when no
|
|
114
|
+
* storage provider was supplied at construction time.
|
|
115
|
+
*
|
|
116
|
+
* 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
|
|
117
|
+
*/
|
|
118
|
+
init(): Promise<void>;
|
|
79
119
|
private assertChannelExists;
|
|
80
120
|
private assertIsMember;
|
|
81
121
|
private assertPermission;
|
|
82
122
|
private assertNotMuted;
|
|
83
123
|
private generateSymmetricKey;
|
|
124
|
+
/**
|
|
125
|
+
* Encrypt a symmetric key for multiple members, returning a Map<memberId, wrappedKey>.
|
|
126
|
+
* Wraps key wrapping failures as KeyUnwrapError with context information.
|
|
127
|
+
*
|
|
128
|
+
* Requirements: 12.3
|
|
129
|
+
*/
|
|
84
130
|
private encryptKeyForMembers;
|
|
131
|
+
/**
|
|
132
|
+
* Create initial epoch state (epoch 0) for a new channel.
|
|
133
|
+
* Uses KeyEpochManager pattern: creates epoch 0 with wrapped keys for all members.
|
|
134
|
+
*
|
|
135
|
+
* Requirements: 1.3, 2.1
|
|
136
|
+
*/
|
|
137
|
+
private createInitialEpochState;
|
|
138
|
+
/**
|
|
139
|
+
* Add a member to an existing epoch state: wrap ALL epoch keys for the new member.
|
|
140
|
+
* This gives the new member access to full message history.
|
|
141
|
+
*
|
|
142
|
+
* Requirements: 2.2, 6.1, 6.3
|
|
143
|
+
*/
|
|
144
|
+
private addMemberToEpochState;
|
|
145
|
+
/**
|
|
146
|
+
* Rotate key: increment epoch, add new key, delete removed member from ALL epochs,
|
|
147
|
+
* re-wrap ALL epoch keys for remaining members.
|
|
148
|
+
*
|
|
149
|
+
* Requirements: 3.1, 3.2, 3.3, 3.4, 3.5, 3.6
|
|
150
|
+
*/
|
|
151
|
+
private rotateEpochState;
|
|
152
|
+
/**
|
|
153
|
+
* Rotate the channel's symmetric key using epoch-aware key management.
|
|
154
|
+
* Generates a new key, increments epoch, re-wraps all epoch keys for remaining members,
|
|
155
|
+
* and removes the departed member from all epochs.
|
|
156
|
+
*
|
|
157
|
+
* Requirements: 3.1, 3.2, 3.3, 3.4, 3.5
|
|
158
|
+
*/
|
|
85
159
|
private rotateKey;
|
|
160
|
+
/**
|
|
161
|
+
* Assert that a key epoch exists in the epoch state for a given context.
|
|
162
|
+
* Throws KeyEpochNotFoundError if the epoch is not found.
|
|
163
|
+
*
|
|
164
|
+
* Requirements: 12.3
|
|
165
|
+
*/
|
|
166
|
+
private assertEpochExists;
|
|
86
167
|
private normalizeChannelName;
|
|
168
|
+
/** Get the nameIndex scope key for a channel's server (or standalone). */
|
|
169
|
+
private nameScope;
|
|
170
|
+
/** Check if a channel name is taken within a given server scope. */
|
|
171
|
+
private isNameTaken;
|
|
172
|
+
/** Register a channel name in the scoped index. */
|
|
173
|
+
private registerName;
|
|
174
|
+
/** Remove a channel name from the scoped index. */
|
|
175
|
+
private unregisterName;
|
|
87
176
|
/**
|
|
88
177
|
* Create a new channel.
|
|
89
178
|
* Generates a shared symmetric key and encrypts it for the creator.
|
|
90
179
|
* The creator is assigned the OWNER role.
|
|
180
|
+
* Uses KeyEpochManager pattern to create initial epoch 0.
|
|
91
181
|
*
|
|
92
|
-
*
|
|
182
|
+
* Requirements: 10.3, 1.3, 2.1, 9.1
|
|
93
183
|
*/
|
|
94
|
-
createChannel(name: string, creatorId: string, visibility: ChannelVisibility, topic?: string): Promise<IChannel>;
|
|
184
|
+
createChannel(name: string, creatorId: string, visibility: ChannelVisibility, topic?: string, serverId?: string): Promise<IChannel>;
|
|
95
185
|
/**
|
|
96
186
|
* List channels visible to a member.
|
|
97
187
|
* Returns public channels, plus private/secret/invisible channels
|
|
@@ -117,21 +207,51 @@ export declare class ChannelService {
|
|
|
117
207
|
deleteChannel(channelId: string, requesterId: string): Promise<void>;
|
|
118
208
|
/**
|
|
119
209
|
* Join a public channel. Rejects invite-only channels.
|
|
210
|
+
* Wraps ALL epoch keys for the new member so they can read history.
|
|
120
211
|
*
|
|
121
|
-
*
|
|
212
|
+
* Requirements: 10.3, 2.2
|
|
122
213
|
*/
|
|
123
214
|
joinChannel(channelId: string, memberId: string): Promise<void>;
|
|
215
|
+
/**
|
|
216
|
+
* Remove a member from a channel (server-level operation).
|
|
217
|
+
* Bypasses permission checks — used by ServerService when a member is removed
|
|
218
|
+
* from a server so that key rotation is performed for each affected channel.
|
|
219
|
+
* Silently skips if the member is not in the channel.
|
|
220
|
+
*
|
|
221
|
+
* Requirements: 7.1, 7.2, 7.3
|
|
222
|
+
*/
|
|
223
|
+
removeMemberFromChannel(channelId: string, memberId: string): Promise<void>;
|
|
224
|
+
/**
|
|
225
|
+
* Add a member to a channel (server-level operation).
|
|
226
|
+
* Bypasses visibility checks — used by ServerService when a member joins a server
|
|
227
|
+
* so that all epoch keys are wrapped for the new member across all server channels.
|
|
228
|
+
* Silently skips if the member is already in the channel.
|
|
229
|
+
*
|
|
230
|
+
* Requirements: 6.1, 6.2, 6.3
|
|
231
|
+
*/
|
|
232
|
+
addMemberToChannel(channelId: string, memberId: string): Promise<void>;
|
|
124
233
|
/**
|
|
125
234
|
* Leave a channel voluntarily. Rotates the shared key.
|
|
235
|
+
*
|
|
236
|
+
* Requirements: 3.5
|
|
126
237
|
*/
|
|
127
238
|
leaveChannel(channelId: string, memberId: string): Promise<void>;
|
|
128
239
|
/**
|
|
129
240
|
* Send a message to a channel.
|
|
130
|
-
*
|
|
241
|
+
* Encrypts content with the current epoch's CEK and records the keyEpoch.
|
|
242
|
+
* Optionally accepts attachments which are validated against platform limits.
|
|
243
|
+
*
|
|
244
|
+
* Requirements: 10.3, 1.1, 1.4, 9.1, 11.1, 11.2, 11.4, 11.5
|
|
131
245
|
*/
|
|
132
|
-
sendMessage(channelId: string, senderId: string, content: string): Promise<ICommunicationMessage>;
|
|
246
|
+
sendMessage(channelId: string, senderId: string, content: string, attachments?: IChatAttachmentInput[]): Promise<ICommunicationMessage>;
|
|
133
247
|
/**
|
|
134
248
|
* Get messages in a channel with cursor-based pagination.
|
|
249
|
+
* Messages are returned with their keyEpoch so clients can decrypt
|
|
250
|
+
* using the appropriate epoch's CEK.
|
|
251
|
+
* Validates that each message's keyEpoch exists in the epoch state;
|
|
252
|
+
* throws KeyEpochNotFoundError if a message references a non-existent epoch.
|
|
253
|
+
*
|
|
254
|
+
* Requirements: 1.2, 12.3
|
|
135
255
|
*/
|
|
136
256
|
getMessages(channelId: string, memberId: string, cursor?: string, limit?: number): Promise<IPaginatedResult<ICommunicationMessage>>;
|
|
137
257
|
/**
|
|
@@ -147,8 +267,9 @@ export declare class ChannelService {
|
|
|
147
267
|
createInvite(channelId: string, creatorId: string, maxUses?: number, expiresInMs?: number): Promise<IInviteToken>;
|
|
148
268
|
/**
|
|
149
269
|
* Redeem an invite token to join a channel.
|
|
270
|
+
* Wraps ALL epoch keys for the joining member.
|
|
150
271
|
*
|
|
151
|
-
*
|
|
272
|
+
* Requirements: 10.3, 2.2
|
|
152
273
|
*/
|
|
153
274
|
redeemInvite(token: string, memberId: string): Promise<void>;
|
|
154
275
|
/**
|
|
@@ -159,10 +280,10 @@ export declare class ChannelService {
|
|
|
159
280
|
*/
|
|
160
281
|
muteMember(channelId: string, requesterId: string, targetId: string, durationMs: number): Promise<void>;
|
|
161
282
|
/**
|
|
162
|
-
* Kick a member from a channel. Rotates encryption keys.
|
|
283
|
+
* Kick a member from a channel. Rotates encryption keys using epoch-aware rotation.
|
|
163
284
|
* Requires KICK_MEMBERS permission.
|
|
164
285
|
*
|
|
165
|
-
*
|
|
286
|
+
* Requirements: 10.3, 3.1, 3.2, 3.3, 3.4
|
|
166
287
|
*/
|
|
167
288
|
kickMember(channelId: string, requesterId: string, targetId: string): Promise<void>;
|
|
168
289
|
/**
|
|
@@ -196,7 +317,15 @@ export declare class ChannelService {
|
|
|
196
317
|
*/
|
|
197
318
|
removeReaction(channelId: string, messageId: string, memberId: string, reactionId: string): Promise<void>;
|
|
198
319
|
getChannelById(channelId: string): IChannel | undefined;
|
|
320
|
+
/**
|
|
321
|
+
* Get the current epoch's raw symmetric key for a channel.
|
|
322
|
+
* Returns the key for the latest epoch (backward-compatible accessor).
|
|
323
|
+
*/
|
|
199
324
|
getSymmetricKey(channelId: string): Uint8Array | undefined;
|
|
325
|
+
/**
|
|
326
|
+
* Get the full epoch state for a channel (testing / internal use).
|
|
327
|
+
*/
|
|
328
|
+
getKeyEpochState(channelId: string): IKeyEpochState<string> | undefined;
|
|
200
329
|
getAllMessages(channelId: string): ICommunicationMessage[];
|
|
201
330
|
getInviteToken(token: string): IInviteToken | undefined;
|
|
202
331
|
/**
|
|
@@ -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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"}
|