@brightchain/brightchain-api-lib 0.13.0 → 0.15.0
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 +5 -5
- package/src/index.d.ts +3 -0
- package/src/index.d.ts.map +1 -1
- package/src/index.js +5 -0
- package/src/index.js.map +1 -1
- package/src/lib/application.d.ts +1 -0
- package/src/lib/application.d.ts.map +1 -1
- package/src/lib/application.js +23 -0
- package/src/lib/application.js.map +1 -1
- package/src/lib/auth/aclEnforcedAvailability.d.ts +57 -0
- package/src/lib/auth/aclEnforcedAvailability.d.ts.map +1 -0
- package/src/lib/auth/aclEnforcedAvailability.js +87 -0
- package/src/lib/auth/aclEnforcedAvailability.js.map +1 -0
- package/src/lib/auth/aclEnforcedBlockStore.d.ts +66 -0
- package/src/lib/auth/aclEnforcedBlockStore.d.ts.map +1 -0
- package/src/lib/auth/aclEnforcedBlockStore.js +83 -0
- package/src/lib/auth/aclEnforcedBlockStore.js.map +1 -0
- package/src/lib/auth/ecdsaNodeAuthenticator.d.ts +46 -0
- package/src/lib/auth/ecdsaNodeAuthenticator.d.ts.map +1 -0
- package/src/lib/auth/ecdsaNodeAuthenticator.js +110 -0
- package/src/lib/auth/ecdsaNodeAuthenticator.js.map +1 -0
- package/src/lib/auth/index.d.ts +7 -0
- package/src/lib/auth/index.d.ts.map +1 -0
- package/src/lib/auth/index.js +13 -0
- package/src/lib/auth/index.js.map +1 -0
- package/src/lib/auth/poolAclBootstrap.d.ts +36 -0
- package/src/lib/auth/poolAclBootstrap.d.ts.map +1 -0
- package/src/lib/auth/poolAclBootstrap.js +64 -0
- package/src/lib/auth/poolAclBootstrap.js.map +1 -0
- package/src/lib/auth/poolAclStore.d.ts +77 -0
- package/src/lib/auth/poolAclStore.d.ts.map +1 -0
- package/src/lib/auth/poolAclStore.js +189 -0
- package/src/lib/auth/poolAclStore.js.map +1 -0
- package/src/lib/auth/poolAclUpdater.d.ts +79 -0
- package/src/lib/auth/poolAclUpdater.d.ts.map +1 -0
- package/src/lib/auth/poolAclUpdater.js +144 -0
- package/src/lib/auth/poolAclUpdater.js.map +1 -0
- package/src/lib/availability/availabilityService.d.ts +2 -2
- package/src/lib/availability/availabilityService.d.ts.map +1 -1
- package/src/lib/availability/availabilityService.js +12 -5
- package/src/lib/availability/availabilityService.js.map +1 -1
- package/src/lib/availability/blockRegistry.d.ts +45 -3
- package/src/lib/availability/blockRegistry.d.ts.map +1 -1
- package/src/lib/availability/blockRegistry.js +123 -5
- package/src/lib/availability/blockRegistry.js.map +1 -1
- package/src/lib/availability/configValidation.d.ts.map +1 -1
- package/src/lib/availability/configValidation.js +20 -0
- package/src/lib/availability/configValidation.js.map +1 -1
- package/src/lib/availability/discoveryProtocol.d.ts +30 -1
- package/src/lib/availability/discoveryProtocol.d.ts.map +1 -1
- package/src/lib/availability/discoveryProtocol.js +76 -0
- package/src/lib/availability/discoveryProtocol.js.map +1 -1
- package/src/lib/availability/gossipService.d.ts +193 -11
- package/src/lib/availability/gossipService.d.ts.map +1 -1
- package/src/lib/availability/gossipService.js +473 -21
- package/src/lib/availability/gossipService.js.map +1 -1
- package/src/lib/availability/reconciliationService.d.ts +88 -1
- package/src/lib/availability/reconciliationService.d.ts.map +1 -1
- package/src/lib/availability/reconciliationService.js +246 -48
- package/src/lib/availability/reconciliationService.js.map +1 -1
- package/src/lib/blockFetch/blockFetcher.d.ts +100 -0
- package/src/lib/blockFetch/blockFetcher.d.ts.map +1 -0
- package/src/lib/blockFetch/blockFetcher.js +279 -0
- package/src/lib/blockFetch/blockFetcher.js.map +1 -0
- package/src/lib/blockFetch/fetchQueue.d.ts +88 -0
- package/src/lib/blockFetch/fetchQueue.d.ts.map +1 -0
- package/src/lib/blockFetch/fetchQueue.js +204 -0
- package/src/lib/blockFetch/fetchQueue.js.map +1 -0
- package/src/lib/blockFetch/httpBlockFetchTransport.d.ts +65 -0
- package/src/lib/blockFetch/httpBlockFetchTransport.d.ts.map +1 -0
- package/src/lib/blockFetch/httpBlockFetchTransport.js +104 -0
- package/src/lib/blockFetch/httpBlockFetchTransport.js.map +1 -0
- package/src/lib/blockFetch/index.d.ts +10 -0
- package/src/lib/blockFetch/index.d.ts.map +1 -0
- package/src/lib/blockFetch/index.js +13 -0
- package/src/lib/blockFetch/index.js.map +1 -0
- package/src/lib/controllers/api/brightpass.d.ts +72 -0
- package/src/lib/controllers/api/brightpass.d.ts.map +1 -0
- package/src/lib/controllers/api/brightpass.js +577 -0
- package/src/lib/controllers/api/brightpass.js.map +1 -0
- package/src/lib/controllers/api/channels.d.ts +122 -0
- package/src/lib/controllers/api/channels.d.ts.map +1 -0
- package/src/lib/controllers/api/channels.js +701 -0
- package/src/lib/controllers/api/channels.js.map +1 -0
- package/src/lib/controllers/api/conversations.d.ts +89 -0
- package/src/lib/controllers/api/conversations.d.ts.map +1 -0
- package/src/lib/controllers/api/conversations.js +259 -0
- package/src/lib/controllers/api/conversations.js.map +1 -0
- package/src/lib/controllers/api/emails.d.ts +122 -0
- package/src/lib/controllers/api/emails.d.ts.map +1 -0
- package/src/lib/controllers/api/emails.js +494 -0
- package/src/lib/controllers/api/emails.js.map +1 -0
- package/src/lib/controllers/api/explodingMessages.d.ts +79 -0
- package/src/lib/controllers/api/explodingMessages.d.ts.map +1 -0
- package/src/lib/controllers/api/explodingMessages.js +378 -0
- package/src/lib/controllers/api/explodingMessages.js.map +1 -0
- package/src/lib/controllers/api/groups.d.ts +94 -0
- package/src/lib/controllers/api/groups.d.ts.map +1 -0
- package/src/lib/controllers/api/groups.js +484 -0
- package/src/lib/controllers/api/groups.js.map +1 -0
- package/src/lib/controllers/api/index.d.ts +6 -0
- package/src/lib/controllers/api/index.d.ts.map +1 -1
- package/src/lib/controllers/api/index.js +6 -0
- package/src/lib/controllers/api/index.js.map +1 -1
- package/src/lib/controllers/api/messages.d.ts.map +1 -1
- package/src/lib/controllers/api/messages.js +2 -1
- package/src/lib/controllers/api/messages.js.map +1 -1
- package/src/lib/controllers/api/sync.d.ts +38 -2
- package/src/lib/controllers/api/sync.d.ts.map +1 -1
- package/src/lib/controllers/api/sync.js +89 -0
- package/src/lib/controllers/api/sync.js.map +1 -1
- package/src/lib/controllers/crypto/gitController.d.ts +70 -0
- package/src/lib/controllers/crypto/gitController.d.ts.map +1 -0
- package/src/lib/controllers/crypto/gitController.js +306 -0
- package/src/lib/controllers/crypto/gitController.js.map +1 -0
- package/src/lib/controllers/crypto/index.d.ts +3 -0
- package/src/lib/controllers/crypto/index.d.ts.map +1 -0
- package/src/lib/controllers/crypto/index.js +6 -0
- package/src/lib/controllers/crypto/index.js.map +1 -0
- package/src/lib/controllers/crypto/walletController.d.ts +64 -0
- package/src/lib/controllers/crypto/walletController.d.ts.map +1 -0
- package/src/lib/controllers/crypto/walletController.js +260 -0
- package/src/lib/controllers/crypto/walletController.js.map +1 -0
- package/src/lib/controllers/identity/deviceController.d.ts +96 -0
- package/src/lib/controllers/identity/deviceController.d.ts.map +1 -0
- package/src/lib/controllers/identity/deviceController.js +355 -0
- package/src/lib/controllers/identity/deviceController.js.map +1 -0
- package/src/lib/controllers/identity/directoryController.d.ts +75 -0
- package/src/lib/controllers/identity/directoryController.d.ts.map +1 -0
- package/src/lib/controllers/identity/directoryController.js +288 -0
- package/src/lib/controllers/identity/directoryController.js.map +1 -0
- package/src/lib/controllers/identity/identityProofController.d.ts +94 -0
- package/src/lib/controllers/identity/identityProofController.d.ts.map +1 -0
- package/src/lib/controllers/identity/identityProofController.js +454 -0
- package/src/lib/controllers/identity/identityProofController.js.map +1 -0
- package/src/lib/controllers/identity/index.d.ts +4 -0
- package/src/lib/controllers/identity/index.d.ts.map +1 -0
- package/src/lib/controllers/identity/index.js +7 -0
- package/src/lib/controllers/identity/index.js.map +1 -0
- package/src/lib/controllers/index.d.ts +2 -0
- package/src/lib/controllers/index.d.ts.map +1 -1
- package/src/lib/controllers/index.js +2 -0
- package/src/lib/controllers/index.js.map +1 -1
- package/src/lib/encryption/encryptedMetadataService.d.ts +87 -0
- package/src/lib/encryption/encryptedMetadataService.d.ts.map +1 -0
- package/src/lib/encryption/encryptedMetadataService.js +224 -0
- package/src/lib/encryption/encryptedMetadataService.js.map +1 -0
- package/src/lib/encryption/encryptionAwareReplication.d.ts +76 -0
- package/src/lib/encryption/encryptionAwareReplication.d.ts.map +1 -0
- package/src/lib/encryption/encryptionAwareReplication.js +116 -0
- package/src/lib/encryption/encryptionAwareReplication.js.map +1 -0
- package/src/lib/encryption/errors.d.ts +49 -0
- package/src/lib/encryption/errors.d.ts.map +1 -0
- package/src/lib/encryption/errors.js +80 -0
- package/src/lib/encryption/errors.js.map +1 -0
- package/src/lib/encryption/index.d.ts +6 -0
- package/src/lib/encryption/index.d.ts.map +1 -0
- package/src/lib/encryption/index.js +9 -0
- package/src/lib/encryption/index.js.map +1 -0
- package/src/lib/encryption/poolEncryptionService.d.ts +94 -0
- package/src/lib/encryption/poolEncryptionService.d.ts.map +1 -0
- package/src/lib/encryption/poolEncryptionService.js +252 -0
- package/src/lib/encryption/poolEncryptionService.js.map +1 -0
- package/src/lib/encryption/poolKeyManager.d.ts +82 -0
- package/src/lib/encryption/poolKeyManager.d.ts.map +1 -0
- package/src/lib/encryption/poolKeyManager.js +156 -0
- package/src/lib/encryption/poolKeyManager.js.map +1 -0
- package/src/lib/environment.d.ts +3 -0
- package/src/lib/environment.d.ts.map +1 -1
- package/src/lib/environment.js +5 -0
- package/src/lib/environment.js.map +1 -1
- package/src/lib/interfaces/environment.d.ts +7 -1
- package/src/lib/interfaces/environment.d.ts.map +1 -1
- package/src/lib/interfaces/index.d.ts +0 -1
- package/src/lib/interfaces/index.d.ts.map +1 -1
- package/src/lib/interfaces/requests/getBlockDataRequest.d.ts +12 -0
- package/src/lib/interfaces/requests/getBlockDataRequest.d.ts.map +1 -0
- package/src/lib/interfaces/{blockStore.js → requests/getBlockDataRequest.js} +1 -1
- package/src/lib/interfaces/requests/getBlockDataRequest.js.map +1 -0
- package/src/lib/interfaces/requests/index.d.ts +1 -0
- package/src/lib/interfaces/requests/index.d.ts.map +1 -1
- package/src/lib/interfaces/websocketMessages.d.ts +30 -1
- package/src/lib/interfaces/websocketMessages.d.ts.map +1 -1
- package/src/lib/routers/api.d.ts +54 -1
- package/src/lib/routers/api.d.ts.map +1 -1
- package/src/lib/routers/api.js +77 -0
- package/src/lib/routers/api.js.map +1 -1
- package/src/lib/services/blockStore.d.ts +5 -2
- package/src/lib/services/blockStore.d.ts.map +1 -1
- package/src/lib/services/blockStore.js +4 -0
- package/src/lib/services/blockStore.js.map +1 -1
- package/src/lib/services/brightpass/auditLogger.d.ts +77 -0
- package/src/lib/services/brightpass/auditLogger.d.ts.map +1 -0
- package/src/lib/services/brightpass/auditLogger.js +184 -0
- package/src/lib/services/brightpass/auditLogger.js.map +1 -0
- package/src/lib/services/brightpass/vaultEncryption.d.ts +82 -0
- package/src/lib/services/brightpass/vaultEncryption.d.ts.map +1 -0
- package/src/lib/services/brightpass/vaultEncryption.js +144 -0
- package/src/lib/services/brightpass/vaultEncryption.js.map +1 -0
- package/src/lib/services/brightpass.d.ts +294 -0
- package/src/lib/services/brightpass.d.ts.map +1 -0
- package/src/lib/services/brightpass.js +1260 -0
- package/src/lib/services/brightpass.js.map +1 -0
- package/src/lib/services/eventNotificationSystem.d.ts +69 -3
- package/src/lib/services/eventNotificationSystem.d.ts.map +1 -1
- package/src/lib/services/eventNotificationSystem.js +200 -0
- package/src/lib/services/eventNotificationSystem.js.map +1 -1
- package/src/lib/services/expirationScheduler.d.ts +90 -0
- package/src/lib/services/expirationScheduler.d.ts.map +1 -0
- package/src/lib/services/expirationScheduler.js +131 -0
- package/src/lib/services/expirationScheduler.js.map +1 -0
- package/src/lib/services/fecUsageExample.d.ts +2 -2
- package/src/lib/services/index.d.ts +3 -0
- package/src/lib/services/index.d.ts.map +1 -1
- package/src/lib/services/index.js +3 -0
- package/src/lib/services/index.js.map +1 -1
- package/src/lib/services/messagePassingService.d.ts +95 -5
- package/src/lib/services/messagePassingService.d.ts.map +1 -1
- package/src/lib/services/messagePassingService.js +187 -28
- package/src/lib/services/messagePassingService.js.map +1 -1
- package/src/lib/services/paginationService.d.ts +18 -0
- package/src/lib/services/paginationService.d.ts.map +1 -0
- package/src/lib/services/paginationService.js +32 -0
- package/src/lib/services/paginationService.js.map +1 -0
- package/src/lib/services/presenceService.d.ts +76 -0
- package/src/lib/services/presenceService.d.ts.map +1 -0
- package/src/lib/services/presenceService.js +143 -0
- package/src/lib/services/presenceService.js.map +1 -0
- package/src/lib/services/webSocketMessageServer.d.ts +18 -23
- package/src/lib/services/webSocketMessageServer.d.ts.map +1 -1
- package/src/lib/services/webSocketMessageServer.js +30 -46
- package/src/lib/services/webSocketMessageServer.js.map +1 -1
- package/src/lib/services/webSocketPeerProvider.d.ts +49 -0
- package/src/lib/services/webSocketPeerProvider.d.ts.map +1 -0
- package/src/lib/services/webSocketPeerProvider.js +133 -0
- package/src/lib/services/webSocketPeerProvider.js.map +1 -0
- package/src/lib/services/websocketHandler.d.ts +11 -8
- package/src/lib/services/websocketHandler.d.ts.map +1 -1
- package/src/lib/services/websocketHandler.js +33 -40
- package/src/lib/services/websocketHandler.js.map +1 -1
- package/src/lib/services/wireConversationPromotion.d.ts +23 -0
- package/src/lib/services/wireConversationPromotion.d.ts.map +1 -0
- package/src/lib/services/wireConversationPromotion.js +26 -0
- package/src/lib/services/wireConversationPromotion.js.map +1 -0
- package/src/lib/stores/availabilityAwareBlockStore.d.ts +115 -10
- package/src/lib/stores/availabilityAwareBlockStore.d.ts.map +1 -1
- package/src/lib/stores/availabilityAwareBlockStore.js +267 -23
- package/src/lib/stores/availabilityAwareBlockStore.js.map +1 -1
- package/src/lib/stores/diskBlockAsyncStore.d.ts +81 -2
- package/src/lib/stores/diskBlockAsyncStore.d.ts.map +1 -1
- package/src/lib/stores/diskBlockAsyncStore.js +297 -10
- package/src/lib/stores/diskBlockAsyncStore.js.map +1 -1
- package/src/lib/stores/diskMessageMetadataStore.d.ts +2 -2
- package/src/lib/stores/diskMessageMetadataStore.d.ts.map +1 -1
- package/src/lib/stores/diskMessageMetadataStore.js +1 -1
- package/src/lib/stores/diskMessageMetadataStore.js.map +1 -1
- package/src/lib/utils/communicationValidation.d.ts +44 -0
- package/src/lib/utils/communicationValidation.d.ts.map +1 -0
- package/src/lib/utils/communicationValidation.js +291 -0
- package/src/lib/utils/communicationValidation.js.map +1 -0
- package/src/lib/utils/emailValidation.d.ts +19 -0
- package/src/lib/utils/emailValidation.d.ts.map +1 -0
- package/src/lib/utils/emailValidation.js +232 -0
- package/src/lib/utils/emailValidation.js.map +1 -0
- package/src/lib/interfaces/blockStore.d.ts +0 -7
- package/src/lib/interfaces/blockStore.d.ts.map +0 -1
- package/src/lib/interfaces/blockStore.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"configValidation.js","sourceRoot":"","sources":["../../../../../brightchain-api-lib/src/lib/availability/configValidation.ts"],"names":[],"mappings":";AAAA;;;;;;;GAOG;;;AA8BH,0DAyFC;AAUD,
|
|
1
|
+
{"version":3,"file":"configValidation.js","sourceRoot":"","sources":["../../../../../brightchain-api-lib/src/lib/availability/configValidation.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
*
|
|
7
7
|
* @see Requirements 5.1, 5.2, 5.3, 5.4, 5.5, 5.6, 5.7, 5.8
|
|
8
8
|
*/
|
|
9
|
-
import { BloomFilter, DiscoveryConfig, DiscoveryResult, IDiscoveryProtocol, ILocationRecord, PeerQueryResult } from '@brightchain/brightchain-lib';
|
|
9
|
+
import { BloomFilter, CBLMetadataSearchQuery, CBLMetadataSearchResult, DiscoveryConfig, DiscoveryResult, ICBLIndexEntry, IDiscoveryProtocol, ILocationRecord, PeerQueryResult, PoolScopedBloomFilter } from '@brightchain/brightchain-lib';
|
|
10
10
|
/**
|
|
11
11
|
* Interface for peer network operations.
|
|
12
12
|
* Abstracts network communication for discovery queries.
|
|
@@ -32,6 +32,15 @@ export interface IPeerNetworkProvider {
|
|
|
32
32
|
* @returns Promise resolving to whether the peer has the block
|
|
33
33
|
*/
|
|
34
34
|
queryPeerForBlock(peerId: string, blockId: string, timeoutMs: number): Promise<boolean>;
|
|
35
|
+
/**
|
|
36
|
+
* Query a peer for CBL index entries matching the given metadata criteria.
|
|
37
|
+
*
|
|
38
|
+
* @param peerId - The peer to query
|
|
39
|
+
* @param query - Search criteria (fileName, mimeType, tags, poolId)
|
|
40
|
+
* @param timeoutMs - Query timeout in milliseconds
|
|
41
|
+
* @returns Promise resolving to matching CBL index entries from that peer
|
|
42
|
+
*/
|
|
43
|
+
queryPeerForCBLMetadata(peerId: string, query: CBLMetadataSearchQuery, timeoutMs: number): Promise<ICBLIndexEntry[]>;
|
|
35
44
|
}
|
|
36
45
|
/**
|
|
37
46
|
* Discovery Protocol Implementation
|
|
@@ -105,6 +114,15 @@ export declare class DiscoveryProtocol implements IDiscoveryProtocol {
|
|
|
105
114
|
* @see Requirements 4.2, 5.2
|
|
106
115
|
*/
|
|
107
116
|
getPeerBloomFilter(peerId: string): Promise<BloomFilter>;
|
|
117
|
+
/**
|
|
118
|
+
* Get the pool-scoped Bloom filter from a peer.
|
|
119
|
+
* Returns per-pool Bloom filters for pool-aware discovery.
|
|
120
|
+
*
|
|
121
|
+
* @param peerId - The peer to get the pool-scoped Bloom filter from
|
|
122
|
+
* @returns Promise resolving to the peer's pool-scoped Bloom filter
|
|
123
|
+
* @see Requirements 4.2, 4.5
|
|
124
|
+
*/
|
|
125
|
+
getPeerPoolScopedBloomFilter(peerId: string): Promise<PoolScopedBloomFilter>;
|
|
108
126
|
/**
|
|
109
127
|
* Get the current configuration.
|
|
110
128
|
*
|
|
@@ -155,5 +173,16 @@ export declare class DiscoveryProtocol implements IDiscoveryProtocol {
|
|
|
155
173
|
* @param locations - Location records to cache
|
|
156
174
|
*/
|
|
157
175
|
private cacheResults;
|
|
176
|
+
/**
|
|
177
|
+
* Search for CBL index entries by metadata across pool peers.
|
|
178
|
+
*
|
|
179
|
+
* Queries all connected peers for CBL entries matching the given criteria.
|
|
180
|
+
* Results are deduplicated by magnet URL, keeping the first occurrence.
|
|
181
|
+
*
|
|
182
|
+
* @param query - Search criteria with optional fileName, mimeType, tags, poolId
|
|
183
|
+
* @returns Promise resolving to search results with matching entries and source nodes
|
|
184
|
+
* @see Requirements 8.5
|
|
185
|
+
*/
|
|
186
|
+
searchCBLMetadata(query: CBLMetadataSearchQuery): Promise<CBLMetadataSearchResult>;
|
|
158
187
|
}
|
|
159
188
|
//# sourceMappingURL=discoveryProtocol.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"discoveryProtocol.d.ts","sourceRoot":"","sources":["../../../../../brightchain-api-lib/src/lib/availability/discoveryProtocol.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EACL,WAAW,
|
|
1
|
+
{"version":3,"file":"discoveryProtocol.d.ts","sourceRoot":"","sources":["../../../../../brightchain-api-lib/src/lib/availability/discoveryProtocol.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EACL,WAAW,EAEX,sBAAsB,EACtB,uBAAuB,EACvB,eAAe,EACf,eAAe,EACf,cAAc,EACd,kBAAkB,EAClB,eAAe,EACf,eAAe,EACf,qBAAqB,EACtB,MAAM,8BAA8B,CAAC;AAuBtC;;;GAGG;AACH,MAAM,WAAW,oBAAoB;IACnC;;OAEG;IACH,mBAAmB,IAAI,MAAM,EAAE,CAAC;IAEhC;;;;;OAKG;IACH,kBAAkB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;IAEzD;;;;;;;OAOG;IACH,iBAAiB,CACf,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,OAAO,CAAC,CAAC;IAEpB;;;;;;;OAOG;IACH,uBAAuB,CACrB,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,sBAAsB,EAC7B,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,cAAc,EAAE,CAAC,CAAC;CAC9B;AAED;;;;;;;;;;GAUG;AACH,qBAAa,iBAAkB,YAAW,kBAAkB;IAkBxD,OAAO,CAAC,QAAQ,CAAC,eAAe;IAChC,OAAO,CAAC,QAAQ,CAAC,MAAM;IAlBzB;;OAEG;IACH,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAsC;IAE5D;;OAEG;IACH,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAuC;IAExE;;;;;OAKG;gBAEgB,eAAe,EAAE,oBAAoB,EACrC,MAAM,GAAE,eAAwC;IAGnE;;;;;;OAMG;IACG,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC;IA2D9D;;;;;;;OAOG;IACG,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC;IAyB1E;;;;;;OAMG;IACH,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,eAAe,EAAE,GAAG,IAAI;IAgB7D;;;;OAIG;IACH,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAIjC;;OAEG;IACH,aAAa,IAAI,IAAI;IAIrB;;;;;;OAMG;IACG,kBAAkB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IAgB9D;;;;;;;OAOG;IACG,4BAA4B,CAChC,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,qBAAqB,CAAC;IAUjC;;;;OAIG;IACH,SAAS,IAAI,eAAe;IAI5B;;;;OAIG;IACH,qBAAqB,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAI3C;;OAEG;IACH,wBAAwB,IAAI,IAAI;IAIhC;;;;;;;;OAQG;YACW,2BAA2B;IAgCzC;;;;;;;OAOG;YACW,8BAA8B;IAgC5C;;;;;;OAMG;IACH,OAAO,CAAC,oBAAoB;IAmB5B;;;;;OAKG;IACH,OAAO,CAAC,YAAY;IAOpB;;;;;;;;;OASG;IACG,iBAAiB,CACrB,KAAK,EAAE,sBAAsB,GAC5B,OAAO,CAAC,uBAAuB,CAAC;CAgEpC"}
|
|
@@ -179,6 +179,23 @@ class DiscoveryProtocol {
|
|
|
179
179
|
this.bloomFilterCache.set(peerId, filter);
|
|
180
180
|
return filter;
|
|
181
181
|
}
|
|
182
|
+
/**
|
|
183
|
+
* Get the pool-scoped Bloom filter from a peer.
|
|
184
|
+
* Returns per-pool Bloom filters for pool-aware discovery.
|
|
185
|
+
*
|
|
186
|
+
* @param peerId - The peer to get the pool-scoped Bloom filter from
|
|
187
|
+
* @returns Promise resolving to the peer's pool-scoped Bloom filter
|
|
188
|
+
* @see Requirements 4.2, 4.5
|
|
189
|
+
*/
|
|
190
|
+
async getPeerPoolScopedBloomFilter(peerId) {
|
|
191
|
+
// Delegate to the network provider if it supports pool-scoped filters,
|
|
192
|
+
// otherwise return a pool-scoped filter wrapping the global filter
|
|
193
|
+
const globalFilter = await this.getPeerBloomFilter(peerId);
|
|
194
|
+
return {
|
|
195
|
+
filters: new Map(),
|
|
196
|
+
globalFilter,
|
|
197
|
+
};
|
|
198
|
+
}
|
|
182
199
|
/**
|
|
183
200
|
* Get the current configuration.
|
|
184
201
|
*
|
|
@@ -297,6 +314,65 @@ class DiscoveryProtocol {
|
|
|
297
314
|
cachedAt: Date.now(),
|
|
298
315
|
});
|
|
299
316
|
}
|
|
317
|
+
/**
|
|
318
|
+
* Search for CBL index entries by metadata across pool peers.
|
|
319
|
+
*
|
|
320
|
+
* Queries all connected peers for CBL entries matching the given criteria.
|
|
321
|
+
* Results are deduplicated by magnet URL, keeping the first occurrence.
|
|
322
|
+
*
|
|
323
|
+
* @param query - Search criteria with optional fileName, mimeType, tags, poolId
|
|
324
|
+
* @returns Promise resolving to search results with matching entries and source nodes
|
|
325
|
+
* @see Requirements 8.5
|
|
326
|
+
*/
|
|
327
|
+
async searchCBLMetadata(query) {
|
|
328
|
+
const startTime = Date.now();
|
|
329
|
+
const connectedPeers = this.networkProvider.getConnectedPeerIds();
|
|
330
|
+
if (connectedPeers.length === 0) {
|
|
331
|
+
return {
|
|
332
|
+
query,
|
|
333
|
+
hits: [],
|
|
334
|
+
queriedPeers: 0,
|
|
335
|
+
duration: Date.now() - startTime,
|
|
336
|
+
};
|
|
337
|
+
}
|
|
338
|
+
const hits = [];
|
|
339
|
+
const seenMagnetUrls = new Set();
|
|
340
|
+
let queriedPeers = 0;
|
|
341
|
+
// Query peers with concurrency limiting
|
|
342
|
+
const pending = [];
|
|
343
|
+
let index = 0;
|
|
344
|
+
const queryNext = async () => {
|
|
345
|
+
while (index < connectedPeers.length) {
|
|
346
|
+
const currentIndex = index++;
|
|
347
|
+
const peerId = connectedPeers[currentIndex];
|
|
348
|
+
try {
|
|
349
|
+
const entries = await this.networkProvider.queryPeerForCBLMetadata(peerId, query, this.config.queryTimeoutMs);
|
|
350
|
+
queriedPeers++;
|
|
351
|
+
for (const entry of entries) {
|
|
352
|
+
if (!seenMagnetUrls.has(entry.magnetUrl)) {
|
|
353
|
+
seenMagnetUrls.add(entry.magnetUrl);
|
|
354
|
+
hits.push({ entry, sourceNodeId: peerId });
|
|
355
|
+
}
|
|
356
|
+
}
|
|
357
|
+
}
|
|
358
|
+
catch {
|
|
359
|
+
queriedPeers++;
|
|
360
|
+
// Peer query failed — skip silently, same pattern as block discovery
|
|
361
|
+
}
|
|
362
|
+
}
|
|
363
|
+
};
|
|
364
|
+
const concurrency = Math.min(this.config.maxConcurrentQueries, connectedPeers.length);
|
|
365
|
+
for (let i = 0; i < concurrency; i++) {
|
|
366
|
+
pending.push(queryNext());
|
|
367
|
+
}
|
|
368
|
+
await Promise.all(pending);
|
|
369
|
+
return {
|
|
370
|
+
query,
|
|
371
|
+
hits,
|
|
372
|
+
queriedPeers,
|
|
373
|
+
duration: Date.now() - startTime,
|
|
374
|
+
};
|
|
375
|
+
}
|
|
300
376
|
}
|
|
301
377
|
exports.DiscoveryProtocol = DiscoveryProtocol;
|
|
302
378
|
//# sourceMappingURL=discoveryProtocol.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"discoveryProtocol.js","sourceRoot":"","sources":["../../../../../brightchain-api-lib/src/lib/availability/discoveryProtocol.ts"],"names":[],"mappings":";AAAA;;;;;;;GAOG;;;
|
|
1
|
+
{"version":3,"file":"discoveryProtocol.js","sourceRoot":"","sources":["../../../../../brightchain-api-lib/src/lib/availability/discoveryProtocol.ts"],"names":[],"mappings":"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"}
|
|
@@ -7,7 +7,26 @@
|
|
|
7
7
|
*
|
|
8
8
|
* @see Requirements 6.1, 6.2, 6.3, 6.4, 6.5, 6.6
|
|
9
9
|
*/
|
|
10
|
-
import { AnnouncementHandler, BlockAnnouncement, GossipConfig, IGossipService } from '@brightchain/brightchain-lib';
|
|
10
|
+
import { AnnouncementHandler, BlockAnnouncement, DeliveryAckMetadata, GossipConfig, ICBLIndexEntry, IGossipService, MessageDeliveryMetadata, PoolId } from '@brightchain/brightchain-lib';
|
|
11
|
+
import { ECIESService } from '@digitaldefiance/node-ecies-lib';
|
|
12
|
+
/**
|
|
13
|
+
* Error thrown when gossip configuration is invalid.
|
|
14
|
+
* Non-positive fanout or TTL values will trigger this error at service initialization.
|
|
15
|
+
*
|
|
16
|
+
* @see Requirements 10.3, 10.4
|
|
17
|
+
*/
|
|
18
|
+
export declare class InvalidGossipConfigError extends Error {
|
|
19
|
+
constructor(message: string);
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Optional encrypted payload to send instead of plaintext announcements.
|
|
23
|
+
*/
|
|
24
|
+
export interface EncryptedBatchPayload {
|
|
25
|
+
/** Base64-encoded ECIES ciphertext */
|
|
26
|
+
encryptedPayload: string;
|
|
27
|
+
/** Node ID of the sender that encrypted this payload */
|
|
28
|
+
senderNodeId: string;
|
|
29
|
+
}
|
|
11
30
|
/**
|
|
12
31
|
* Interface for peer management operations.
|
|
13
32
|
* Abstracts peer selection for gossip forwarding.
|
|
@@ -26,8 +45,14 @@ export interface IPeerProvider {
|
|
|
26
45
|
*
|
|
27
46
|
* @param peerId - The peer to send to
|
|
28
47
|
* @param announcements - The announcements to send
|
|
48
|
+
* @param encrypted - Optional encrypted payload; when present, announcements should be empty
|
|
49
|
+
*/
|
|
50
|
+
sendAnnouncementBatch(peerId: string, announcements: BlockAnnouncement[], encrypted?: EncryptedBatchPayload): Promise<void>;
|
|
51
|
+
/**
|
|
52
|
+
* Get the ECIES public key for a peer node.
|
|
53
|
+
* Returns null if the peer has not registered a public key.
|
|
29
54
|
*/
|
|
30
|
-
|
|
55
|
+
getPeerPublicKey(peerId: string): Promise<Buffer | null>;
|
|
31
56
|
}
|
|
32
57
|
/**
|
|
33
58
|
* Gossip Service Implementation
|
|
@@ -40,14 +65,38 @@ export interface IPeerProvider {
|
|
|
40
65
|
export declare class GossipService implements IGossipService {
|
|
41
66
|
private readonly peerProvider;
|
|
42
67
|
private readonly config;
|
|
68
|
+
private readonly eciesService?;
|
|
69
|
+
private readonly localPrivateKey?;
|
|
43
70
|
/**
|
|
44
71
|
* Pending announcements waiting to be batched and sent.
|
|
45
72
|
*/
|
|
46
73
|
private pendingAnnouncements;
|
|
47
74
|
/**
|
|
48
|
-
* Registered announcement handlers.
|
|
75
|
+
* Registered announcement handlers (for non-message, non-ack announcements).
|
|
49
76
|
*/
|
|
50
77
|
private handlers;
|
|
78
|
+
/**
|
|
79
|
+
* Registered message delivery handlers.
|
|
80
|
+
* Called when a BlockAnnouncement with messageDelivery metadata is received
|
|
81
|
+
* and recipientIds match local users.
|
|
82
|
+
*
|
|
83
|
+
* @see Requirements 3.4, 3.5
|
|
84
|
+
*/
|
|
85
|
+
private messageDeliveryHandlers;
|
|
86
|
+
/**
|
|
87
|
+
* Registered delivery ack handlers.
|
|
88
|
+
* Called when a BlockAnnouncement of type 'ack' is received.
|
|
89
|
+
*
|
|
90
|
+
* @see Requirements 4.4
|
|
91
|
+
*/
|
|
92
|
+
private deliveryAckHandlers;
|
|
93
|
+
/**
|
|
94
|
+
* Set of local user IDs on this node.
|
|
95
|
+
* Used to determine if a message delivery announcement targets local users.
|
|
96
|
+
*
|
|
97
|
+
* @see Requirements 3.4, 3.6
|
|
98
|
+
*/
|
|
99
|
+
private readonly localUserIds;
|
|
51
100
|
/**
|
|
52
101
|
* Batch timer handle.
|
|
53
102
|
*/
|
|
@@ -61,28 +110,78 @@ export declare class GossipService implements IGossipService {
|
|
|
61
110
|
*
|
|
62
111
|
* @param peerProvider - Provider for peer management operations
|
|
63
112
|
* @param config - Gossip configuration (uses defaults if not provided)
|
|
113
|
+
* @param localUserIds - Set of local user IDs on this node (defaults to empty set)
|
|
114
|
+
* @param eciesService - Optional ECIES service for encrypting sensitive batches
|
|
115
|
+
* @param localPrivateKey - Optional local node private key (Buffer) for identifying the sender
|
|
116
|
+
* @throws {InvalidGossipConfigError} If configuration contains non-positive fanout or TTL values
|
|
117
|
+
* @see Requirements 10.3, 10.4
|
|
64
118
|
*/
|
|
65
|
-
constructor(peerProvider: IPeerProvider, config?: GossipConfig);
|
|
119
|
+
constructor(peerProvider: IPeerProvider, config?: GossipConfig, localUserIds?: Set<string>, eciesService?: ECIESService | undefined, localPrivateKey?: Buffer | undefined);
|
|
66
120
|
/**
|
|
67
121
|
* Announce a new block to the network.
|
|
68
122
|
*
|
|
69
123
|
* @param blockId - The block ID to announce
|
|
70
|
-
* @
|
|
124
|
+
* @param poolId - Optional pool the block belongs to
|
|
125
|
+
* @see Requirements 6.1, 1.1, 6.3
|
|
71
126
|
*/
|
|
72
|
-
announceBlock(blockId: string): Promise<void>;
|
|
127
|
+
announceBlock(blockId: string, poolId?: PoolId): Promise<void>;
|
|
73
128
|
/**
|
|
74
129
|
* Announce block removal to the network.
|
|
75
130
|
*
|
|
76
131
|
* @param blockId - The block ID being removed
|
|
77
|
-
* @
|
|
132
|
+
* @param poolId - Optional pool the block belonged to
|
|
133
|
+
* @see Requirements 6.5, 1.1
|
|
134
|
+
*/
|
|
135
|
+
announceRemoval(blockId: string, poolId?: PoolId): Promise<void>;
|
|
136
|
+
/**
|
|
137
|
+
* Announce that a pool has been deleted.
|
|
138
|
+
* Creates a pool_deleted announcement propagated as a tombstone.
|
|
139
|
+
*
|
|
140
|
+
* @param poolId - The pool that was deleted
|
|
141
|
+
* @see Requirements 2.2, 2.7
|
|
142
|
+
*/
|
|
143
|
+
announcePoolDeletion(poolId: PoolId): Promise<void>;
|
|
144
|
+
/**
|
|
145
|
+
* Announce a new or updated CBL index entry to peers in the same pool.
|
|
146
|
+
* Creates a cbl_index_update announcement scoped to the entry's pool.
|
|
147
|
+
*
|
|
148
|
+
* @param entry - The CBL index entry being announced
|
|
149
|
+
* @see Requirements 8.1
|
|
78
150
|
*/
|
|
79
|
-
|
|
151
|
+
announceCBLIndexUpdate(entry: ICBLIndexEntry): Promise<void>;
|
|
152
|
+
/**
|
|
153
|
+
* Announce a soft-deleted CBL index entry to peers in the same pool.
|
|
154
|
+
* Creates a cbl_index_delete announcement so peers also mark the entry as deleted.
|
|
155
|
+
*
|
|
156
|
+
* @param entry - The CBL index entry that was soft-deleted (with deletedAt set)
|
|
157
|
+
* @see Requirements 8.6
|
|
158
|
+
*/
|
|
159
|
+
announceCBLIndexDelete(entry: ICBLIndexEntry): Promise<void>;
|
|
160
|
+
/**
|
|
161
|
+
* Announce a HeadRegistry head pointer update to peer nodes.
|
|
162
|
+
* Creates a head_update announcement with the database name, collection name,
|
|
163
|
+
* and new head block ID.
|
|
164
|
+
*
|
|
165
|
+
* @param dbName - The database name containing the collection
|
|
166
|
+
* @param collectionName - The collection whose head pointer was updated
|
|
167
|
+
* @param blockId - The new head block ID
|
|
168
|
+
* @see Requirements 2.1
|
|
169
|
+
*/
|
|
170
|
+
announceHeadUpdate(dbName: string, collectionName: string, blockId: string): Promise<void>;
|
|
171
|
+
announceACLUpdate(poolId: string, aclBlockId: string): Promise<void>;
|
|
80
172
|
/**
|
|
81
173
|
* Handle an incoming block announcement from a peer.
|
|
82
|
-
*
|
|
174
|
+
*
|
|
175
|
+
* Dispatches announcements based on their type and metadata:
|
|
176
|
+
* - 'pool_deleted' type: dispatches to general handlers and forwards with decremented TTL (Req 2.7)
|
|
177
|
+
* - 'ack' type: dispatches to delivery ack handlers only (Req 4.4)
|
|
178
|
+
* - 'add' with messageDelivery and matching local recipients: triggers message delivery
|
|
179
|
+
* handlers and auto-sends ack if ackRequired (Req 3.4, 3.5)
|
|
180
|
+
* - 'add' with messageDelivery but no matching local recipients: forwards normally (Req 3.6)
|
|
181
|
+
* - Plain 'add'/'remove' without messageDelivery: notifies general handlers and forwards (backward compat)
|
|
83
182
|
*
|
|
84
183
|
* @param announcement - The received announcement
|
|
85
|
-
* @see Requirements
|
|
184
|
+
* @see Requirements 2.7, 3.4, 3.5, 3.6, 4.4
|
|
86
185
|
*/
|
|
87
186
|
handleAnnouncement(announcement: BlockAnnouncement): Promise<void>;
|
|
88
187
|
/**
|
|
@@ -107,8 +206,13 @@ export declare class GossipService implements IGossipService {
|
|
|
107
206
|
getPendingAnnouncements(): BlockAnnouncement[];
|
|
108
207
|
/**
|
|
109
208
|
* Immediately flush all pending announcements.
|
|
209
|
+
* Groups announcements by their required fanout (based on message priority)
|
|
210
|
+
* and sends each group to the appropriate number of peers.
|
|
110
211
|
*
|
|
111
|
-
*
|
|
212
|
+
* - Announcements with messageDelivery use priority-based fanout (Req 3.1, 3.2)
|
|
213
|
+
* - Announcements without messageDelivery use default fanout (Req 3.3)
|
|
214
|
+
*
|
|
215
|
+
* @see Requirements 3.1, 3.2, 3.3, 6.6
|
|
112
216
|
*/
|
|
113
217
|
flushAnnouncements(): Promise<void>;
|
|
114
218
|
/**
|
|
@@ -149,9 +253,87 @@ export declare class GossipService implements IGossipService {
|
|
|
149
253
|
* @see Requirements 6.6
|
|
150
254
|
*/
|
|
151
255
|
private splitIntoBatches;
|
|
256
|
+
/**
|
|
257
|
+
* Check if a batch contains sensitive metadata (messageDelivery or deliveryAck).
|
|
258
|
+
*
|
|
259
|
+
* @param announcements - The announcements to check
|
|
260
|
+
* @returns true if any announcement has messageDelivery or deliveryAck
|
|
261
|
+
* @see Requirements 4.1, 4.2
|
|
262
|
+
*/
|
|
263
|
+
private batchContainsSensitiveMetadata;
|
|
264
|
+
/**
|
|
265
|
+
* Encrypt a batch of announcements for a specific peer using ECIES.
|
|
266
|
+
* Serializes announcements to JSON, encrypts with the peer's public key,
|
|
267
|
+
* and returns a base64-encoded ciphertext string.
|
|
268
|
+
*
|
|
269
|
+
* @param announcements - The announcements to encrypt
|
|
270
|
+
* @param peerPublicKey - The peer's ECIES public key
|
|
271
|
+
* @returns Base64-encoded ECIES ciphertext
|
|
272
|
+
* @see Requirements 4.1, 4.3
|
|
273
|
+
*/
|
|
274
|
+
private encryptBatchForPeer;
|
|
275
|
+
/**
|
|
276
|
+
* Send a batch to a peer, encrypting if the batch is sensitive and the peer has a public key.
|
|
277
|
+
*
|
|
278
|
+
* - Sensitive batch + peer key available → encrypt and send with encryptedPayload
|
|
279
|
+
* - Sensitive batch + no peer key → send plaintext, log warning (Req 6.1, 6.2)
|
|
280
|
+
* - Non-sensitive batch → send plaintext
|
|
281
|
+
*
|
|
282
|
+
* @param peerId - The peer to send to
|
|
283
|
+
* @param batch - The announcements to send
|
|
284
|
+
* @see Requirements 4.1, 4.2, 6.1, 6.2
|
|
285
|
+
*/
|
|
286
|
+
private sendBatchToPeer;
|
|
152
287
|
/**
|
|
153
288
|
* Clear all pending announcements (for testing).
|
|
154
289
|
*/
|
|
155
290
|
clearPending(): void;
|
|
291
|
+
/**
|
|
292
|
+
* Announce message blocks to the network with message delivery metadata.
|
|
293
|
+
* Creates a BlockAnnouncement for each blockId with priority-based TTL
|
|
294
|
+
* from config and queues them for batch sending.
|
|
295
|
+
*
|
|
296
|
+
* @param blockIds - The block IDs containing the message content
|
|
297
|
+
* @param metadata - Message delivery metadata including recipients, priority, and CBL block ID
|
|
298
|
+
* @see Requirements 3.1, 3.2, 3.3
|
|
299
|
+
*/
|
|
300
|
+
announceMessage(blockIds: string[], metadata: MessageDeliveryMetadata): Promise<void>;
|
|
301
|
+
/**
|
|
302
|
+
* Send a delivery acknowledgment back through the gossip network.
|
|
303
|
+
* Stub implementation — will be fully implemented in task 4.3.
|
|
304
|
+
*
|
|
305
|
+
* @param _ack - Delivery acknowledgment metadata
|
|
306
|
+
* @see Requirements 4.1
|
|
307
|
+
*/
|
|
308
|
+
sendDeliveryAck(ack: DeliveryAckMetadata): Promise<void>;
|
|
309
|
+
/**
|
|
310
|
+
* Register a handler for message delivery events.
|
|
311
|
+
* The handler is called when a BlockAnnouncement with messageDelivery
|
|
312
|
+
* metadata is received and recipientIds match local users.
|
|
313
|
+
*
|
|
314
|
+
* @param handler - Function to call when a message delivery announcement is received
|
|
315
|
+
* @see Requirements 3.4, 3.5
|
|
316
|
+
*/
|
|
317
|
+
onMessageDelivery(handler: (announcement: BlockAnnouncement) => void): void;
|
|
318
|
+
/**
|
|
319
|
+
* Remove a message delivery event handler.
|
|
320
|
+
*
|
|
321
|
+
* @param handler - The handler to remove
|
|
322
|
+
*/
|
|
323
|
+
offMessageDelivery(handler: (announcement: BlockAnnouncement) => void): void;
|
|
324
|
+
/**
|
|
325
|
+
* Register a handler for delivery acknowledgment events.
|
|
326
|
+
* The handler is called when a BlockAnnouncement of type 'ack' is received.
|
|
327
|
+
*
|
|
328
|
+
* @param handler - Function to call when a delivery ack announcement is received
|
|
329
|
+
* @see Requirements 4.4
|
|
330
|
+
*/
|
|
331
|
+
onDeliveryAck(handler: (announcement: BlockAnnouncement) => void): void;
|
|
332
|
+
/**
|
|
333
|
+
* Remove a delivery acknowledgment event handler.
|
|
334
|
+
*
|
|
335
|
+
* @param handler - The handler to remove
|
|
336
|
+
*/
|
|
337
|
+
offDeliveryAck(handler: (announcement: BlockAnnouncement) => void): void;
|
|
156
338
|
}
|
|
157
339
|
//# sourceMappingURL=gossipService.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gossipService.d.ts","sourceRoot":"","sources":["../../../../../brightchain-api-lib/src/lib/availability/gossipService.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EACL,mBAAmB,EACnB,iBAAiB,EACjB,YAAY,EACZ,cAAc,
|
|
1
|
+
{"version":3,"file":"gossipService.d.ts","sourceRoot":"","sources":["../../../../../brightchain-api-lib/src/lib/availability/gossipService.ts"],"names":[],"mappings":"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"}
|