@brightchain/brightchain-api-lib 0.13.0 → 0.14.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 +2 -2
- 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/gossipService.d.ts +150 -7
- package/src/lib/availability/gossipService.d.ts.map +1 -1
- package/src/lib/availability/gossipService.js +297 -17
- package/src/lib/availability/gossipService.js.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/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/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/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/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
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* WebSocket-based IPeerProvider implementation.
|
|
4
|
+
*
|
|
5
|
+
* Bridges the GossipService's IPeerProvider interface to real WebSocket
|
|
6
|
+
* connections between BrightChain nodes. Each peer is represented by an
|
|
7
|
+
* outbound WebSocket client connection to that peer's WebSocketMessageServer.
|
|
8
|
+
*
|
|
9
|
+
* Used for real cross-node gossip transport in both production and
|
|
10
|
+
* integration testing (multiple servers on different ports).
|
|
11
|
+
*/
|
|
12
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
13
|
+
exports.WebSocketPeerProvider = void 0;
|
|
14
|
+
const ws_1 = require("ws");
|
|
15
|
+
/**
|
|
16
|
+
* IPeerProvider implementation that sends gossip batches over WebSocket.
|
|
17
|
+
*
|
|
18
|
+
* For each peer, maintains an outbound WebSocket connection to that peer's
|
|
19
|
+
* WebSocketMessageServer. Announcement batches are serialized to JSON and
|
|
20
|
+
* sent as 'gossip_batch' messages.
|
|
21
|
+
*/
|
|
22
|
+
class WebSocketPeerProvider {
|
|
23
|
+
constructor(localNodeId) {
|
|
24
|
+
this.localNodeId = localNodeId;
|
|
25
|
+
this.peers = new Map();
|
|
26
|
+
}
|
|
27
|
+
getLocalNodeId() {
|
|
28
|
+
return this.localNodeId;
|
|
29
|
+
}
|
|
30
|
+
getConnectedPeerIds() {
|
|
31
|
+
const connected = [];
|
|
32
|
+
for (const [peerId, peer] of this.peers) {
|
|
33
|
+
if (peer.ready && peer.ws.readyState === ws_1.WebSocket.OPEN) {
|
|
34
|
+
connected.push(peerId);
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
return connected;
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Connect to a peer's WebSocketMessageServer.
|
|
41
|
+
*
|
|
42
|
+
* @param peerId - The peer's node ID
|
|
43
|
+
* @param url - WebSocket URL, e.g. ws://localhost:3001/{localNodeId}
|
|
44
|
+
* @returns Promise that resolves when the connection is open
|
|
45
|
+
*/
|
|
46
|
+
async connectToPeer(peerId, url) {
|
|
47
|
+
return new Promise((resolve, reject) => {
|
|
48
|
+
const ws = new ws_1.WebSocket(url);
|
|
49
|
+
const peer = { ws, ready: false, publicKey: null };
|
|
50
|
+
this.peers.set(peerId, peer);
|
|
51
|
+
ws.on('open', () => {
|
|
52
|
+
peer.ready = true;
|
|
53
|
+
resolve();
|
|
54
|
+
});
|
|
55
|
+
ws.on('error', (err) => {
|
|
56
|
+
peer.ready = false;
|
|
57
|
+
if (!peer.ready) {
|
|
58
|
+
reject(err);
|
|
59
|
+
}
|
|
60
|
+
});
|
|
61
|
+
ws.on('close', () => {
|
|
62
|
+
peer.ready = false;
|
|
63
|
+
});
|
|
64
|
+
});
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Register a peer's ECIES public key for encrypted gossip.
|
|
68
|
+
*/
|
|
69
|
+
registerPeerPublicKey(peerId, publicKey) {
|
|
70
|
+
const peer = this.peers.get(peerId);
|
|
71
|
+
if (peer) {
|
|
72
|
+
peer.publicKey = publicKey;
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
async sendAnnouncementBatch(peerId, announcements, encrypted) {
|
|
76
|
+
const peer = this.peers.get(peerId);
|
|
77
|
+
if (!peer || !peer.ready || peer.ws.readyState !== ws_1.WebSocket.OPEN) {
|
|
78
|
+
throw new Error(`Peer ${peerId} not connected`);
|
|
79
|
+
}
|
|
80
|
+
const message = JSON.stringify({
|
|
81
|
+
type: 'gossip_batch',
|
|
82
|
+
announcements: announcements.map((a) => ({
|
|
83
|
+
type: a.type,
|
|
84
|
+
blockId: a.blockId,
|
|
85
|
+
nodeId: a.nodeId,
|
|
86
|
+
timestamp: a.timestamp,
|
|
87
|
+
ttl: a.ttl,
|
|
88
|
+
...(a.messageDelivery ? { messageDelivery: a.messageDelivery } : {}),
|
|
89
|
+
...(a.deliveryAck ? { deliveryAck: a.deliveryAck } : {}),
|
|
90
|
+
})),
|
|
91
|
+
...(encrypted ? { encrypted } : {}),
|
|
92
|
+
});
|
|
93
|
+
return new Promise((resolve, reject) => {
|
|
94
|
+
peer.ws.send(message, (err) => {
|
|
95
|
+
if (err)
|
|
96
|
+
reject(err);
|
|
97
|
+
else
|
|
98
|
+
resolve();
|
|
99
|
+
});
|
|
100
|
+
});
|
|
101
|
+
}
|
|
102
|
+
async getPeerPublicKey(peerId) {
|
|
103
|
+
const peer = this.peers.get(peerId);
|
|
104
|
+
return peer?.publicKey ?? null;
|
|
105
|
+
}
|
|
106
|
+
/**
|
|
107
|
+
* Disconnect from all peers and close all WebSocket connections.
|
|
108
|
+
*/
|
|
109
|
+
async disconnectAll() {
|
|
110
|
+
for (const [, peer] of this.peers) {
|
|
111
|
+
peer.ready = false;
|
|
112
|
+
if (peer.ws.readyState === ws_1.WebSocket.OPEN) {
|
|
113
|
+
peer.ws.close();
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
this.peers.clear();
|
|
117
|
+
}
|
|
118
|
+
/**
|
|
119
|
+
* Disconnect from a specific peer.
|
|
120
|
+
*/
|
|
121
|
+
disconnectPeer(peerId) {
|
|
122
|
+
const peer = this.peers.get(peerId);
|
|
123
|
+
if (peer) {
|
|
124
|
+
peer.ready = false;
|
|
125
|
+
if (peer.ws.readyState === ws_1.WebSocket.OPEN) {
|
|
126
|
+
peer.ws.close();
|
|
127
|
+
}
|
|
128
|
+
this.peers.delete(peerId);
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
exports.WebSocketPeerProvider = WebSocketPeerProvider;
|
|
133
|
+
//# sourceMappingURL=webSocketPeerProvider.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"webSocketPeerProvider.js","sourceRoot":"","sources":["../../../../../brightchain-api-lib/src/lib/services/webSocketPeerProvider.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* WebSocket message handler for Block Availability and Discovery Protocol
|
|
3
3
|
*/
|
|
4
|
-
import { IAvailabilityService, IBlockRegistry, IDiscoveryProtocol, IGossipService, IHeartbeatMonitor
|
|
4
|
+
import { IAvailabilityService, IBlockRegistry, IDiscoveryProtocol, IGossipService, IHeartbeatMonitor } from '@brightchain/brightchain-lib';
|
|
5
|
+
import { ECIESService } from '@digitaldefiance/node-ecies-lib';
|
|
5
6
|
import { WebSocketMessage } from '../interfaces/websocketMessages';
|
|
6
7
|
/**
|
|
7
8
|
* WebSocket connection interface
|
|
@@ -23,7 +24,10 @@ export interface IWebSocketHandlerConfig {
|
|
|
23
24
|
gossipService: IGossipService;
|
|
24
25
|
heartbeatMonitor: IHeartbeatMonitor;
|
|
25
26
|
availabilityService: IAvailabilityService;
|
|
26
|
-
|
|
27
|
+
/** Optional ECIES service for decrypting encrypted gossip payloads */
|
|
28
|
+
eciesService?: ECIESService;
|
|
29
|
+
/** Optional local node private key for ECIES decryption */
|
|
30
|
+
localPrivateKey?: Buffer;
|
|
27
31
|
}
|
|
28
32
|
/**
|
|
29
33
|
* WebSocket message handler service
|
|
@@ -35,7 +39,8 @@ export declare class WebSocketHandler {
|
|
|
35
39
|
private readonly gossipService;
|
|
36
40
|
private readonly heartbeatMonitor;
|
|
37
41
|
private readonly availabilityService;
|
|
38
|
-
private readonly
|
|
42
|
+
private readonly eciesService?;
|
|
43
|
+
private readonly localPrivateKey?;
|
|
39
44
|
private readonly connections;
|
|
40
45
|
constructor(config: IWebSocketHandlerConfig);
|
|
41
46
|
/**
|
|
@@ -78,6 +83,9 @@ export declare class WebSocketHandler {
|
|
|
78
83
|
* Handle block removal
|
|
79
84
|
*/
|
|
80
85
|
private handleBlockRemoval;
|
|
86
|
+
/**
|
|
87
|
+
* Handle announcement batch
|
|
88
|
+
*/
|
|
81
89
|
/**
|
|
82
90
|
* Handle announcement batch
|
|
83
91
|
*/
|
|
@@ -86,10 +94,5 @@ export declare class WebSocketHandler {
|
|
|
86
94
|
* Handle ping message
|
|
87
95
|
*/
|
|
88
96
|
private handlePing;
|
|
89
|
-
private handleMessageSend;
|
|
90
|
-
private handleMessageReceived;
|
|
91
|
-
private handleMessageAck;
|
|
92
|
-
private handleMessageQuery;
|
|
93
|
-
private handleEventSubscribe;
|
|
94
97
|
}
|
|
95
98
|
//# sourceMappingURL=websocketHandler.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"websocketHandler.d.ts","sourceRoot":"","sources":["../../../../../brightchain-api-lib/src/lib/services/websocketHandler.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EACL,oBAAoB,EACpB,cAAc,EACd,kBAAkB,EAClB,cAAc,EACd,iBAAiB,
|
|
1
|
+
{"version":3,"file":"websocketHandler.d.ts","sourceRoot":"","sources":["../../../../../brightchain-api-lib/src/lib/services/websocketHandler.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EACL,oBAAoB,EACpB,cAAc,EACd,kBAAkB,EAClB,cAAc,EACd,iBAAiB,EAClB,MAAM,8BAA8B,CAAC;AACtC,OAAO,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AAM/D,OAAO,EAYL,gBAAgB,EACjB,MAAM,iCAAiC,CAAC;AAEzC;;;GAGG;AACH,MAAM,WAAW,oBAAoB;IACnC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,CAAC,OAAO,EAAE,gBAAgB,GAAG,IAAI,CAAC;IACtC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,GAAG,IAAI,CAAC;IAC1D,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,GAAG,IAAI,CAAC;CAC5D;AAED;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACtC,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,cAAc,CAAC;IAC9B,iBAAiB,EAAE,kBAAkB,CAAC;IACtC,aAAa,EAAE,cAAc,CAAC;IAC9B,gBAAgB,EAAE,iBAAiB,CAAC;IACpC,mBAAmB,EAAE,oBAAoB,CAAC;IAC1C,sEAAsE;IACtE,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B,2DAA2D;IAC3D,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED;;GAEG;AACH,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAS;IACrC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAiB;IAC/C,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAqB;IACvD,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAiB;IAC/C,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAoB;IACrD,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAuB;IAC3D,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAe;IAC7C,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAS;IAC1C,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAgD;gBAEhE,MAAM,EAAE,uBAAuB;IAW3C;;OAEG;IACI,kBAAkB,CAAC,UAAU,EAAE,oBAAoB,GAAG,IAAI;IAcjE;;OAEG;IACI,oBAAoB,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI;IAIvD;;OAEG;IACI,SAAS,CAAC,OAAO,EAAE,gBAAgB,GAAG,IAAI;IAMjD;;OAEG;IACI,gBAAgB,CACrB,YAAY,EAAE,MAAM,EACpB,OAAO,EAAE,gBAAgB,GACxB,IAAI;IAOP;;OAEG;YACW,aAAa;IAwD3B;;OAEG;YACW,wBAAwB;IAwBtC;;OAEG;YACW,gBAAgB;IAoB9B;;OAEG;YACW,qBAAqB;IAuBnC;;OAEG;YACW,uBAAuB;IAsBrC;;OAEG;YACW,kBAAkB;IAkBhC;;OAEG;IACH;;OAEG;YACW,uBAAuB;IAoErC;;OAEG;YACW,UAAU;CAezB"}
|
|
@@ -17,7 +17,8 @@ class WebSocketHandler {
|
|
|
17
17
|
this.gossipService = config.gossipService;
|
|
18
18
|
this.heartbeatMonitor = config.heartbeatMonitor;
|
|
19
19
|
this.availabilityService = config.availabilityService;
|
|
20
|
-
this.
|
|
20
|
+
this.eciesService = config.eciesService;
|
|
21
|
+
this.localPrivateKey = config.localPrivateKey;
|
|
21
22
|
}
|
|
22
23
|
/**
|
|
23
24
|
* Register a new WebSocket connection
|
|
@@ -86,22 +87,6 @@ class WebSocketHandler {
|
|
|
86
87
|
case websocketMessageType_1.HeartbeatMessageType.PING:
|
|
87
88
|
await this.handlePing(connection, message);
|
|
88
89
|
break;
|
|
89
|
-
// Message passing messages
|
|
90
|
-
case websocketMessageType_1.MessagePassingType.MESSAGE_SEND:
|
|
91
|
-
await this.handleMessageSend(connection, message);
|
|
92
|
-
break;
|
|
93
|
-
case websocketMessageType_1.MessagePassingType.MESSAGE_RECEIVED:
|
|
94
|
-
await this.handleMessageReceived(message);
|
|
95
|
-
break;
|
|
96
|
-
case websocketMessageType_1.MessagePassingType.MESSAGE_ACK:
|
|
97
|
-
await this.handleMessageAck(message);
|
|
98
|
-
break;
|
|
99
|
-
case websocketMessageType_1.MessagePassingType.MESSAGE_QUERY:
|
|
100
|
-
await this.handleMessageQuery(connection, message);
|
|
101
|
-
break;
|
|
102
|
-
case websocketMessageType_1.MessagePassingType.EVENT_SUBSCRIBE:
|
|
103
|
-
await this.handleEventSubscribe(connection, message);
|
|
104
|
-
break;
|
|
105
90
|
default:
|
|
106
91
|
console.warn(`Unknown message type: ${message.type}`);
|
|
107
92
|
}
|
|
@@ -204,11 +189,31 @@ class WebSocketHandler {
|
|
|
204
189
|
ttl: message.payload.ttl,
|
|
205
190
|
});
|
|
206
191
|
}
|
|
192
|
+
/**
|
|
193
|
+
* Handle announcement batch
|
|
194
|
+
*/
|
|
207
195
|
/**
|
|
208
196
|
* Handle announcement batch
|
|
209
197
|
*/
|
|
210
198
|
async handleAnnouncementBatch(message) {
|
|
211
|
-
|
|
199
|
+
let announcements = message.payload.announcements;
|
|
200
|
+
// Detect encrypted payload and attempt decryption
|
|
201
|
+
if (message.payload.encryptedPayload) {
|
|
202
|
+
if (!this.eciesService || !this.localPrivateKey) {
|
|
203
|
+
console.error(`Received encrypted gossip batch from ${message.payload.senderNodeId ?? 'unknown'} but no ECIES service or private key configured — discarding batch`);
|
|
204
|
+
return;
|
|
205
|
+
}
|
|
206
|
+
try {
|
|
207
|
+
const ciphertext = Buffer.from(message.payload.encryptedPayload, 'base64');
|
|
208
|
+
const decrypted = await this.eciesService.decryptWithLengthAndHeader(this.localPrivateKey, ciphertext);
|
|
209
|
+
announcements = JSON.parse(Buffer.from(decrypted).toString('utf-8'));
|
|
210
|
+
}
|
|
211
|
+
catch (error) {
|
|
212
|
+
console.error(`Failed to decrypt gossip batch from sender ${message.payload.senderNodeId ?? 'unknown'}:`, error);
|
|
213
|
+
return;
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
for (const announcement of announcements) {
|
|
212
217
|
if (announcement.type === 'add') {
|
|
213
218
|
await this.availabilityService.updateLocation(announcement.blockId, {
|
|
214
219
|
nodeId: announcement.nodeId,
|
|
@@ -216,16 +221,24 @@ class WebSocketHandler {
|
|
|
216
221
|
isAuthoritative: true,
|
|
217
222
|
});
|
|
218
223
|
}
|
|
219
|
-
else {
|
|
224
|
+
else if (announcement.type === 'remove') {
|
|
220
225
|
await this.availabilityService.removeLocation(announcement.blockId, announcement.nodeId);
|
|
221
226
|
}
|
|
222
|
-
//
|
|
227
|
+
// 'ack' type announcements are forwarded directly to gossip service
|
|
228
|
+
// without updating availability metadata
|
|
229
|
+
// Forward to gossip service for propagation
|
|
223
230
|
await this.gossipService.handleAnnouncement({
|
|
224
231
|
type: announcement.type,
|
|
225
232
|
blockId: announcement.blockId,
|
|
226
233
|
nodeId: announcement.nodeId,
|
|
227
234
|
timestamp: new Date(message.timestamp),
|
|
228
235
|
ttl: announcement.ttl,
|
|
236
|
+
...(announcement.type === 'add' && announcement.messageDelivery
|
|
237
|
+
? { messageDelivery: announcement.messageDelivery }
|
|
238
|
+
: {}),
|
|
239
|
+
...(announcement.type === 'ack' && announcement.deliveryAck
|
|
240
|
+
? { deliveryAck: announcement.deliveryAck }
|
|
241
|
+
: {}),
|
|
229
242
|
});
|
|
230
243
|
}
|
|
231
244
|
}
|
|
@@ -244,26 +257,6 @@ class WebSocketHandler {
|
|
|
244
257
|
};
|
|
245
258
|
connection.send(response);
|
|
246
259
|
}
|
|
247
|
-
// ===== Message Passing Handlers =====
|
|
248
|
-
async handleMessageSend(_connection, message) {
|
|
249
|
-
if (!this.messageRouter)
|
|
250
|
-
return;
|
|
251
|
-
await this.messageRouter.routeMessage(message.payload.messageId, message.payload.recipients);
|
|
252
|
-
}
|
|
253
|
-
async handleMessageReceived(message) {
|
|
254
|
-
if (!this.messageRouter)
|
|
255
|
-
return;
|
|
256
|
-
await this.messageRouter.handleIncomingMessage(message.payload.messageId, message.payload.recipientId);
|
|
257
|
-
}
|
|
258
|
-
async handleMessageAck(_message) {
|
|
259
|
-
// ACK handled by MessagePassingService
|
|
260
|
-
}
|
|
261
|
-
async handleMessageQuery(_connection, _message) {
|
|
262
|
-
// Query handled by MessagePassingService
|
|
263
|
-
}
|
|
264
|
-
async handleEventSubscribe(_connection, _message) {
|
|
265
|
-
// Subscription handled by MessageEventsWebSocketHandler
|
|
266
|
-
}
|
|
267
260
|
}
|
|
268
261
|
exports.WebSocketHandler = WebSocketHandler;
|
|
269
262
|
//# sourceMappingURL=websocketHandler.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"websocketHandler.js","sourceRoot":"","sources":["../../../../../brightchain-api-lib/src/lib/services/websocketHandler.ts"],"names":[],"mappings":";AAAA;;GAEG;;;AAUH,+
|
|
1
|
+
{"version":3,"file":"websocketHandler.js","sourceRoot":"","sources":["../../../../../brightchain-api-lib/src/lib/services/websocketHandler.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { BlockSize, IMessageMetadata, IMessageMetadataStore,
|
|
1
|
+
import { BlockSize, DeliveryStatus, IMessageMetadata, IMessageMetadataStore, MessageQuery, MessageQueryOptions } from '@brightchain/brightchain-lib';
|
|
2
2
|
import { DiskBlockMetadataStore } from './diskBlockMetadataStore';
|
|
3
3
|
export declare class DiskMessageMetadataStore extends DiskBlockMetadataStore implements IMessageMetadataStore {
|
|
4
4
|
constructor(storePath: string, blockSize: BlockSize);
|
|
@@ -7,7 +7,7 @@ export declare class DiskMessageMetadataStore extends DiskBlockMetadataStore imp
|
|
|
7
7
|
private deserializeMessageMetadata;
|
|
8
8
|
storeMessageMetadata(metadata: IMessageMetadata): Promise<void>;
|
|
9
9
|
queryMessages(query: MessageQuery): Promise<IMessageMetadata[]>;
|
|
10
|
-
updateDeliveryStatus(messageId: string, recipientId: string, status:
|
|
10
|
+
updateDeliveryStatus(messageId: string, recipientId: string, status: DeliveryStatus): Promise<void>;
|
|
11
11
|
recordAcknowledgment(messageId: string, recipientId: string, timestamp: Date): Promise<void>;
|
|
12
12
|
getMessagesByRecipient(recipientId: string, options?: MessageQueryOptions): Promise<IMessageMetadata[]>;
|
|
13
13
|
getMessagesBySender(senderId: string, options?: MessageQueryOptions): Promise<IMessageMetadata[]>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"diskMessageMetadataStore.d.ts","sourceRoot":"","sources":["../../../../../brightchain-api-lib/src/lib/stores/diskMessageMetadataStore.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,SAAS,EAET,gBAAgB,EAChB,qBAAqB,
|
|
1
|
+
{"version":3,"file":"diskMessageMetadataStore.d.ts","sourceRoot":"","sources":["../../../../../brightchain-api-lib/src/lib/stores/diskMessageMetadataStore.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,SAAS,EAET,cAAc,EACd,gBAAgB,EAChB,qBAAqB,EAGrB,YAAY,EACZ,mBAAmB,EAGpB,MAAM,8BAA8B,CAAC;AAItC,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AA8BlE,qBAAa,wBACX,SAAQ,sBACR,YAAW,qBAAqB;gBAEpB,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS;IAInD,OAAO,CAAC,mBAAmB;IAc3B,OAAO,CAAC,wBAAwB;IA+BhC,OAAO,CAAC,0BAA0B;IAkC5B,oBAAoB,CAAC,QAAQ,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC;IAgB/D,aAAa,CAAC,KAAK,EAAE,YAAY,GAAG,OAAO,CAAC,gBAAgB,EAAE,CAAC;IA2B/D,oBAAoB,CACxB,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,cAAc,GACrB,OAAO,CAAC,IAAI,CAAC;IAWV,oBAAoB,CACxB,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,IAAI,GACd,OAAO,CAAC,IAAI,CAAC;IAYV,sBAAsB,CAC1B,WAAW,EAAE,MAAM,EACnB,OAAO,CAAC,EAAE,mBAAmB,GAC5B,OAAO,CAAC,gBAAgB,EAAE,CAAC;IAuBxB,mBAAmB,CACvB,QAAQ,EAAE,MAAM,EAChB,OAAO,CAAC,EAAE,mBAAmB,GAC5B,OAAO,CAAC,gBAAgB,EAAE,CAAC;YAuBhB,kBAAkB;YAelB,sBAAsB;CA0CrC"}
|
|
@@ -124,7 +124,7 @@ class DiskMessageMetadataStore extends diskBlockMetadataStore_1.DiskBlockMetadat
|
|
|
124
124
|
});
|
|
125
125
|
}
|
|
126
126
|
meta.acknowledgments.set(recipientId, timestamp);
|
|
127
|
-
meta.deliveryStatus.set(recipientId, brightchain_lib_1.
|
|
127
|
+
meta.deliveryStatus.set(recipientId, brightchain_lib_1.DeliveryStatus.Delivered);
|
|
128
128
|
await this.storeMessageMetadata(meta);
|
|
129
129
|
}
|
|
130
130
|
async getMessagesByRecipient(recipientId, options) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"diskMessageMetadataStore.js","sourceRoot":"","sources":["../../../../../brightchain-api-lib/src/lib/stores/diskMessageMetadataStore.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"diskMessageMetadataStore.js","sourceRoot":"","sources":["../../../../../brightchain-api-lib/src/lib/stores/diskMessageMetadataStore.ts"],"names":[],"mappings":"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"}
|