@brightchain/brightchain-api-lib 0.12.0 → 0.13.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/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/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/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
|
@@ -0,0 +1,378 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.NodesController = void 0;
|
|
4
|
+
const brightchain_lib_1 = require("@brightchain/brightchain-lib");
|
|
5
|
+
const node_express_suite_1 = require("@digitaldefiance/node-express-suite");
|
|
6
|
+
const errorResponse_1 = require("../../utils/errorResponse");
|
|
7
|
+
const base_1 = require("../base");
|
|
8
|
+
/**
|
|
9
|
+
* Controller for node discovery and network management operations.
|
|
10
|
+
*
|
|
11
|
+
* Provides REST API endpoints for listing connected nodes, getting node details,
|
|
12
|
+
* discovering blocks across the network, and registering nodes for WebSocket authentication.
|
|
13
|
+
*
|
|
14
|
+
* ## Endpoints
|
|
15
|
+
*
|
|
16
|
+
* ### GET /api/nodes
|
|
17
|
+
* List all connected peer nodes with their status and capabilities.
|
|
18
|
+
*
|
|
19
|
+
* **Response:**
|
|
20
|
+
* - `nodes` (array): Array of node information objects
|
|
21
|
+
* - `total` (number): Total number of connected nodes
|
|
22
|
+
*
|
|
23
|
+
* ### GET /api/nodes/:nodeId
|
|
24
|
+
* Get detailed information about a specific node.
|
|
25
|
+
*
|
|
26
|
+
* **Parameters:**
|
|
27
|
+
* - `nodeId` (string, required): Node ID to retrieve
|
|
28
|
+
*
|
|
29
|
+
* **Response:**
|
|
30
|
+
* - `node` (object): Node information including latency and last seen timestamp
|
|
31
|
+
*
|
|
32
|
+
* ### POST /api/nodes/discover
|
|
33
|
+
* Discover nodes that have a specific block.
|
|
34
|
+
*
|
|
35
|
+
* **Request Body:**
|
|
36
|
+
* - `blockId` (string, required): Block ID to discover
|
|
37
|
+
*
|
|
38
|
+
* **Response:**
|
|
39
|
+
* - `blockId` (string): The block ID that was searched for
|
|
40
|
+
* - `found` (boolean): Whether the block was found
|
|
41
|
+
* - `locations` (array): Nodes where the block was found
|
|
42
|
+
* - `queriedPeers` (number): Number of peers queried
|
|
43
|
+
* - `duration` (number): Discovery duration in milliseconds
|
|
44
|
+
*
|
|
45
|
+
* ### POST /api/nodes/register
|
|
46
|
+
* Register a node's public key for WebSocket authentication.
|
|
47
|
+
*
|
|
48
|
+
* **Request Body:**
|
|
49
|
+
* - `nodeId` (string, required): Node ID to register
|
|
50
|
+
* - `publicKey` (string, required): Public key for authentication
|
|
51
|
+
*
|
|
52
|
+
* **Response:**
|
|
53
|
+
* - `success` (boolean): Whether registration succeeded
|
|
54
|
+
* - `nodeId` (string): The registered node ID
|
|
55
|
+
* - `message` (string): Status message
|
|
56
|
+
*
|
|
57
|
+
* @requirements 3.1, 3.2, 3.3, 3.4, 3.5
|
|
58
|
+
*/
|
|
59
|
+
class NodesController extends base_1.BaseController {
|
|
60
|
+
constructor(application) {
|
|
61
|
+
super(application);
|
|
62
|
+
this.discoveryProtocol = null;
|
|
63
|
+
this.availabilityService = null;
|
|
64
|
+
/**
|
|
65
|
+
* Store for registered node public keys (nodeId -> publicKey)
|
|
66
|
+
*/
|
|
67
|
+
this.registeredNodes = new Map();
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Set the DiscoveryProtocol instance.
|
|
71
|
+
* This allows for dependency injection and testing.
|
|
72
|
+
*/
|
|
73
|
+
setDiscoveryProtocol(protocol) {
|
|
74
|
+
this.discoveryProtocol = protocol;
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* Set the AvailabilityService instance.
|
|
78
|
+
* This allows for dependency injection and testing.
|
|
79
|
+
*/
|
|
80
|
+
setAvailabilityService(service) {
|
|
81
|
+
this.availabilityService = service;
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* Get the DiscoveryProtocol instance.
|
|
85
|
+
* Throws if the protocol has not been set.
|
|
86
|
+
*/
|
|
87
|
+
getDiscoveryProtocol() {
|
|
88
|
+
if (!this.discoveryProtocol) {
|
|
89
|
+
throw new Error('DiscoveryProtocol not initialized');
|
|
90
|
+
}
|
|
91
|
+
return this.discoveryProtocol;
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* Get the AvailabilityService instance.
|
|
95
|
+
* Throws if the service has not been set.
|
|
96
|
+
*/
|
|
97
|
+
getAvailabilityService() {
|
|
98
|
+
if (!this.availabilityService) {
|
|
99
|
+
throw new Error('AvailabilityService not initialized');
|
|
100
|
+
}
|
|
101
|
+
return this.availabilityService;
|
|
102
|
+
}
|
|
103
|
+
/**
|
|
104
|
+
* Check if a node is registered.
|
|
105
|
+
* @param nodeId - The node ID to check
|
|
106
|
+
* @returns True if the node is registered
|
|
107
|
+
*/
|
|
108
|
+
isNodeRegistered(nodeId) {
|
|
109
|
+
return this.registeredNodes.has(nodeId);
|
|
110
|
+
}
|
|
111
|
+
/**
|
|
112
|
+
* Get the public key for a registered node.
|
|
113
|
+
* @param nodeId - The node ID to get the public key for
|
|
114
|
+
* @returns The public key or undefined if not registered
|
|
115
|
+
*/
|
|
116
|
+
getNodePublicKey(nodeId) {
|
|
117
|
+
return this.registeredNodes.get(nodeId);
|
|
118
|
+
}
|
|
119
|
+
/**
|
|
120
|
+
* Clear all registered nodes (for testing).
|
|
121
|
+
*/
|
|
122
|
+
clearRegisteredNodes() {
|
|
123
|
+
this.registeredNodes.clear();
|
|
124
|
+
}
|
|
125
|
+
initRouteDefinitions() {
|
|
126
|
+
this.routeDefinitions = [
|
|
127
|
+
(0, node_express_suite_1.routeConfig)('get', '/', {
|
|
128
|
+
handlerKey: 'listNodes',
|
|
129
|
+
useAuthentication: false,
|
|
130
|
+
useCryptoAuthentication: false,
|
|
131
|
+
}),
|
|
132
|
+
(0, node_express_suite_1.routeConfig)('get', '/:nodeId', {
|
|
133
|
+
handlerKey: 'getNode',
|
|
134
|
+
useAuthentication: false,
|
|
135
|
+
useCryptoAuthentication: false,
|
|
136
|
+
}),
|
|
137
|
+
(0, node_express_suite_1.routeConfig)('post', '/discover', {
|
|
138
|
+
handlerKey: 'discoverBlock',
|
|
139
|
+
useAuthentication: false,
|
|
140
|
+
useCryptoAuthentication: false,
|
|
141
|
+
}),
|
|
142
|
+
(0, node_express_suite_1.routeConfig)('post', '/register', {
|
|
143
|
+
handlerKey: 'registerNode',
|
|
144
|
+
useAuthentication: false,
|
|
145
|
+
useCryptoAuthentication: false,
|
|
146
|
+
}),
|
|
147
|
+
];
|
|
148
|
+
this.handlers = {
|
|
149
|
+
listNodes: this.handleListNodes.bind(this),
|
|
150
|
+
getNode: this.handleGetNode.bind(this),
|
|
151
|
+
discoverBlock: this.handleDiscoverBlock.bind(this),
|
|
152
|
+
registerNode: this.handleRegisterNode.bind(this),
|
|
153
|
+
};
|
|
154
|
+
}
|
|
155
|
+
/**
|
|
156
|
+
* Convert ILocationRecord to node info format
|
|
157
|
+
*/
|
|
158
|
+
locationToNodeInfo(location) {
|
|
159
|
+
return {
|
|
160
|
+
nodeId: location.nodeId,
|
|
161
|
+
status: brightchain_lib_1.NodeStatus.ONLINE,
|
|
162
|
+
capabilities: ['block_storage'],
|
|
163
|
+
lastSeen: location.lastSeen.toISOString(),
|
|
164
|
+
latencyMs: location.latencyMs,
|
|
165
|
+
};
|
|
166
|
+
}
|
|
167
|
+
/**
|
|
168
|
+
* GET /api/nodes
|
|
169
|
+
* List all connected peer nodes with their status and capabilities.
|
|
170
|
+
*
|
|
171
|
+
* @returns List of connected nodes
|
|
172
|
+
* @requirements 3.1
|
|
173
|
+
*/
|
|
174
|
+
async handleListNodes() {
|
|
175
|
+
try {
|
|
176
|
+
// Get nodes from availability service if available
|
|
177
|
+
const availabilityService = this.availabilityService;
|
|
178
|
+
const nodes = [];
|
|
179
|
+
if (availabilityService) {
|
|
180
|
+
// Get the local node ID
|
|
181
|
+
const localNodeId = availabilityService.getLocalNodeId();
|
|
182
|
+
// Add local node
|
|
183
|
+
if (localNodeId) {
|
|
184
|
+
nodes.push({
|
|
185
|
+
nodeId: localNodeId,
|
|
186
|
+
status: brightchain_lib_1.NodeStatus.ONLINE,
|
|
187
|
+
capabilities: ['block_storage', 'message_routing'],
|
|
188
|
+
lastSeen: new Date().toISOString(),
|
|
189
|
+
});
|
|
190
|
+
}
|
|
191
|
+
// Get disconnected peers if in partition mode
|
|
192
|
+
if (availabilityService.isInPartitionMode()) {
|
|
193
|
+
const disconnectedPeers = availabilityService.getDisconnectedPeers();
|
|
194
|
+
for (const peerId of disconnectedPeers) {
|
|
195
|
+
nodes.push({
|
|
196
|
+
nodeId: peerId,
|
|
197
|
+
status: brightchain_lib_1.NodeStatus.UNREACHABLE,
|
|
198
|
+
capabilities: ['block_storage'],
|
|
199
|
+
lastSeen: new Date().toISOString(),
|
|
200
|
+
});
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
// Add registered nodes that aren't already in the list
|
|
205
|
+
for (const [nodeId, publicKey] of this.registeredNodes) {
|
|
206
|
+
if (!nodes.some((n) => n.nodeId === nodeId)) {
|
|
207
|
+
nodes.push({
|
|
208
|
+
nodeId,
|
|
209
|
+
publicKey,
|
|
210
|
+
status: brightchain_lib_1.NodeStatus.ONLINE,
|
|
211
|
+
capabilities: ['block_storage'],
|
|
212
|
+
lastSeen: new Date().toISOString(),
|
|
213
|
+
});
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
return {
|
|
217
|
+
statusCode: 200,
|
|
218
|
+
response: {
|
|
219
|
+
message: 'OK',
|
|
220
|
+
nodes,
|
|
221
|
+
total: nodes.length,
|
|
222
|
+
},
|
|
223
|
+
};
|
|
224
|
+
}
|
|
225
|
+
catch (_error) {
|
|
226
|
+
return (0, errorResponse_1.handleError)(_error);
|
|
227
|
+
}
|
|
228
|
+
}
|
|
229
|
+
/**
|
|
230
|
+
* GET /api/nodes/:nodeId
|
|
231
|
+
* Get detailed information about a specific node.
|
|
232
|
+
*
|
|
233
|
+
* @param req - Request containing the node ID parameter
|
|
234
|
+
* @returns Node information on success, or 404 if not found
|
|
235
|
+
* @requirements 3.2, 3.5
|
|
236
|
+
*/
|
|
237
|
+
async handleGetNode(req) {
|
|
238
|
+
try {
|
|
239
|
+
const { nodeId } = req.params;
|
|
240
|
+
if (!nodeId) {
|
|
241
|
+
return (0, errorResponse_1.validationError)('Missing required parameter: nodeId');
|
|
242
|
+
}
|
|
243
|
+
// Check if node is registered
|
|
244
|
+
const publicKey = this.registeredNodes.get(nodeId);
|
|
245
|
+
// Check availability service for node info
|
|
246
|
+
const availabilityService = this.availabilityService;
|
|
247
|
+
let status = brightchain_lib_1.NodeStatus.ONLINE;
|
|
248
|
+
if (availabilityService) {
|
|
249
|
+
const localNodeId = availabilityService.getLocalNodeId();
|
|
250
|
+
if (nodeId === localNodeId) {
|
|
251
|
+
return {
|
|
252
|
+
statusCode: 200,
|
|
253
|
+
response: {
|
|
254
|
+
message: 'OK',
|
|
255
|
+
node: {
|
|
256
|
+
nodeId,
|
|
257
|
+
publicKey,
|
|
258
|
+
status: brightchain_lib_1.NodeStatus.ONLINE,
|
|
259
|
+
capabilities: ['block_storage', 'message_routing'],
|
|
260
|
+
lastSeen: new Date().toISOString(),
|
|
261
|
+
},
|
|
262
|
+
},
|
|
263
|
+
};
|
|
264
|
+
}
|
|
265
|
+
// Check if node is in disconnected peers
|
|
266
|
+
if (availabilityService.isInPartitionMode()) {
|
|
267
|
+
const disconnectedPeers = availabilityService.getDisconnectedPeers();
|
|
268
|
+
if (disconnectedPeers.includes(nodeId)) {
|
|
269
|
+
status = brightchain_lib_1.NodeStatus.UNREACHABLE;
|
|
270
|
+
}
|
|
271
|
+
}
|
|
272
|
+
}
|
|
273
|
+
// If node is registered, return its info
|
|
274
|
+
if (publicKey !== undefined) {
|
|
275
|
+
return {
|
|
276
|
+
statusCode: 200,
|
|
277
|
+
response: {
|
|
278
|
+
message: 'OK',
|
|
279
|
+
node: {
|
|
280
|
+
nodeId,
|
|
281
|
+
publicKey,
|
|
282
|
+
status,
|
|
283
|
+
capabilities: ['block_storage'],
|
|
284
|
+
lastSeen: new Date().toISOString(),
|
|
285
|
+
},
|
|
286
|
+
},
|
|
287
|
+
};
|
|
288
|
+
}
|
|
289
|
+
// Node not found
|
|
290
|
+
return (0, errorResponse_1.notFoundError)('Node', nodeId);
|
|
291
|
+
}
|
|
292
|
+
catch (_error) {
|
|
293
|
+
return (0, errorResponse_1.handleError)(_error);
|
|
294
|
+
}
|
|
295
|
+
}
|
|
296
|
+
/**
|
|
297
|
+
* POST /api/nodes/discover
|
|
298
|
+
* Discover nodes that have a specific block.
|
|
299
|
+
*
|
|
300
|
+
* @param req - Request containing the block ID to discover
|
|
301
|
+
* @returns Discovery result with locations
|
|
302
|
+
* @requirements 3.3
|
|
303
|
+
*/
|
|
304
|
+
async handleDiscoverBlock(req) {
|
|
305
|
+
try {
|
|
306
|
+
const { blockId } = req.body;
|
|
307
|
+
if (!blockId) {
|
|
308
|
+
return (0, errorResponse_1.validationError)('Missing required field: blockId');
|
|
309
|
+
}
|
|
310
|
+
if (typeof blockId !== 'string') {
|
|
311
|
+
return (0, errorResponse_1.validationError)('Invalid field type: blockId must be a string');
|
|
312
|
+
}
|
|
313
|
+
const discoveryProtocol = this.getDiscoveryProtocol();
|
|
314
|
+
const result = await discoveryProtocol.discoverBlock(blockId);
|
|
315
|
+
// Convert locations to response format
|
|
316
|
+
const locations = result.locations.map((loc) => ({
|
|
317
|
+
nodeId: loc.nodeId,
|
|
318
|
+
latencyMs: loc.latencyMs,
|
|
319
|
+
lastSeen: loc.lastSeen.toISOString(),
|
|
320
|
+
}));
|
|
321
|
+
return {
|
|
322
|
+
statusCode: 200,
|
|
323
|
+
response: {
|
|
324
|
+
message: 'OK',
|
|
325
|
+
blockId: result.blockId,
|
|
326
|
+
found: result.found,
|
|
327
|
+
locations,
|
|
328
|
+
queriedPeers: result.queriedPeers,
|
|
329
|
+
duration: result.duration,
|
|
330
|
+
},
|
|
331
|
+
};
|
|
332
|
+
}
|
|
333
|
+
catch (_error) {
|
|
334
|
+
return (0, errorResponse_1.handleError)(_error);
|
|
335
|
+
}
|
|
336
|
+
}
|
|
337
|
+
/**
|
|
338
|
+
* POST /api/nodes/register
|
|
339
|
+
* Register a node's public key for WebSocket authentication.
|
|
340
|
+
*
|
|
341
|
+
* @param req - Request containing node ID and public key
|
|
342
|
+
* @returns Registration result
|
|
343
|
+
* @requirements 3.4, 3.5
|
|
344
|
+
*/
|
|
345
|
+
async handleRegisterNode(req) {
|
|
346
|
+
try {
|
|
347
|
+
const { nodeId, publicKey } = req
|
|
348
|
+
.body;
|
|
349
|
+
if (!nodeId) {
|
|
350
|
+
return (0, errorResponse_1.validationError)('Missing required field: nodeId');
|
|
351
|
+
}
|
|
352
|
+
if (!publicKey) {
|
|
353
|
+
return (0, errorResponse_1.validationError)('Missing required field: publicKey');
|
|
354
|
+
}
|
|
355
|
+
if (typeof nodeId !== 'string') {
|
|
356
|
+
return (0, errorResponse_1.validationError)('Invalid field type: nodeId must be a string');
|
|
357
|
+
}
|
|
358
|
+
if (typeof publicKey !== 'string') {
|
|
359
|
+
return (0, errorResponse_1.validationError)('Invalid field type: publicKey must be a string');
|
|
360
|
+
}
|
|
361
|
+
// Store the public key for WebSocket authentication
|
|
362
|
+
this.registeredNodes.set(nodeId, publicKey);
|
|
363
|
+
return {
|
|
364
|
+
statusCode: 201,
|
|
365
|
+
response: {
|
|
366
|
+
message: 'Node registered successfully',
|
|
367
|
+
success: true,
|
|
368
|
+
nodeId,
|
|
369
|
+
},
|
|
370
|
+
};
|
|
371
|
+
}
|
|
372
|
+
catch (_error) {
|
|
373
|
+
return (0, errorResponse_1.handleError)(_error);
|
|
374
|
+
}
|
|
375
|
+
}
|
|
376
|
+
}
|
|
377
|
+
exports.NodesController = NodesController;
|
|
378
|
+
//# sourceMappingURL=nodes.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"nodes.js","sourceRoot":"","sources":["../../../../../../brightchain-api-lib/src/lib/controllers/api/nodes.ts"],"names":[],"mappings":"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"}
|
|
@@ -282,15 +282,16 @@ export declare class QuorumController<TID extends PlatformID = DefaultBackendIdT
|
|
|
282
282
|
private handleSealDocument;
|
|
283
283
|
/**
|
|
284
284
|
* POST /api/quorum/documents/:documentId/unseal
|
|
285
|
-
* Unseal a document using member
|
|
285
|
+
* Unseal a document using member credentials (mnemonics).
|
|
286
286
|
*
|
|
287
|
-
*
|
|
288
|
-
*
|
|
287
|
+
* Recovers member private keys from provided mnemonics, then uses them
|
|
288
|
+
* to decrypt shares and reconstruct the original document.
|
|
289
289
|
*
|
|
290
|
-
* Note: This endpoint requires
|
|
291
|
-
*
|
|
290
|
+
* Note: This endpoint requires the QuorumService to have the document
|
|
291
|
+
* loaded in memory. For disk-persisted documents, the full reconstruction
|
|
292
|
+
* is not yet implemented.
|
|
292
293
|
*
|
|
293
|
-
* @param req - Request containing document ID and member
|
|
294
|
+
* @param req - Request containing document ID and member credentials
|
|
294
295
|
* @returns Original document on success
|
|
295
296
|
*
|
|
296
297
|
* @example
|
|
@@ -298,10 +299,13 @@ export declare class QuorumController<TID extends PlatformID = DefaultBackendIdT
|
|
|
298
299
|
* // Request
|
|
299
300
|
* POST /api/quorum/documents/doc123.../unseal
|
|
300
301
|
* {
|
|
301
|
-
* "
|
|
302
|
+
* "memberCredentials": [
|
|
303
|
+
* { "memberId": "member1...", "mnemonic": "word1 word2 word3..." },
|
|
304
|
+
* { "memberId": "member2...", "mnemonic": "word4 word5 word6..." }
|
|
305
|
+
* ]
|
|
302
306
|
* }
|
|
303
307
|
*
|
|
304
|
-
* // Response
|
|
308
|
+
* // Response
|
|
305
309
|
* {
|
|
306
310
|
* "message": "Document unsealed successfully",
|
|
307
311
|
* "document": { "secret": "data", "value": 42 }
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"quorum.d.ts","sourceRoot":"","sources":["../../../../../../brightchain-api-lib/src/lib/controllers/api/quorum.ts"],"names":[],"mappings":"AACA,OAAO,EACL,eAAe,EAEf,kBAAkB,EAElB,oBAAoB,EAErB,MAAM,8BAA8B,CAAC;
|
|
1
|
+
{"version":3,"file":"quorum.d.ts","sourceRoot":"","sources":["../../../../../../brightchain-api-lib/src/lib/controllers/api/quorum.ts"],"names":[],"mappings":"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"}
|
|
@@ -375,15 +375,16 @@ class QuorumController extends base_1.BaseController {
|
|
|
375
375
|
};
|
|
376
376
|
/**
|
|
377
377
|
* POST /api/quorum/documents/:documentId/unseal
|
|
378
|
-
* Unseal a document using member
|
|
378
|
+
* Unseal a document using member credentials (mnemonics).
|
|
379
379
|
*
|
|
380
|
-
*
|
|
381
|
-
*
|
|
380
|
+
* Recovers member private keys from provided mnemonics, then uses them
|
|
381
|
+
* to decrypt shares and reconstruct the original document.
|
|
382
382
|
*
|
|
383
|
-
* Note: This endpoint requires
|
|
384
|
-
*
|
|
383
|
+
* Note: This endpoint requires the QuorumService to have the document
|
|
384
|
+
* loaded in memory. For disk-persisted documents, the full reconstruction
|
|
385
|
+
* is not yet implemented.
|
|
385
386
|
*
|
|
386
|
-
* @param req - Request containing document ID and member
|
|
387
|
+
* @param req - Request containing document ID and member credentials
|
|
387
388
|
* @returns Original document on success
|
|
388
389
|
*
|
|
389
390
|
* @example
|
|
@@ -391,10 +392,13 @@ class QuorumController extends base_1.BaseController {
|
|
|
391
392
|
* // Request
|
|
392
393
|
* POST /api/quorum/documents/doc123.../unseal
|
|
393
394
|
* {
|
|
394
|
-
* "
|
|
395
|
+
* "memberCredentials": [
|
|
396
|
+
* { "memberId": "member1...", "mnemonic": "word1 word2 word3..." },
|
|
397
|
+
* { "memberId": "member2...", "mnemonic": "word4 word5 word6..." }
|
|
398
|
+
* ]
|
|
395
399
|
* }
|
|
396
400
|
*
|
|
397
|
-
* // Response
|
|
401
|
+
* // Response
|
|
398
402
|
* {
|
|
399
403
|
* "message": "Document unsealed successfully",
|
|
400
404
|
* "document": { "secret": "data", "value": 42 }
|
|
@@ -404,19 +408,81 @@ class QuorumController extends base_1.BaseController {
|
|
|
404
408
|
this.handleUnsealDocument = async (req) => {
|
|
405
409
|
try {
|
|
406
410
|
const { documentId } = req.params;
|
|
407
|
-
const {
|
|
411
|
+
const { memberCredentials } = req
|
|
412
|
+
.body;
|
|
408
413
|
if (!documentId) {
|
|
409
414
|
return (0, errorResponse_1.validationError)('Missing required parameter: documentId');
|
|
410
415
|
}
|
|
411
|
-
if (!
|
|
412
|
-
|
|
416
|
+
if (!memberCredentials ||
|
|
417
|
+
!Array.isArray(memberCredentials) ||
|
|
418
|
+
memberCredentials.length === 0) {
|
|
419
|
+
return (0, errorResponse_1.validationError)('Missing required field: memberCredentials (array of {memberId, mnemonic})');
|
|
413
420
|
}
|
|
414
|
-
//
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
421
|
+
// Validate each credential has required fields
|
|
422
|
+
for (const cred of memberCredentials) {
|
|
423
|
+
if (!cred.memberId || !cred.mnemonic) {
|
|
424
|
+
return (0, errorResponse_1.validationError)('Each memberCredential must have memberId and mnemonic');
|
|
425
|
+
}
|
|
426
|
+
}
|
|
427
|
+
const quorumService = this.quorumServiceWrapper.getService();
|
|
428
|
+
// Check if document exists and if we have enough shares
|
|
429
|
+
const docInfo = await quorumService.getDocument(documentId);
|
|
430
|
+
if (!docInfo) {
|
|
431
|
+
return (0, errorResponse_1.notFoundError)('Document', documentId);
|
|
432
|
+
}
|
|
433
|
+
// Check if provided members can unlock the document
|
|
434
|
+
const memberIds = memberCredentials.map((c) => c.memberId);
|
|
435
|
+
const canUnlockResult = await quorumService.canUnlock(documentId, memberIds);
|
|
436
|
+
if (!canUnlockResult.canUnlock) {
|
|
437
|
+
return (0, errorResponse_1.createApiErrorResult)(400, errorResponse_1.ErrorCode.INSUFFICIENT_SHARES, `Insufficient shares: provided ${canUnlockResult.sharesProvided}, required ${canUnlockResult.sharesRequired}`);
|
|
438
|
+
}
|
|
439
|
+
// Recover members with private keys from mnemonics
|
|
440
|
+
const eciesService = brightchain_lib_1.ServiceProvider.getInstance().eciesService;
|
|
441
|
+
const membersWithPrivateKey = [];
|
|
442
|
+
for (const cred of memberCredentials) {
|
|
443
|
+
// Get the stored member info to get their metadata
|
|
444
|
+
const storedMember = await quorumService.getMember(cred.memberId);
|
|
445
|
+
if (!storedMember) {
|
|
446
|
+
return (0, errorResponse_1.notFoundError)('Member', cred.memberId);
|
|
447
|
+
}
|
|
448
|
+
// Recover wallet from mnemonic - need to wrap string in SecureString
|
|
449
|
+
const secureString = new ecies_lib_1.SecureString(cred.mnemonic);
|
|
450
|
+
const { wallet } = eciesService.walletAndSeedFromMnemonic(secureString);
|
|
451
|
+
const recoveredPublicKey = new Uint8Array(wallet.getPublicKey());
|
|
452
|
+
// Verify the recovered public key matches the stored one
|
|
453
|
+
if ((0, ecies_lib_1.uint8ArrayToHex)(recoveredPublicKey) !==
|
|
454
|
+
(0, ecies_lib_1.uint8ArrayToHex)(storedMember.publicKey)) {
|
|
455
|
+
return (0, errorResponse_1.createApiErrorResult)(400, errorResponse_1.ErrorCode.SHARE_DECRYPTION_FAILED, `Mnemonic does not match member ${cred.memberId}`);
|
|
456
|
+
}
|
|
457
|
+
// Create a member with the recovered private key
|
|
458
|
+
const email = storedMember.metadata.email
|
|
459
|
+
? new ecies_lib_1.EmailString(storedMember.metadata.email)
|
|
460
|
+
: new ecies_lib_1.EmailString(`${storedMember.metadata.name?.toLowerCase().replace(/\s+/g, '.') ?? 'unknown'}@placeholder.local`);
|
|
461
|
+
// Use Member.newMember and then replace the wallet
|
|
462
|
+
// This is a workaround since Member constructor may not accept wallet directly
|
|
463
|
+
const { member: tempMember } = ecies_lib_1.Member.newMember(eciesService, ecies_lib_1.MemberType.User, storedMember.metadata.name ?? 'Unknown', email);
|
|
464
|
+
// Create a member-like object with the recovered wallet's private key
|
|
465
|
+
// The unsealDocument method needs members with privateKey access
|
|
466
|
+
const recoveredMember = Object.create(tempMember);
|
|
467
|
+
Object.defineProperty(recoveredMember, 'privateKey', {
|
|
468
|
+
get: () => new Uint8Array(wallet.getPrivateKey()),
|
|
469
|
+
configurable: true,
|
|
470
|
+
});
|
|
471
|
+
Object.defineProperty(recoveredMember, 'publicKey', {
|
|
472
|
+
get: () => recoveredPublicKey,
|
|
473
|
+
configurable: true,
|
|
474
|
+
});
|
|
475
|
+
membersWithPrivateKey.push(recoveredMember);
|
|
476
|
+
}
|
|
477
|
+
// Unseal the document
|
|
478
|
+
const unsealedDocument = await quorumService.unsealDocument(documentId, membersWithPrivateKey);
|
|
479
|
+
return {
|
|
480
|
+
statusCode: 200,
|
|
481
|
+
response: {
|
|
482
|
+
message: 'Document unsealed successfully',
|
|
483
|
+
document: unsealedDocument,
|
|
484
|
+
},
|
|
485
|
+
};
|
|
420
486
|
}
|
|
421
487
|
catch (_error) {
|
|
422
488
|
if (_error instanceof brightchain_lib_1.QuorumError) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"quorum.js","sourceRoot":"","sources":["../../../../../../brightchain-api-lib/src/lib/controllers/api/quorum.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"quorum.js","sourceRoot":"","sources":["../../../../../../brightchain-api-lib/src/lib/controllers/api/quorum.ts"],"names":[],"mappings":"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"}
|