@brightchain/brightchain-api-lib 0.12.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 +4 -4
- package/src/lib/application-base.d.ts +1 -1
- package/src/lib/application-base.d.ts.map +1 -1
- package/src/lib/application.d.ts +52 -0
- package/src/lib/application.d.ts.map +1 -1
- package/src/lib/application.js +104 -0
- package/src/lib/application.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/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/controllers/api/blocks.d.ts.map +1 -1
- package/src/lib/controllers/api/blocks.js +62 -0
- package/src/lib/controllers/api/blocks.js.map +1 -1
- package/src/lib/controllers/api/docs.d.ts +67 -0
- package/src/lib/controllers/api/docs.d.ts.map +1 -0
- package/src/lib/controllers/api/docs.js +86 -0
- package/src/lib/controllers/api/docs.js.map +1 -0
- package/src/lib/controllers/api/energy.d.ts.map +1 -1
- package/src/lib/controllers/api/energy.js +35 -7
- package/src/lib/controllers/api/energy.js.map +1 -1
- package/src/lib/controllers/api/health.d.ts +95 -0
- package/src/lib/controllers/api/health.d.ts.map +1 -0
- package/src/lib/controllers/api/health.js +319 -0
- package/src/lib/controllers/api/health.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 +119 -0
- package/src/lib/controllers/api/messages.d.ts.map +1 -0
- package/src/lib/controllers/api/messages.js +269 -0
- package/src/lib/controllers/api/messages.js.map +1 -0
- package/src/lib/controllers/api/nodes.d.ts +152 -0
- package/src/lib/controllers/api/nodes.d.ts.map +1 -0
- package/src/lib/controllers/api/nodes.js +378 -0
- package/src/lib/controllers/api/nodes.js.map +1 -0
- package/src/lib/controllers/api/quorum.d.ts +12 -8
- package/src/lib/controllers/api/quorum.d.ts.map +1 -1
- package/src/lib/controllers/api/quorum.js +83 -17
- package/src/lib/controllers/api/quorum.js.map +1 -1
- package/src/lib/controllers/api/scbl.d.ts +80 -0
- package/src/lib/controllers/api/scbl.d.ts.map +1 -0
- package/src/lib/controllers/api/scbl.js +325 -0
- package/src/lib/controllers/api/scbl.js.map +1 -0
- package/src/lib/controllers/api/sync.d.ts +140 -0
- package/src/lib/controllers/api/sync.d.ts.map +1 -0
- package/src/lib/controllers/api/sync.js +352 -0
- package/src/lib/controllers/api/sync.js.map +1 -0
- package/src/lib/controllers/api/user.d.ts +2 -0
- package/src/lib/controllers/api/user.d.ts.map +1 -1
- package/src/lib/controllers/api/user.js +122 -7
- package/src/lib/controllers/api/user.js.map +1 -1
- package/src/lib/enumerations/brightChainApiStrings.d.ts.map +1 -1
- package/src/lib/enumerations/brightChainApiStrings.js.map +1 -1
- package/src/lib/errors/symmetric.d.ts +2 -2
- package/src/lib/errors/symmetric.d.ts.map +1 -1
- package/src/lib/errors/symmetric.js.map +1 -1
- package/src/lib/errors/typed-error-local.d.ts +3 -3
- package/src/lib/errors/typed-error-local.d.ts.map +1 -1
- package/src/lib/errors/typed-error-local.js.map +1 -1
- package/src/lib/interfaces/application.d.ts +2 -1
- package/src/lib/interfaces/application.d.ts.map +1 -1
- package/src/lib/interfaces/backend-objects/index.d.ts +4 -4
- package/src/lib/interfaces/backend-objects/index.d.ts.map +1 -1
- package/src/lib/interfaces/backend-objects/index.js +0 -5
- package/src/lib/interfaces/backend-objects/index.js.map +1 -1
- package/src/lib/interfaces/bases/index.d.ts +4 -4
- package/src/lib/interfaces/bases/index.d.ts.map +1 -1
- package/src/lib/interfaces/bases/index.js +0 -5
- package/src/lib/interfaces/bases/index.js.map +1 -1
- package/src/lib/interfaces/index.d.ts +32 -32
- package/src/lib/interfaces/index.d.ts.map +1 -1
- package/src/lib/interfaces/index.js +0 -33
- package/src/lib/interfaces/index.js.map +1 -1
- package/src/lib/interfaces/member/index.d.ts +3 -3
- package/src/lib/interfaces/member/index.d.ts.map +1 -1
- package/src/lib/interfaces/member/index.js +0 -4
- package/src/lib/interfaces/member/index.js.map +1 -1
- package/src/lib/interfaces/requests/deleteMessagesRequest.d.ts +12 -0
- package/src/lib/interfaces/requests/deleteMessagesRequest.d.ts.map +1 -0
- package/src/lib/interfaces/requests/deleteMessagesRequest.js +3 -0
- package/src/lib/interfaces/requests/deleteMessagesRequest.js.map +1 -0
- package/src/lib/interfaces/requests/discoverBlockRequest.d.ts +10 -0
- package/src/lib/interfaces/requests/discoverBlockRequest.d.ts.map +1 -0
- package/src/lib/interfaces/requests/discoverBlockRequest.js +3 -0
- package/src/lib/interfaces/requests/discoverBlockRequest.js.map +1 -0
- package/src/lib/interfaces/requests/getBlockLocationRequest.d.ts +9 -0
- package/src/lib/interfaces/requests/getBlockLocationRequest.d.ts.map +1 -0
- package/src/lib/interfaces/requests/getBlockLocationRequest.js +3 -0
- package/src/lib/interfaces/requests/getBlockLocationRequest.js.map +1 -0
- package/src/lib/interfaces/requests/getMessageRequest.d.ts +12 -0
- package/src/lib/interfaces/requests/getMessageRequest.d.ts.map +1 -0
- package/src/lib/interfaces/requests/getMessageRequest.js +3 -0
- package/src/lib/interfaces/requests/getMessageRequest.js.map +1 -0
- package/src/lib/interfaces/requests/getNodeRequest.d.ts +9 -0
- package/src/lib/interfaces/requests/getNodeRequest.d.ts.map +1 -0
- package/src/lib/interfaces/{membersResponse.js → requests/getNodeRequest.js} +1 -1
- package/src/lib/interfaces/requests/getNodeRequest.js.map +1 -0
- package/src/lib/interfaces/requests/index.d.ts +12 -0
- package/src/lib/interfaces/requests/index.d.ts.map +1 -0
- package/src/lib/interfaces/requests/index.js +3 -0
- package/src/lib/interfaces/requests/index.js.map +1 -0
- package/src/lib/interfaces/requests/messageRequest.d.ts +10 -0
- package/src/lib/interfaces/requests/messageRequest.d.ts.map +1 -0
- package/src/lib/interfaces/requests/messageRequest.js +3 -0
- package/src/lib/interfaces/requests/messageRequest.js.map +1 -0
- package/src/lib/interfaces/requests/queryMessagesRequest.d.ts +16 -0
- package/src/lib/interfaces/requests/queryMessagesRequest.d.ts.map +1 -0
- package/src/lib/interfaces/requests/queryMessagesRequest.js +3 -0
- package/src/lib/interfaces/requests/queryMessagesRequest.js.map +1 -0
- package/src/lib/interfaces/requests/registerNodeRequest.d.ts +11 -0
- package/src/lib/interfaces/requests/registerNodeRequest.d.ts.map +1 -0
- package/src/lib/interfaces/requests/registerNodeRequest.js +3 -0
- package/src/lib/interfaces/requests/registerNodeRequest.js.map +1 -0
- package/src/lib/interfaces/requests/replicateBlockRequest.d.ts +13 -0
- package/src/lib/interfaces/requests/replicateBlockRequest.d.ts.map +1 -0
- package/src/lib/interfaces/requests/replicateBlockRequest.js +3 -0
- package/src/lib/interfaces/requests/replicateBlockRequest.js.map +1 -0
- package/src/lib/interfaces/requests/sendMessageRequest.d.ts +24 -0
- package/src/lib/interfaces/requests/sendMessageRequest.d.ts.map +1 -0
- package/src/lib/interfaces/requests/sendMessageRequest.js +3 -0
- package/src/lib/interfaces/requests/sendMessageRequest.js.map +1 -0
- package/src/lib/interfaces/requests/storeSCBLRequestBody.d.ts +9 -0
- package/src/lib/interfaces/requests/storeSCBLRequestBody.d.ts.map +1 -0
- package/src/lib/interfaces/requests/storeSCBLRequestBody.js +3 -0
- package/src/lib/interfaces/requests/storeSCBLRequestBody.js.map +1 -0
- package/src/lib/interfaces/requests/syncRequestBody.d.ts +10 -0
- package/src/lib/interfaces/requests/syncRequestBody.d.ts.map +1 -0
- package/src/lib/interfaces/requests/syncRequestBody.js +3 -0
- package/src/lib/interfaces/requests/syncRequestBody.js.map +1 -0
- package/src/lib/interfaces/responses/index.d.ts +7 -7
- package/src/lib/interfaces/responses/index.d.ts.map +1 -1
- package/src/lib/interfaces/responses/index.js +0 -8
- package/src/lib/interfaces/responses/index.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/middlewares/authentication.d.ts +133 -0
- package/src/lib/middlewares/authentication.d.ts.map +1 -0
- package/src/lib/middlewares/authentication.js +224 -0
- package/src/lib/middlewares/authentication.js.map +1 -0
- package/src/lib/middlewares/index.d.ts +2 -0
- package/src/lib/middlewares/index.d.ts.map +1 -1
- package/src/lib/middlewares/index.js +15 -1
- package/src/lib/middlewares/index.js.map +1 -1
- package/src/lib/middlewares/request-id.d.ts +18 -0
- package/src/lib/middlewares/request-id.d.ts.map +1 -0
- package/src/lib/middlewares/request-id.js +30 -0
- package/src/lib/middlewares/request-id.js.map +1 -0
- package/src/lib/openapi/index.d.ts +8 -0
- package/src/lib/openapi/index.d.ts.map +1 -0
- package/src/lib/openapi/index.js +21 -0
- package/src/lib/openapi/index.js.map +1 -0
- package/src/lib/openapi/schemas.d.ts +15 -0
- package/src/lib/openapi/schemas.d.ts.map +1 -0
- package/src/lib/openapi/schemas.js +610 -0
- package/src/lib/openapi/schemas.js.map +1 -0
- package/src/lib/routers/api.d.ts +62 -0
- package/src/lib/routers/api.d.ts.map +1 -1
- package/src/lib/routers/api.js +85 -0
- package/src/lib/routers/api.js.map +1 -1
- package/src/lib/services/diskQuorumService.d.ts +7 -6
- package/src/lib/services/diskQuorumService.d.ts.map +1 -1
- package/src/lib/services/diskQuorumService.js.map +1 -1
- package/src/lib/services/email.d.ts +2 -1
- package/src/lib/services/email.d.ts.map +1 -1
- package/src/lib/services/email.js.map +1 -1
- package/src/lib/services/eventNotificationSystem.d.ts +88 -6
- package/src/lib/services/eventNotificationSystem.d.ts.map +1 -1
- package/src/lib/services/eventNotificationSystem.js +132 -17
- package/src/lib/services/eventNotificationSystem.js.map +1 -1
- package/src/lib/services/fec.js +1 -1
- package/src/lib/services/fec.js.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
- package/src/lib/types/backend-id.d.ts +2 -1
- package/src/lib/types/backend-id.d.ts.map +1 -1
- package/src/lib/utils/errorResponse.d.ts +227 -2
- package/src/lib/utils/errorResponse.d.ts.map +1 -1
- package/src/lib/utils/errorResponse.js +292 -3
- package/src/lib/utils/errorResponse.js.map +1 -1
- package/src/lib/i18n/index.d.ts +0 -7
- package/src/lib/i18n/index.d.ts.map +0 -1
- package/src/lib/i18n/index.js +0 -29
- package/src/lib/i18n/index.js.map +0 -1
- package/src/lib/i18n/strings/index.d.ts +0 -6
- package/src/lib/i18n/strings/index.d.ts.map +0 -1
- package/src/lib/i18n/strings/index.js +0 -17
- package/src/lib/i18n/strings/index.js.map +0 -1
- package/src/lib/interfaces/membersResponse.d.ts +0 -12
- package/src/lib/interfaces/membersResponse.d.ts.map +0 -1
- package/src/lib/interfaces/membersResponse.js.map +0 -1
|
@@ -9,8 +9,22 @@
|
|
|
9
9
|
* @see Requirements 6.1, 6.2, 6.3, 6.4, 6.5, 6.6
|
|
10
10
|
*/
|
|
11
11
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
-
exports.GossipService = void 0;
|
|
12
|
+
exports.GossipService = exports.InvalidGossipConfigError = void 0;
|
|
13
|
+
const brightchain_lib_1 = require("@brightchain/brightchain-lib");
|
|
13
14
|
// Note: DEFAULT_GOSSIP_CONFIG should be imported directly from @brightchain/brightchain-lib by consumers
|
|
15
|
+
/**
|
|
16
|
+
* Error thrown when gossip configuration is invalid.
|
|
17
|
+
* Non-positive fanout or TTL values will trigger this error at service initialization.
|
|
18
|
+
*
|
|
19
|
+
* @see Requirements 10.3, 10.4
|
|
20
|
+
*/
|
|
21
|
+
class InvalidGossipConfigError extends Error {
|
|
22
|
+
constructor(message) {
|
|
23
|
+
super(message);
|
|
24
|
+
this.name = 'InvalidGossipConfigError';
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
exports.InvalidGossipConfigError = InvalidGossipConfigError;
|
|
14
28
|
/**
|
|
15
29
|
* Default gossip configuration values (local copy for use in this module).
|
|
16
30
|
*/
|
|
@@ -19,6 +33,10 @@ const defaultGossipConfig = {
|
|
|
19
33
|
defaultTtl: 3,
|
|
20
34
|
batchIntervalMs: 1000,
|
|
21
35
|
maxBatchSize: 100,
|
|
36
|
+
messagePriority: {
|
|
37
|
+
normal: { fanout: 5, ttl: 5 },
|
|
38
|
+
high: { fanout: 7, ttl: 7 },
|
|
39
|
+
},
|
|
22
40
|
};
|
|
23
41
|
/**
|
|
24
42
|
* Gossip Service Implementation
|
|
@@ -34,18 +52,40 @@ class GossipService {
|
|
|
34
52
|
*
|
|
35
53
|
* @param peerProvider - Provider for peer management operations
|
|
36
54
|
* @param config - Gossip configuration (uses defaults if not provided)
|
|
55
|
+
* @param localUserIds - Set of local user IDs on this node (defaults to empty set)
|
|
56
|
+
* @param eciesService - Optional ECIES service for encrypting sensitive batches
|
|
57
|
+
* @param localPrivateKey - Optional local node private key (Buffer) for identifying the sender
|
|
58
|
+
* @throws {InvalidGossipConfigError} If configuration contains non-positive fanout or TTL values
|
|
59
|
+
* @see Requirements 10.3, 10.4
|
|
37
60
|
*/
|
|
38
|
-
constructor(peerProvider, config = defaultGossipConfig) {
|
|
61
|
+
constructor(peerProvider, config = defaultGossipConfig, localUserIds, eciesService, localPrivateKey) {
|
|
39
62
|
this.peerProvider = peerProvider;
|
|
40
63
|
this.config = config;
|
|
64
|
+
this.eciesService = eciesService;
|
|
65
|
+
this.localPrivateKey = localPrivateKey;
|
|
41
66
|
/**
|
|
42
67
|
* Pending announcements waiting to be batched and sent.
|
|
43
68
|
*/
|
|
44
69
|
this.pendingAnnouncements = [];
|
|
45
70
|
/**
|
|
46
|
-
* Registered announcement handlers.
|
|
71
|
+
* Registered announcement handlers (for non-message, non-ack announcements).
|
|
47
72
|
*/
|
|
48
73
|
this.handlers = new Set();
|
|
74
|
+
/**
|
|
75
|
+
* Registered message delivery handlers.
|
|
76
|
+
* Called when a BlockAnnouncement with messageDelivery metadata is received
|
|
77
|
+
* and recipientIds match local users.
|
|
78
|
+
*
|
|
79
|
+
* @see Requirements 3.4, 3.5
|
|
80
|
+
*/
|
|
81
|
+
this.messageDeliveryHandlers = new Set();
|
|
82
|
+
/**
|
|
83
|
+
* Registered delivery ack handlers.
|
|
84
|
+
* Called when a BlockAnnouncement of type 'ack' is received.
|
|
85
|
+
*
|
|
86
|
+
* @see Requirements 4.4
|
|
87
|
+
*/
|
|
88
|
+
this.deliveryAckHandlers = new Set();
|
|
49
89
|
/**
|
|
50
90
|
* Batch timer handle.
|
|
51
91
|
*/
|
|
@@ -54,6 +94,10 @@ class GossipService {
|
|
|
54
94
|
* Whether the service is running.
|
|
55
95
|
*/
|
|
56
96
|
this.running = false;
|
|
97
|
+
this.localUserIds = localUserIds ?? new Set();
|
|
98
|
+
if (!(0, brightchain_lib_1.validateGossipConfig)(config)) {
|
|
99
|
+
throw new InvalidGossipConfigError('Invalid gossip configuration: all fanout and TTL values must be positive integers');
|
|
100
|
+
}
|
|
57
101
|
}
|
|
58
102
|
/**
|
|
59
103
|
* Announce a new block to the network.
|
|
@@ -89,13 +133,76 @@ class GossipService {
|
|
|
89
133
|
}
|
|
90
134
|
/**
|
|
91
135
|
* Handle an incoming block announcement from a peer.
|
|
92
|
-
*
|
|
136
|
+
*
|
|
137
|
+
* Dispatches announcements based on their type and metadata:
|
|
138
|
+
* - 'ack' type: dispatches to delivery ack handlers only (Req 4.4)
|
|
139
|
+
* - 'add' with messageDelivery and matching local recipients: triggers message delivery
|
|
140
|
+
* handlers and auto-sends ack if ackRequired (Req 3.4, 3.5)
|
|
141
|
+
* - 'add' with messageDelivery but no matching local recipients: forwards normally (Req 3.6)
|
|
142
|
+
* - Plain 'add'/'remove' without messageDelivery: notifies general handlers and forwards (backward compat)
|
|
93
143
|
*
|
|
94
144
|
* @param announcement - The received announcement
|
|
95
|
-
* @see Requirements
|
|
145
|
+
* @see Requirements 3.4, 3.5, 3.6, 4.4
|
|
96
146
|
*/
|
|
97
147
|
async handleAnnouncement(announcement) {
|
|
98
|
-
//
|
|
148
|
+
// Case 1: Ack announcements — dispatch to delivery ack handlers only
|
|
149
|
+
if (announcement.type === 'ack') {
|
|
150
|
+
for (const handler of this.deliveryAckHandlers) {
|
|
151
|
+
try {
|
|
152
|
+
handler(announcement);
|
|
153
|
+
}
|
|
154
|
+
catch {
|
|
155
|
+
// Ignore handler errors to prevent one handler from affecting others
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
// Forward ack with decremented TTL
|
|
159
|
+
if (announcement.ttl > 0) {
|
|
160
|
+
const forwardedAnnouncement = {
|
|
161
|
+
...announcement,
|
|
162
|
+
ttl: announcement.ttl - 1,
|
|
163
|
+
};
|
|
164
|
+
this.queueAnnouncement(forwardedAnnouncement);
|
|
165
|
+
}
|
|
166
|
+
return;
|
|
167
|
+
}
|
|
168
|
+
// Case 2: Message delivery announcements
|
|
169
|
+
if (announcement.messageDelivery) {
|
|
170
|
+
const matchingLocalRecipients = announcement.messageDelivery.recipientIds.filter((id) => this.localUserIds.has(id));
|
|
171
|
+
if (matchingLocalRecipients.length > 0) {
|
|
172
|
+
// Req 3.4: recipientIds match local users — trigger message delivery handlers
|
|
173
|
+
for (const handler of this.messageDeliveryHandlers) {
|
|
174
|
+
try {
|
|
175
|
+
handler(announcement);
|
|
176
|
+
}
|
|
177
|
+
catch {
|
|
178
|
+
// Ignore handler errors to prevent one handler from affecting others
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
// Req 3.5: If ackRequired, automatically send delivery ack for each local recipient
|
|
182
|
+
if (announcement.messageDelivery.ackRequired) {
|
|
183
|
+
for (const recipientId of matchingLocalRecipients) {
|
|
184
|
+
await this.sendDeliveryAck({
|
|
185
|
+
messageId: announcement.messageDelivery.messageId,
|
|
186
|
+
recipientId,
|
|
187
|
+
status: 'delivered',
|
|
188
|
+
originalSenderNode: announcement.nodeId,
|
|
189
|
+
});
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
// Do NOT forward — this node is a recipient
|
|
193
|
+
return;
|
|
194
|
+
}
|
|
195
|
+
// Req 3.6: recipientIds don't match any local users — forward normally
|
|
196
|
+
if (announcement.ttl > 0) {
|
|
197
|
+
const forwardedAnnouncement = {
|
|
198
|
+
...announcement,
|
|
199
|
+
ttl: announcement.ttl - 1,
|
|
200
|
+
};
|
|
201
|
+
this.queueAnnouncement(forwardedAnnouncement);
|
|
202
|
+
}
|
|
203
|
+
return;
|
|
204
|
+
}
|
|
205
|
+
// Case 3: Plain block announcements (no messageDelivery, not ack) — backward compatible
|
|
99
206
|
for (const handler of this.handlers) {
|
|
100
207
|
try {
|
|
101
208
|
handler(announcement);
|
|
@@ -141,8 +248,13 @@ class GossipService {
|
|
|
141
248
|
}
|
|
142
249
|
/**
|
|
143
250
|
* Immediately flush all pending announcements.
|
|
251
|
+
* Groups announcements by their required fanout (based on message priority)
|
|
252
|
+
* and sends each group to the appropriate number of peers.
|
|
144
253
|
*
|
|
145
|
-
*
|
|
254
|
+
* - Announcements with messageDelivery use priority-based fanout (Req 3.1, 3.2)
|
|
255
|
+
* - Announcements without messageDelivery use default fanout (Req 3.3)
|
|
256
|
+
*
|
|
257
|
+
* @see Requirements 3.1, 3.2, 3.3, 6.6
|
|
146
258
|
*/
|
|
147
259
|
async flushAnnouncements() {
|
|
148
260
|
if (this.pendingAnnouncements.length === 0) {
|
|
@@ -155,19 +267,40 @@ class GossipService {
|
|
|
155
267
|
this.pendingAnnouncements = [];
|
|
156
268
|
return;
|
|
157
269
|
}
|
|
158
|
-
//
|
|
159
|
-
const
|
|
160
|
-
|
|
161
|
-
|
|
270
|
+
// Group announcements by their required fanout
|
|
271
|
+
const fanoutGroups = new Map();
|
|
272
|
+
for (const announcement of this.pendingAnnouncements) {
|
|
273
|
+
let fanout;
|
|
274
|
+
if (announcement.messageDelivery) {
|
|
275
|
+
// Use priority-based fanout for message announcements
|
|
276
|
+
const priorityConfig = this.config.messagePriority[announcement.messageDelivery.priority];
|
|
277
|
+
fanout = priorityConfig.fanout;
|
|
278
|
+
}
|
|
279
|
+
else {
|
|
280
|
+
// Use default fanout for non-message announcements (Req 3.3)
|
|
281
|
+
fanout = this.config.fanout;
|
|
282
|
+
}
|
|
283
|
+
const group = fanoutGroups.get(fanout);
|
|
284
|
+
if (group) {
|
|
285
|
+
group.push(announcement);
|
|
286
|
+
}
|
|
287
|
+
else {
|
|
288
|
+
fanoutGroups.set(fanout, [announcement]);
|
|
289
|
+
}
|
|
290
|
+
}
|
|
162
291
|
// Clear pending before sending to avoid duplicates on retry
|
|
163
292
|
this.pendingAnnouncements = [];
|
|
164
|
-
// Send
|
|
293
|
+
// Send each fanout group to the appropriate number of peers
|
|
165
294
|
const sendPromises = [];
|
|
166
|
-
for (const
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
295
|
+
for (const [fanout, announcements] of fanoutGroups) {
|
|
296
|
+
const selectedPeers = this.selectRandomPeers(connectedPeers, fanout);
|
|
297
|
+
const batches = this.splitIntoBatches(announcements, this.config.maxBatchSize);
|
|
298
|
+
for (const peerId of selectedPeers) {
|
|
299
|
+
for (const batch of batches) {
|
|
300
|
+
sendPromises.push(this.sendBatchToPeer(peerId, batch).catch(() => {
|
|
301
|
+
// Ignore send errors - best effort delivery
|
|
302
|
+
}));
|
|
303
|
+
}
|
|
171
304
|
}
|
|
172
305
|
}
|
|
173
306
|
await Promise.all(sendPromises);
|
|
@@ -258,12 +391,159 @@ class GossipService {
|
|
|
258
391
|
}
|
|
259
392
|
return batches;
|
|
260
393
|
}
|
|
394
|
+
/**
|
|
395
|
+
* Check if a batch contains sensitive metadata (messageDelivery or deliveryAck).
|
|
396
|
+
*
|
|
397
|
+
* @param announcements - The announcements to check
|
|
398
|
+
* @returns true if any announcement has messageDelivery or deliveryAck
|
|
399
|
+
* @see Requirements 4.1, 4.2
|
|
400
|
+
*/
|
|
401
|
+
batchContainsSensitiveMetadata(announcements) {
|
|
402
|
+
return announcements.some((a) => a.messageDelivery !== undefined || a.deliveryAck !== undefined);
|
|
403
|
+
}
|
|
404
|
+
/**
|
|
405
|
+
* Encrypt a batch of announcements for a specific peer using ECIES.
|
|
406
|
+
* Serializes announcements to JSON, encrypts with the peer's public key,
|
|
407
|
+
* and returns a base64-encoded ciphertext string.
|
|
408
|
+
*
|
|
409
|
+
* @param announcements - The announcements to encrypt
|
|
410
|
+
* @param peerPublicKey - The peer's ECIES public key
|
|
411
|
+
* @returns Base64-encoded ECIES ciphertext
|
|
412
|
+
* @see Requirements 4.1, 4.3
|
|
413
|
+
*/
|
|
414
|
+
async encryptBatchForPeer(announcements, peerPublicKey) {
|
|
415
|
+
if (!this.eciesService) {
|
|
416
|
+
throw new Error('ECIESService is required for encryption');
|
|
417
|
+
}
|
|
418
|
+
const json = JSON.stringify(announcements.map((a) => ({
|
|
419
|
+
type: a.type,
|
|
420
|
+
blockId: a.blockId,
|
|
421
|
+
nodeId: a.nodeId,
|
|
422
|
+
ttl: a.ttl,
|
|
423
|
+
...(a.messageDelivery ? { messageDelivery: a.messageDelivery } : {}),
|
|
424
|
+
...(a.deliveryAck ? { deliveryAck: a.deliveryAck } : {}),
|
|
425
|
+
})));
|
|
426
|
+
const plaintext = Buffer.from(json, 'utf-8');
|
|
427
|
+
const ciphertext = await this.eciesService.encryptWithLength(peerPublicKey, plaintext);
|
|
428
|
+
return Buffer.from(ciphertext).toString('base64');
|
|
429
|
+
}
|
|
430
|
+
/**
|
|
431
|
+
* Send a batch to a peer, encrypting if the batch is sensitive and the peer has a public key.
|
|
432
|
+
*
|
|
433
|
+
* - Sensitive batch + peer key available → encrypt and send with encryptedPayload
|
|
434
|
+
* - Sensitive batch + no peer key → send plaintext, log warning (Req 6.1, 6.2)
|
|
435
|
+
* - Non-sensitive batch → send plaintext
|
|
436
|
+
*
|
|
437
|
+
* @param peerId - The peer to send to
|
|
438
|
+
* @param batch - The announcements to send
|
|
439
|
+
* @see Requirements 4.1, 4.2, 6.1, 6.2
|
|
440
|
+
*/
|
|
441
|
+
async sendBatchToPeer(peerId, batch) {
|
|
442
|
+
const isSensitive = this.batchContainsSensitiveMetadata(batch);
|
|
443
|
+
if (isSensitive && this.eciesService) {
|
|
444
|
+
const peerKey = await this.peerProvider.getPeerPublicKey(peerId);
|
|
445
|
+
if (peerKey) {
|
|
446
|
+
// Encrypt and send with encrypted payload
|
|
447
|
+
const encryptedPayload = await this.encryptBatchForPeer(batch, peerKey);
|
|
448
|
+
await this.peerProvider.sendAnnouncementBatch(peerId, [], {
|
|
449
|
+
encryptedPayload,
|
|
450
|
+
senderNodeId: this.peerProvider.getLocalNodeId(),
|
|
451
|
+
});
|
|
452
|
+
return;
|
|
453
|
+
}
|
|
454
|
+
// Sensitive but no peer key — fallback to plaintext with warning
|
|
455
|
+
console.warn(`[GossipService] Sending sensitive batch in plaintext to peer ${peerId}: no public key registered`);
|
|
456
|
+
}
|
|
457
|
+
// Non-sensitive or fallback: send plaintext
|
|
458
|
+
await this.peerProvider.sendAnnouncementBatch(peerId, batch);
|
|
459
|
+
}
|
|
261
460
|
/**
|
|
262
461
|
* Clear all pending announcements (for testing).
|
|
263
462
|
*/
|
|
264
463
|
clearPending() {
|
|
265
464
|
this.pendingAnnouncements = [];
|
|
266
465
|
}
|
|
466
|
+
/**
|
|
467
|
+
* Announce message blocks to the network with message delivery metadata.
|
|
468
|
+
* Creates a BlockAnnouncement for each blockId with priority-based TTL
|
|
469
|
+
* from config and queues them for batch sending.
|
|
470
|
+
*
|
|
471
|
+
* @param blockIds - The block IDs containing the message content
|
|
472
|
+
* @param metadata - Message delivery metadata including recipients, priority, and CBL block ID
|
|
473
|
+
* @see Requirements 3.1, 3.2, 3.3
|
|
474
|
+
*/
|
|
475
|
+
async announceMessage(blockIds, metadata) {
|
|
476
|
+
// Determine TTL based on priority (Req 3.1: normal → 5, Req 3.2: high → 7)
|
|
477
|
+
const priorityConfig = this.config.messagePriority[metadata.priority];
|
|
478
|
+
const ttl = priorityConfig.ttl;
|
|
479
|
+
// Create a BlockAnnouncement for each blockId
|
|
480
|
+
for (const blockId of blockIds) {
|
|
481
|
+
const announcement = {
|
|
482
|
+
type: 'add',
|
|
483
|
+
blockId,
|
|
484
|
+
nodeId: this.peerProvider.getLocalNodeId(),
|
|
485
|
+
timestamp: new Date(),
|
|
486
|
+
ttl,
|
|
487
|
+
messageDelivery: metadata,
|
|
488
|
+
};
|
|
489
|
+
this.queueAnnouncement(announcement);
|
|
490
|
+
}
|
|
491
|
+
}
|
|
492
|
+
/**
|
|
493
|
+
* Send a delivery acknowledgment back through the gossip network.
|
|
494
|
+
* Stub implementation — will be fully implemented in task 4.3.
|
|
495
|
+
*
|
|
496
|
+
* @param _ack - Delivery acknowledgment metadata
|
|
497
|
+
* @see Requirements 4.1
|
|
498
|
+
*/
|
|
499
|
+
async sendDeliveryAck(ack) {
|
|
500
|
+
const announcement = {
|
|
501
|
+
type: 'ack',
|
|
502
|
+
blockId: ack.messageId,
|
|
503
|
+
nodeId: this.peerProvider.getLocalNodeId(),
|
|
504
|
+
timestamp: new Date(),
|
|
505
|
+
ttl: this.config.defaultTtl,
|
|
506
|
+
deliveryAck: ack,
|
|
507
|
+
};
|
|
508
|
+
this.queueAnnouncement(announcement);
|
|
509
|
+
}
|
|
510
|
+
/**
|
|
511
|
+
* Register a handler for message delivery events.
|
|
512
|
+
* The handler is called when a BlockAnnouncement with messageDelivery
|
|
513
|
+
* metadata is received and recipientIds match local users.
|
|
514
|
+
*
|
|
515
|
+
* @param handler - Function to call when a message delivery announcement is received
|
|
516
|
+
* @see Requirements 3.4, 3.5
|
|
517
|
+
*/
|
|
518
|
+
onMessageDelivery(handler) {
|
|
519
|
+
this.messageDeliveryHandlers.add(handler);
|
|
520
|
+
}
|
|
521
|
+
/**
|
|
522
|
+
* Remove a message delivery event handler.
|
|
523
|
+
*
|
|
524
|
+
* @param handler - The handler to remove
|
|
525
|
+
*/
|
|
526
|
+
offMessageDelivery(handler) {
|
|
527
|
+
this.messageDeliveryHandlers.delete(handler);
|
|
528
|
+
}
|
|
529
|
+
/**
|
|
530
|
+
* Register a handler for delivery acknowledgment events.
|
|
531
|
+
* The handler is called when a BlockAnnouncement of type 'ack' is received.
|
|
532
|
+
*
|
|
533
|
+
* @param handler - Function to call when a delivery ack announcement is received
|
|
534
|
+
* @see Requirements 4.4
|
|
535
|
+
*/
|
|
536
|
+
onDeliveryAck(handler) {
|
|
537
|
+
this.deliveryAckHandlers.add(handler);
|
|
538
|
+
}
|
|
539
|
+
/**
|
|
540
|
+
* Remove a delivery acknowledgment event handler.
|
|
541
|
+
*
|
|
542
|
+
* @param handler - The handler to remove
|
|
543
|
+
*/
|
|
544
|
+
offDeliveryAck(handler) {
|
|
545
|
+
this.deliveryAckHandlers.delete(handler);
|
|
546
|
+
}
|
|
267
547
|
}
|
|
268
548
|
exports.GossipService = GossipService;
|
|
269
549
|
//# sourceMappingURL=gossipService.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gossipService.js","sourceRoot":"","sources":["../../../../../brightchain-api-lib/src/lib/availability/gossipService.ts"],"names":[],"mappings":";AAAA;;;;;;;;GAQG;;;AASH,yGAAyG;AAEzG;;GAEG;AACH,MAAM,mBAAmB,GAAiB;IACxC,MAAM,EAAE,CAAC;IACT,UAAU,EAAE,CAAC;IACb,eAAe,EAAE,IAAI;IACrB,YAAY,EAAE,GAAG;CAClB,CAAC;AA6BF;;;;;;;GAOG;AACH,MAAa,aAAa;IAqBxB;;;;;OAKG;IACH,YACmB,YAA2B,EAC3B,SAAuB,mBAAmB;QAD1C,iBAAY,GAAZ,YAAY,CAAe;QAC3B,WAAM,GAAN,MAAM,CAAoC;QA5B7D;;WAEG;QACK,yBAAoB,GAAwB,EAAE,CAAC;QAEvD;;WAEG;QACK,aAAQ,GAA6B,IAAI,GAAG,EAAE,CAAC;QAEvD;;WAEG;QACK,eAAU,GAA0C,IAAI,CAAC;QAEjE;;WAEG;QACK,YAAO,GAAG,KAAK,CAAC;IAWrB,CAAC;IAEJ;;;;;OAKG;IACH,KAAK,CAAC,aAAa,CAAC,OAAe;QACjC,MAAM,YAAY,GAAsB;YACtC,IAAI,EAAE,KAAK;YACX,OAAO;YACP,MAAM,EAAE,IAAI,CAAC,YAAY,CAAC,cAAc,EAAE;YAC1C,SAAS,EAAE,IAAI,IAAI,EAAE;YACrB,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,UAAU;SAC5B,CAAC;QAEF,IAAI,CAAC,iBAAiB,CAAC,YAAY,CAAC,CAAC;IACvC,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,eAAe,CAAC,OAAe;QACnC,MAAM,YAAY,GAAsB;YACtC,IAAI,EAAE,QAAQ;YACd,OAAO;YACP,MAAM,EAAE,IAAI,CAAC,YAAY,CAAC,cAAc,EAAE;YAC1C,SAAS,EAAE,IAAI,IAAI,EAAE;YACrB,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,UAAU;SAC5B,CAAC;QAEF,IAAI,CAAC,iBAAiB,CAAC,YAAY,CAAC,CAAC;IACvC,CAAC;IAED;;;;;;OAMG;IACH,KAAK,CAAC,kBAAkB,CAAC,YAA+B;QACtD,iCAAiC;QACjC,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YACpC,IAAI,CAAC;gBACH,OAAO,CAAC,YAAY,CAAC,CAAC;YACxB,CAAC;YAAC,MAAM,CAAC;gBACP,qEAAqE;YACvE,CAAC;QACH,CAAC;QAED,0CAA0C;QAC1C,IAAI,YAAY,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC;YACzB,MAAM,qBAAqB,GAAsB;gBAC/C,GAAG,YAAY;gBACf,GAAG,EAAE,YAAY,CAAC,GAAG,GAAG,CAAC;aAC1B,CAAC;YAEF,IAAI,CAAC,iBAAiB,CAAC,qBAAqB,CAAC,CAAC;QAChD,CAAC;IACH,CAAC;IAED;;;;;OAKG;IACH,cAAc,CAAC,OAA4B;QACzC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IAC7B,CAAC;IAED;;;;OAIG;IACH,eAAe,CAAC,OAA4B;QAC1C,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAChC,CAAC;IAED;;;;;OAKG;IACH,uBAAuB;QACrB,OAAO,CAAC,GAAG,IAAI,CAAC,oBAAoB,CAAC,CAAC;IACxC,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,kBAAkB;QACtB,IAAI,IAAI,CAAC,oBAAoB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC3C,OAAO;QACT,CAAC;QAED,sBAAsB;QACtB,MAAM,cAAc,GAAG,IAAI,CAAC,YAAY,CAAC,mBAAmB,EAAE,CAAC;QAC/D,IAAI,cAAc,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAChC,qCAAqC;YACrC,IAAI,CAAC,oBAAoB,GAAG,EAAE,CAAC;YAC/B,OAAO;QACT,CAAC;QAED,iCAAiC;QACjC,MAAM,aAAa,GAAG,IAAI,CAAC,iBAAiB,CAC1C,cAAc,EACd,IAAI,CAAC,MAAM,CAAC,MAAM,CACnB,CAAC;QAEF,mCAAmC;QACnC,MAAM,OAAO,GAAG,IAAI,CAAC,gBAAgB,CACnC,IAAI,CAAC,oBAAoB,EACzB,IAAI,CAAC,MAAM,CAAC,YAAY,CACzB,CAAC;QAEF,4DAA4D;QAC5D,IAAI,CAAC,oBAAoB,GAAG,EAAE,CAAC;QAE/B,iCAAiC;QACjC,MAAM,YAAY,GAAoB,EAAE,CAAC;QACzC,KAAK,MAAM,MAAM,IAAI,aAAa,EAAE,CAAC;YACnC,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;gBAC5B,YAAY,CAAC,IAAI,CACf,IAAI,CAAC,YAAY,CAAC,qBAAqB,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE;oBAChE,4CAA4C;gBAC9C,CAAC,CAAC,CACH,CAAC;YACJ,CAAC;QACH,CAAC;QAED,MAAM,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;IAClC,CAAC;IAED;;OAEG;IACH,KAAK;QACH,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACjB,OAAO;QACT,CAAC;QAED,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QACpB,IAAI,CAAC,UAAU,GAAG,WAAW,CAAC,GAAG,EAAE;YACjC,IAAI,CAAC,kBAAkB,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE;gBACnC,sBAAsB;YACxB,CAAC,CAAC,CAAC;QACL,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC;IAClC,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,IAAI;QACR,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;YAClB,OAAO;QACT,CAAC;QAED,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;QAErB,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YACpB,aAAa,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YAC/B,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;QACzB,CAAC;QAED,oCAAoC;QACpC,MAAM,IAAI,CAAC,kBAAkB,EAAE,CAAC;IAClC,CAAC;IAED;;;;OAIG;IACH,SAAS;QACP,OAAO,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;IAC5B,CAAC;IAED;;;;OAIG;IACK,iBAAiB,CAAC,YAA+B;QACvD,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QAE7C,qDAAqD;QACrD,IAAI,IAAI,CAAC,oBAAoB,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC;YACjE,IAAI,CAAC,kBAAkB,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE;gBACnC,sBAAsB;YACxB,CAAC,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED;;;;;;;OAOG;IACK,iBAAiB,CAAC,KAAe,EAAE,KAAa;QACtD,IAAI,KAAK,CAAC,MAAM,IAAI,KAAK,EAAE,CAAC;YAC1B,OAAO,CAAC,GAAG,KAAK,CAAC,CAAC;QACpB,CAAC;QAED,uDAAuD;QACvD,MAAM,QAAQ,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC;QAC5B,KAAK,IAAI,CAAC,GAAG,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;YAC7C,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YAC9C,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;QAC1D,CAAC;QAED,OAAO,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;IAClC,CAAC;IAED;;;;;;;OAOG;IACK,gBAAgB,CACtB,aAAkC,EAClC,OAAe;QAEf,MAAM,OAAO,GAA0B,EAAE,CAAC;QAE1C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,aAAa,CAAC,MAAM,EAAE,CAAC,IAAI,OAAO,EAAE,CAAC;YACvD,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;QACpD,CAAC;QAED,OAAO,OAAO,CAAC;IACjB,CAAC;IAED;;OAEG;IACH,YAAY;QACV,IAAI,CAAC,oBAAoB,GAAG,EAAE,CAAC;IACjC,CAAC;CACF;AA3RD,sCA2RC"}
|
|
1
|
+
{"version":3,"file":"gossipService.js","sourceRoot":"","sources":["../../../../../brightchain-api-lib/src/lib/availability/gossipService.ts"],"names":[],"mappings":";AAAA;;;;;;;;GAQG;;;AAEH,kEAQsC;AAGtC,yGAAyG;AAEzG;;;;;GAKG;AACH,MAAa,wBAAyB,SAAQ,KAAK;IACjD,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,0BAA0B,CAAC;IACzC,CAAC;CACF;AALD,4DAKC;AAED;;GAEG;AACH,MAAM,mBAAmB,GAAiB;IACxC,MAAM,EAAE,CAAC;IACT,UAAU,EAAE,CAAC;IACb,eAAe,EAAE,IAAI;IACrB,YAAY,EAAE,GAAG;IACjB,eAAe,EAAE;QACf,MAAM,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE;QAC7B,IAAI,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE;KAC5B;CACF,CAAC;AA+CF;;;;;;;GAOG;AACH,MAAa,aAAa;IAiDxB;;;;;;;;;;OAUG;IACH,YACmB,YAA2B,EAC3B,SAAuB,mBAAmB,EAC3D,YAA0B,EACT,YAA2B,EAC3B,eAAwB;QAJxB,iBAAY,GAAZ,YAAY,CAAe;QAC3B,WAAM,GAAN,MAAM,CAAoC;QAE1C,iBAAY,GAAZ,YAAY,CAAe;QAC3B,oBAAe,GAAf,eAAe,CAAS;QAhE3C;;WAEG;QACK,yBAAoB,GAAwB,EAAE,CAAC;QAEvD;;WAEG;QACK,aAAQ,GAA6B,IAAI,GAAG,EAAE,CAAC;QAEvD;;;;;;WAMG;QACK,4BAAuB,GAE3B,IAAI,GAAG,EAAE,CAAC;QAEd;;;;;WAKG;QACK,wBAAmB,GACzB,IAAI,GAAG,EAAE,CAAC;QAUZ;;WAEG;QACK,eAAU,GAA0C,IAAI,CAAC;QAEjE;;WAEG;QACK,YAAO,GAAG,KAAK,CAAC;QAoBtB,IAAI,CAAC,YAAY,GAAG,YAAY,IAAI,IAAI,GAAG,EAAE,CAAC;QAC9C,IAAI,CAAC,IAAA,sCAAoB,EAAC,MAAM,CAAC,EAAE,CAAC;YAClC,MAAM,IAAI,wBAAwB,CAChC,mFAAmF,CACpF,CAAC;QACJ,CAAC;IACH,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,aAAa,CAAC,OAAe;QACjC,MAAM,YAAY,GAAsB;YACtC,IAAI,EAAE,KAAK;YACX,OAAO;YACP,MAAM,EAAE,IAAI,CAAC,YAAY,CAAC,cAAc,EAAE;YAC1C,SAAS,EAAE,IAAI,IAAI,EAAE;YACrB,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,UAAU;SAC5B,CAAC;QAEF,IAAI,CAAC,iBAAiB,CAAC,YAAY,CAAC,CAAC;IACvC,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,eAAe,CAAC,OAAe;QACnC,MAAM,YAAY,GAAsB;YACtC,IAAI,EAAE,QAAQ;YACd,OAAO;YACP,MAAM,EAAE,IAAI,CAAC,YAAY,CAAC,cAAc,EAAE;YAC1C,SAAS,EAAE,IAAI,IAAI,EAAE;YACrB,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,UAAU;SAC5B,CAAC;QAEF,IAAI,CAAC,iBAAiB,CAAC,YAAY,CAAC,CAAC;IACvC,CAAC;IAED;;;;;;;;;;;;OAYG;IACH,KAAK,CAAC,kBAAkB,CAAC,YAA+B;QACtD,qEAAqE;QACrE,IAAI,YAAY,CAAC,IAAI,KAAK,KAAK,EAAE,CAAC;YAChC,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,mBAAmB,EAAE,CAAC;gBAC/C,IAAI,CAAC;oBACH,OAAO,CAAC,YAAY,CAAC,CAAC;gBACxB,CAAC;gBAAC,MAAM,CAAC;oBACP,qEAAqE;gBACvE,CAAC;YACH,CAAC;YACD,mCAAmC;YACnC,IAAI,YAAY,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC;gBACzB,MAAM,qBAAqB,GAAsB;oBAC/C,GAAG,YAAY;oBACf,GAAG,EAAE,YAAY,CAAC,GAAG,GAAG,CAAC;iBAC1B,CAAC;gBACF,IAAI,CAAC,iBAAiB,CAAC,qBAAqB,CAAC,CAAC;YAChD,CAAC;YACD,OAAO;QACT,CAAC;QAED,yCAAyC;QACzC,IAAI,YAAY,CAAC,eAAe,EAAE,CAAC;YACjC,MAAM,uBAAuB,GAC3B,YAAY,CAAC,eAAe,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,CACtD,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE,CAAC,CAC1B,CAAC;YAEJ,IAAI,uBAAuB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACvC,8EAA8E;gBAC9E,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,uBAAuB,EAAE,CAAC;oBACnD,IAAI,CAAC;wBACH,OAAO,CAAC,YAAY,CAAC,CAAC;oBACxB,CAAC;oBAAC,MAAM,CAAC;wBACP,qEAAqE;oBACvE,CAAC;gBACH,CAAC;gBAED,oFAAoF;gBACpF,IAAI,YAAY,CAAC,eAAe,CAAC,WAAW,EAAE,CAAC;oBAC7C,KAAK,MAAM,WAAW,IAAI,uBAAuB,EAAE,CAAC;wBAClD,MAAM,IAAI,CAAC,eAAe,CAAC;4BACzB,SAAS,EAAE,YAAY,CAAC,eAAe,CAAC,SAAS;4BACjD,WAAW;4BACX,MAAM,EAAE,WAAW;4BACnB,kBAAkB,EAAE,YAAY,CAAC,MAAM;yBACxC,CAAC,CAAC;oBACL,CAAC;gBACH,CAAC;gBACD,4CAA4C;gBAC5C,OAAO;YACT,CAAC;YAED,uEAAuE;YACvE,IAAI,YAAY,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC;gBACzB,MAAM,qBAAqB,GAAsB;oBAC/C,GAAG,YAAY;oBACf,GAAG,EAAE,YAAY,CAAC,GAAG,GAAG,CAAC;iBAC1B,CAAC;gBACF,IAAI,CAAC,iBAAiB,CAAC,qBAAqB,CAAC,CAAC;YAChD,CAAC;YACD,OAAO;QACT,CAAC;QAED,wFAAwF;QACxF,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YACpC,IAAI,CAAC;gBACH,OAAO,CAAC,YAAY,CAAC,CAAC;YACxB,CAAC;YAAC,MAAM,CAAC;gBACP,qEAAqE;YACvE,CAAC;QACH,CAAC;QAED,0CAA0C;QAC1C,IAAI,YAAY,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC;YACzB,MAAM,qBAAqB,GAAsB;gBAC/C,GAAG,YAAY;gBACf,GAAG,EAAE,YAAY,CAAC,GAAG,GAAG,CAAC;aAC1B,CAAC;YAEF,IAAI,CAAC,iBAAiB,CAAC,qBAAqB,CAAC,CAAC;QAChD,CAAC;IACH,CAAC;IAED;;;;;OAKG;IACH,cAAc,CAAC,OAA4B;QACzC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IAC7B,CAAC;IAED;;;;OAIG;IACH,eAAe,CAAC,OAA4B;QAC1C,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAChC,CAAC;IAED;;;;;OAKG;IACH,uBAAuB;QACrB,OAAO,CAAC,GAAG,IAAI,CAAC,oBAAoB,CAAC,CAAC;IACxC,CAAC;IAED;;;;;;;;;OASG;IACH,KAAK,CAAC,kBAAkB;QACtB,IAAI,IAAI,CAAC,oBAAoB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC3C,OAAO;QACT,CAAC;QAED,sBAAsB;QACtB,MAAM,cAAc,GAAG,IAAI,CAAC,YAAY,CAAC,mBAAmB,EAAE,CAAC;QAC/D,IAAI,cAAc,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAChC,qCAAqC;YACrC,IAAI,CAAC,oBAAoB,GAAG,EAAE,CAAC;YAC/B,OAAO;QACT,CAAC;QAED,+CAA+C;QAC/C,MAAM,YAAY,GAAG,IAAI,GAAG,EAA+B,CAAC;QAE5D,KAAK,MAAM,YAAY,IAAI,IAAI,CAAC,oBAAoB,EAAE,CAAC;YACrD,IAAI,MAAc,CAAC;YAEnB,IAAI,YAAY,CAAC,eAAe,EAAE,CAAC;gBACjC,sDAAsD;gBACtD,MAAM,cAAc,GAClB,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,YAAY,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;gBACrE,MAAM,GAAG,cAAc,CAAC,MAAM,CAAC;YACjC,CAAC;iBAAM,CAAC;gBACN,6DAA6D;gBAC7D,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;YAC9B,CAAC;YAED,MAAM,KAAK,GAAG,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YACvC,IAAI,KAAK,EAAE,CAAC;gBACV,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YAC3B,CAAC;iBAAM,CAAC;gBACN,YAAY,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC;YAC3C,CAAC;QACH,CAAC;QAED,4DAA4D;QAC5D,IAAI,CAAC,oBAAoB,GAAG,EAAE,CAAC;QAE/B,4DAA4D;QAC5D,MAAM,YAAY,GAAoB,EAAE,CAAC;QAEzC,KAAK,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,IAAI,YAAY,EAAE,CAAC;YACnD,MAAM,aAAa,GAAG,IAAI,CAAC,iBAAiB,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC;YACrE,MAAM,OAAO,GAAG,IAAI,CAAC,gBAAgB,CACnC,aAAa,EACb,IAAI,CAAC,MAAM,CAAC,YAAY,CACzB,CAAC;YAEF,KAAK,MAAM,MAAM,IAAI,aAAa,EAAE,CAAC;gBACnC,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;oBAC5B,YAAY,CAAC,IAAI,CACf,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE;wBAC7C,4CAA4C;oBAC9C,CAAC,CAAC,CACH,CAAC;gBACJ,CAAC;YACH,CAAC;QACH,CAAC;QAED,MAAM,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;IAClC,CAAC;IAED;;OAEG;IACH,KAAK;QACH,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACjB,OAAO;QACT,CAAC;QAED,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QACpB,IAAI,CAAC,UAAU,GAAG,WAAW,CAAC,GAAG,EAAE;YACjC,IAAI,CAAC,kBAAkB,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE;gBACnC,sBAAsB;YACxB,CAAC,CAAC,CAAC;QACL,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC;IAClC,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,IAAI;QACR,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;YAClB,OAAO;QACT,CAAC;QAED,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;QAErB,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YACpB,aAAa,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YAC/B,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;QACzB,CAAC;QAED,oCAAoC;QACpC,MAAM,IAAI,CAAC,kBAAkB,EAAE,CAAC;IAClC,CAAC;IAED;;;;OAIG;IACH,SAAS;QACP,OAAO,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;IAC5B,CAAC;IAED;;;;OAIG;IACK,iBAAiB,CAAC,YAA+B;QACvD,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QAE7C,qDAAqD;QACrD,IAAI,IAAI,CAAC,oBAAoB,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC;YACjE,IAAI,CAAC,kBAAkB,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE;gBACnC,sBAAsB;YACxB,CAAC,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED;;;;;;;OAOG;IACK,iBAAiB,CAAC,KAAe,EAAE,KAAa;QACtD,IAAI,KAAK,CAAC,MAAM,IAAI,KAAK,EAAE,CAAC;YAC1B,OAAO,CAAC,GAAG,KAAK,CAAC,CAAC;QACpB,CAAC;QAED,uDAAuD;QACvD,MAAM,QAAQ,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC;QAC5B,KAAK,IAAI,CAAC,GAAG,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;YAC7C,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YAC9C,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;QAC1D,CAAC;QAED,OAAO,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;IAClC,CAAC;IAED;;;;;;;OAOG;IACK,gBAAgB,CACtB,aAAkC,EAClC,OAAe;QAEf,MAAM,OAAO,GAA0B,EAAE,CAAC;QAE1C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,aAAa,CAAC,MAAM,EAAE,CAAC,IAAI,OAAO,EAAE,CAAC;YACvD,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;QACpD,CAAC;QAED,OAAO,OAAO,CAAC;IACjB,CAAC;IAED;;;;;;OAMG;IACK,8BAA8B,CACpC,aAAkC;QAElC,OAAO,aAAa,CAAC,IAAI,CACvB,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,eAAe,KAAK,SAAS,IAAI,CAAC,CAAC,WAAW,KAAK,SAAS,CACtE,CAAC;IACJ,CAAC;IAED;;;;;;;;;OASG;IACK,KAAK,CAAC,mBAAmB,CAC/B,aAAkC,EAClC,aAAqB;QAErB,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;YACvB,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAC;QAC7D,CAAC;QACD,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CACzB,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YACxB,IAAI,EAAE,CAAC,CAAC,IAAI;YACZ,OAAO,EAAE,CAAC,CAAC,OAAO;YAClB,MAAM,EAAE,CAAC,CAAC,MAAM;YAChB,GAAG,EAAE,CAAC,CAAC,GAAG;YACV,GAAG,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,EAAE,eAAe,EAAE,CAAC,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACpE,GAAG,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SACzD,CAAC,CAAC,CACJ,CAAC;QACF,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QAC7C,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,iBAAiB,CAC1D,aAAa,EACb,SAAS,CACV,CAAC;QACF,OAAO,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IACpD,CAAC;IAED;;;;;;;;;;OAUG;IACK,KAAK,CAAC,eAAe,CAC3B,MAAc,EACd,KAA0B;QAE1B,MAAM,WAAW,GAAG,IAAI,CAAC,8BAA8B,CAAC,KAAK,CAAC,CAAC;QAE/D,IAAI,WAAW,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;YACrC,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;YAEjE,IAAI,OAAO,EAAE,CAAC;gBACZ,0CAA0C;gBAC1C,MAAM,gBAAgB,GAAG,MAAM,IAAI,CAAC,mBAAmB,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;gBACxE,MAAM,IAAI,CAAC,YAAY,CAAC,qBAAqB,CAAC,MAAM,EAAE,EAAE,EAAE;oBACxD,gBAAgB;oBAChB,YAAY,EAAE,IAAI,CAAC,YAAY,CAAC,cAAc,EAAE;iBACjD,CAAC,CAAC;gBACH,OAAO;YACT,CAAC;YAED,iEAAiE;YACjE,OAAO,CAAC,IAAI,CACV,gEAAgE,MAAM,4BAA4B,CACnG,CAAC;QACJ,CAAC;QAED,4CAA4C;QAC5C,MAAM,IAAI,CAAC,YAAY,CAAC,qBAAqB,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IAC/D,CAAC;IAED;;OAEG;IACH,YAAY;QACV,IAAI,CAAC,oBAAoB,GAAG,EAAE,CAAC;IACjC,CAAC;IAED;;;;;;;;OAQG;IACH,KAAK,CAAC,eAAe,CACnB,QAAkB,EAClB,QAAiC;QAEjC,2EAA2E;QAC3E,MAAM,cAAc,GAAG,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;QACtE,MAAM,GAAG,GAAG,cAAc,CAAC,GAAG,CAAC;QAE/B,8CAA8C;QAC9C,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;YAC/B,MAAM,YAAY,GAAsB;gBACtC,IAAI,EAAE,KAAK;gBACX,OAAO;gBACP,MAAM,EAAE,IAAI,CAAC,YAAY,CAAC,cAAc,EAAE;gBAC1C,SAAS,EAAE,IAAI,IAAI,EAAE;gBACrB,GAAG;gBACH,eAAe,EAAE,QAAQ;aAC1B,CAAC;YAEF,IAAI,CAAC,iBAAiB,CAAC,YAAY,CAAC,CAAC;QACvC,CAAC;IACH,CAAC;IAED;;;;;;OAMG;IACH,KAAK,CAAC,eAAe,CAAC,GAAwB;QAC5C,MAAM,YAAY,GAAsB;YACtC,IAAI,EAAE,KAAK;YACX,OAAO,EAAE,GAAG,CAAC,SAAS;YACtB,MAAM,EAAE,IAAI,CAAC,YAAY,CAAC,cAAc,EAAE;YAC1C,SAAS,EAAE,IAAI,IAAI,EAAE;YACrB,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,UAAU;YAC3B,WAAW,EAAE,GAAG;SACjB,CAAC;QAEF,IAAI,CAAC,iBAAiB,CAAC,YAAY,CAAC,CAAC;IACvC,CAAC;IAED;;;;;;;OAOG;IACH,iBAAiB,CAAC,OAAkD;QAClE,IAAI,CAAC,uBAAuB,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IAC5C,CAAC;IAED;;;;OAIG;IACH,kBAAkB,CAAC,OAAkD;QACnE,IAAI,CAAC,uBAAuB,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAC/C,CAAC;IAED;;;;;;OAMG;IACH,aAAa,CAAC,OAAkD;QAC9D,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IACxC,CAAC;IAED;;;;OAIG;IACH,cAAc,CAAC,OAAkD;QAC/D,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAC3C,CAAC;CACF;AA5lBD,sCA4lBC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"blocks.d.ts","sourceRoot":"","sources":["../../../../../../brightchain-api-lib/src/lib/controllers/api/blocks.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAC7D,OAAO,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAC7D,OAAO,EACL,gBAAgB,EAChB,iBAAiB,
|
|
1
|
+
{"version":3,"file":"blocks.d.ts","sourceRoot":"","sources":["../../../../../../brightchain-api-lib/src/lib/controllers/api/blocks.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAC7D,OAAO,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAC7D,OAAO,EACL,gBAAgB,EAChB,iBAAiB,EAEjB,aAAa,EAEd,MAAM,qCAAqC,CAAC;AAC7C,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AAQvE,OAAO,EACL,sBAAsB,EACtB,oBAAoB,EACpB,yBAAyB,EACzB,iBAAiB,EACjB,mBAAmB,EACpB,MAAM,iCAAiC,CAAC;AAGzC,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAQ1D,OAAO,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAGzC;;;GAGG;AACH,oBAAY,cAAc;IACxB,eAAe,oBAAoB;IACnC,uBAAuB,4BAA4B;IACnD,mBAAmB,wBAAwB;IAC3C,0BAA0B,+BAA+B;IACzD,oBAAoB,yBAAyB;IAC7C,gBAAgB,qBAAqB;IACrC,YAAY,iBAAiB;IAC7B,cAAc,mBAAmB;CAClC;AAED,KAAK,gBAAgB,GACjB,mBAAmB,GACnB,iBAAiB,GACjB,yBAAyB,GACzB,oBAAoB,GACpB,sBAAsB,GACtB,gBAAgB,CAAC;AAErB,UAAU,cAAe,SAAQ,aAAa;IAC5C,UAAU,EAAE,iBAAiB,CAAC,mBAAmB,GAAG,gBAAgB,CAAC,CAAC;IACtE,QAAQ,EAAE,iBAAiB,CAAC,iBAAiB,GAAG,gBAAgB,CAAC,CAAC;IAClE,gBAAgB,EAAE,iBAAiB,CACjC,yBAAyB,GAAG,gBAAgB,CAC7C,CAAC;IACF,WAAW,EAAE,iBAAiB,CAAC,oBAAoB,GAAG,gBAAgB,CAAC,CAAC;IACxE,aAAa,EAAE,iBAAiB,CAAC,sBAAsB,GAAG,gBAAgB,CAAC,CAAC;CAC7E;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuDG;AACH,qBAAa,gBAAgB,CAC3B,GAAG,SAAS,UAAU,GAAG,oBAAoB,CAC7C,SAAQ,cAAc,CACtB,GAAG,EACH,gBAAgB,EAChB,cAAc,EACd,gBAAgB,CACjB;IACC,OAAO,CAAC,aAAa,CAAgB;gBAEzB,WAAW,EAAE,uBAAuB,CAAC,GAAG,CAAC;IAOrD,SAAS,CAAC,oBAAoB,IAAI,IAAI;IAyGtC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAqCG;IACH,OAAO,CAAC,gBAAgB,CA+DtB;IAEF;;;;;;;;;;;;;;;;;;;;;;;;OAwBG;IACH,OAAO,CAAC,cAAc,CA4BpB;IAEF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA+BG;IACH,OAAO,CAAC,sBAAsB,CA6B5B;IAEF;;;;;;;;;;;;;;;;;;;;;;;OAuBG;IACH,OAAO,CAAC,iBAAiB,CAyBvB;IAEF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA6BG;IACH,OAAO,CAAC,mBAAmB,CAoCzB;CACH"}
|
|
@@ -379,28 +379,90 @@ class BlocksController extends base_1.BaseController {
|
|
|
379
379
|
useAuthentication: true,
|
|
380
380
|
useCryptoAuthentication: false,
|
|
381
381
|
handlerKey: 'storeBlock',
|
|
382
|
+
openapi: {
|
|
383
|
+
summary: 'Store a block',
|
|
384
|
+
description: 'Store a new block with optional durability settings.',
|
|
385
|
+
tags: ['Blocks'],
|
|
386
|
+
requestBody: {
|
|
387
|
+
schema: 'StoreBlockRequest',
|
|
388
|
+
example: {
|
|
389
|
+
data: 'SGVsbG8gV29ybGQ=',
|
|
390
|
+
options: { durabilityLevel: 'standard' },
|
|
391
|
+
},
|
|
392
|
+
},
|
|
393
|
+
responses: {
|
|
394
|
+
200: { schema: 'StoreBlockResponse', description: 'Block stored' },
|
|
395
|
+
},
|
|
396
|
+
},
|
|
382
397
|
}),
|
|
383
398
|
(0, node_express_suite_1.routeConfig)('get', '/:blockId', {
|
|
384
399
|
handlerKey: 'getBlock',
|
|
385
400
|
useAuthentication: true,
|
|
386
401
|
useCryptoAuthentication: false,
|
|
402
|
+
openapi: {
|
|
403
|
+
summary: 'Get block by ID',
|
|
404
|
+
description: 'Retrieve a block by its ID.',
|
|
405
|
+
tags: ['Blocks'],
|
|
406
|
+
responses: {
|
|
407
|
+
200: { schema: 'GetBlockResponse', description: 'Block retrieved' },
|
|
408
|
+
404: { schema: 'ErrorResponse', description: 'Block not found' },
|
|
409
|
+
},
|
|
410
|
+
},
|
|
387
411
|
}),
|
|
388
412
|
(0, node_express_suite_1.routeConfig)('get', '/:blockId/metadata', {
|
|
389
413
|
handlerKey: 'getBlockMetadata',
|
|
390
414
|
useAuthentication: true,
|
|
391
415
|
useCryptoAuthentication: false,
|
|
416
|
+
openapi: {
|
|
417
|
+
summary: 'Get block metadata',
|
|
418
|
+
description: 'Get metadata for a block without retrieving the data.',
|
|
419
|
+
tags: ['Blocks'],
|
|
420
|
+
responses: {
|
|
421
|
+
200: {
|
|
422
|
+
schema: 'GetBlockMetadataResponse',
|
|
423
|
+
description: 'Metadata retrieved',
|
|
424
|
+
},
|
|
425
|
+
404: { schema: 'ErrorResponse', description: 'Block not found' },
|
|
426
|
+
},
|
|
427
|
+
},
|
|
392
428
|
}),
|
|
393
429
|
(0, node_express_suite_1.routeConfig)('delete', '/:blockId', {
|
|
394
430
|
handlerKey: 'deleteBlock',
|
|
395
431
|
useAuthentication: true,
|
|
396
432
|
useCryptoAuthentication: false,
|
|
433
|
+
openapi: {
|
|
434
|
+
summary: 'Delete block',
|
|
435
|
+
description: 'Delete a block and its parity blocks.',
|
|
436
|
+
tags: ['Blocks'],
|
|
437
|
+
responses: {
|
|
438
|
+
200: { description: 'Block deleted' },
|
|
439
|
+
404: { schema: 'ErrorResponse', description: 'Block not found' },
|
|
440
|
+
},
|
|
441
|
+
},
|
|
397
442
|
}),
|
|
398
443
|
(0, node_express_suite_1.routeConfig)('post', '/brighten', {
|
|
399
444
|
handlerKey: 'brightenBlock',
|
|
400
445
|
useAuthentication: true,
|
|
401
446
|
useCryptoAuthentication: false,
|
|
447
|
+
openapi: {
|
|
448
|
+
summary: 'Brighten a block',
|
|
449
|
+
description: 'XOR a block with random blocks for Owner-Free storage.',
|
|
450
|
+
tags: ['Blocks'],
|
|
451
|
+
requestBody: {
|
|
452
|
+
schema: 'BrightenBlockRequest',
|
|
453
|
+
example: { blockId: 'abc123...', randomBlockCount: 3 },
|
|
454
|
+
},
|
|
455
|
+
responses: {
|
|
456
|
+
200: {
|
|
457
|
+
schema: 'BrightenBlockResponse',
|
|
458
|
+
description: 'Block brightened',
|
|
459
|
+
},
|
|
460
|
+
},
|
|
461
|
+
},
|
|
402
462
|
}),
|
|
403
463
|
];
|
|
464
|
+
// Register with OpenAPI registry
|
|
465
|
+
node_express_suite_1.ControllerRegistry.register('/blocks', 'BlocksController', this.routeDefinitions);
|
|
404
466
|
this.handlers = {
|
|
405
467
|
storeBlock: this.handleStoreBlock.bind(this),
|
|
406
468
|
getBlock: this.handleGetBlock.bind(this),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"blocks.js","sourceRoot":"","sources":["../../../../../../brightchain-api-lib/src/lib/controllers/api/blocks.ts"],"names":[],"mappings":";;;AAAA,uDAAuD;AACvD,kEAIsC;AAGtC,
|
|
1
|
+
{"version":3,"file":"blocks.js","sourceRoot":"","sources":["../../../../../../brightchain-api-lib/src/lib/controllers/api/blocks.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import { CoreLanguageCode } from '@digitaldefiance/i18n-lib';
|
|
2
|
+
import { PlatformID } from '@digitaldefiance/node-ecies-lib';
|
|
3
|
+
import { ApiErrorResponse, ApiRequestHandler, IApiMessageResponse, TypedHandlers } from '@digitaldefiance/node-express-suite';
|
|
4
|
+
import { IBrightChainApplication } from '../../interfaces/application';
|
|
5
|
+
import '../../openapi/schemas';
|
|
6
|
+
import { DefaultBackendIdType } from '../../shared-types';
|
|
7
|
+
import { BaseController } from '../base';
|
|
8
|
+
/**
|
|
9
|
+
* OpenAPI specification response
|
|
10
|
+
*/
|
|
11
|
+
export interface IOpenAPIResponse extends IApiMessageResponse {
|
|
12
|
+
openapi: string;
|
|
13
|
+
info: {
|
|
14
|
+
title: string;
|
|
15
|
+
version: string;
|
|
16
|
+
description: string;
|
|
17
|
+
};
|
|
18
|
+
servers: Array<{
|
|
19
|
+
url: string;
|
|
20
|
+
description: string;
|
|
21
|
+
}>;
|
|
22
|
+
paths: Record<string, any>;
|
|
23
|
+
components: {
|
|
24
|
+
schemas: Record<string, any>;
|
|
25
|
+
securitySchemes: Record<string, any>;
|
|
26
|
+
};
|
|
27
|
+
[key: string]: unknown;
|
|
28
|
+
}
|
|
29
|
+
type DocsApiResponse = IOpenAPIResponse | ApiErrorResponse;
|
|
30
|
+
interface DocsHandlers extends TypedHandlers {
|
|
31
|
+
getDocs: ApiRequestHandler<IOpenAPIResponse | ApiErrorResponse>;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Controller for API documentation endpoint.
|
|
35
|
+
*
|
|
36
|
+
* Provides the OpenAPI specification for the BrightChain API.
|
|
37
|
+
* The specification is built dynamically from registered controllers
|
|
38
|
+
* using their route definitions and OpenAPI metadata.
|
|
39
|
+
*
|
|
40
|
+
* ## Endpoints
|
|
41
|
+
*
|
|
42
|
+
* ### GET /api/docs
|
|
43
|
+
* Returns the OpenAPI specification in JSON format.
|
|
44
|
+
*
|
|
45
|
+
* **Response:**
|
|
46
|
+
* - OpenAPI 3.0.3 specification with all endpoints
|
|
47
|
+
* - Request/response schemas for each endpoint
|
|
48
|
+
* - Authentication requirements per endpoint
|
|
49
|
+
* - Example requests and responses
|
|
50
|
+
*
|
|
51
|
+
* @requirements 10.1, 10.2, 10.3, 10.4
|
|
52
|
+
*/
|
|
53
|
+
export declare class DocsController<TID extends PlatformID = DefaultBackendIdType> extends BaseController<TID, DocsApiResponse, DocsHandlers, CoreLanguageCode> {
|
|
54
|
+
private static readonly API_VERSION;
|
|
55
|
+
private readonly builder;
|
|
56
|
+
constructor(application: IBrightChainApplication<TID>);
|
|
57
|
+
protected initRouteDefinitions(): void;
|
|
58
|
+
/**
|
|
59
|
+
* GET /api/docs
|
|
60
|
+
* Returns the OpenAPI specification in JSON format.
|
|
61
|
+
*
|
|
62
|
+
* @requirements 10.1, 10.2, 10.3, 10.4
|
|
63
|
+
*/
|
|
64
|
+
private handleGetDocs;
|
|
65
|
+
}
|
|
66
|
+
export {};
|
|
67
|
+
//# sourceMappingURL=docs.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"docs.d.ts","sourceRoot":"","sources":["../../../../../../brightchain-api-lib/src/lib/controllers/api/docs.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAC7D,OAAO,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAC7D,OAAO,EACL,gBAAgB,EAChB,iBAAiB,EAEjB,mBAAmB,EAGnB,aAAa,EAEd,MAAM,qCAAqC,CAAC;AAC7C,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AAEvE,OAAO,uBAAuB,CAAC;AAC/B,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAEzC;;GAEG;AACH,MAAM,WAAW,gBAAiB,SAAQ,mBAAmB;IAC3D,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE;QACJ,KAAK,EAAE,MAAM,CAAC;QACd,OAAO,EAAE,MAAM,CAAC;QAChB,WAAW,EAAE,MAAM,CAAC;KACrB,CAAC;IACF,OAAO,EAAE,KAAK,CAAC;QACb,GAAG,EAAE,MAAM,CAAC;QACZ,WAAW,EAAE,MAAM,CAAC;KACrB,CAAC,CAAC;IACH,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC3B,UAAU,EAAE;QACV,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;QAC7B,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;KACtC,CAAC;IACF,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,KAAK,eAAe,GAAG,gBAAgB,GAAG,gBAAgB,CAAC;AAE3D,UAAU,YAAa,SAAQ,aAAa;IAC1C,OAAO,EAAE,iBAAiB,CAAC,gBAAgB,GAAG,gBAAgB,CAAC,CAAC;CACjE;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,qBAAa,cAAc,CACzB,GAAG,SAAS,UAAU,GAAG,oBAAoB,CAC7C,SAAQ,cAAc,CAAC,GAAG,EAAE,eAAe,EAAE,YAAY,EAAE,gBAAgB,CAAC;IAC5E,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAY;IAC/C,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAiB;gBAE7B,WAAW,EAAE,uBAAuB,CAAC,GAAG,CAAC;IAYrD,SAAS,CAAC,oBAAoB,IAAI,IAAI;IAgCtC;;;;;OAKG;YACW,aAAa;CAiB5B"}
|