@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.
Files changed (184) hide show
  1. package/package.json +4 -4
  2. package/src/lib/application-base.d.ts +1 -1
  3. package/src/lib/application-base.d.ts.map +1 -1
  4. package/src/lib/application.d.ts +52 -0
  5. package/src/lib/application.d.ts.map +1 -1
  6. package/src/lib/application.js +104 -0
  7. package/src/lib/application.js.map +1 -1
  8. package/src/lib/controllers/api/blocks.d.ts.map +1 -1
  9. package/src/lib/controllers/api/blocks.js +62 -0
  10. package/src/lib/controllers/api/blocks.js.map +1 -1
  11. package/src/lib/controllers/api/docs.d.ts +67 -0
  12. package/src/lib/controllers/api/docs.d.ts.map +1 -0
  13. package/src/lib/controllers/api/docs.js +86 -0
  14. package/src/lib/controllers/api/docs.js.map +1 -0
  15. package/src/lib/controllers/api/energy.d.ts.map +1 -1
  16. package/src/lib/controllers/api/energy.js +35 -7
  17. package/src/lib/controllers/api/energy.js.map +1 -1
  18. package/src/lib/controllers/api/health.d.ts +95 -0
  19. package/src/lib/controllers/api/health.d.ts.map +1 -0
  20. package/src/lib/controllers/api/health.js +319 -0
  21. package/src/lib/controllers/api/health.js.map +1 -0
  22. package/src/lib/controllers/api/index.d.ts +6 -0
  23. package/src/lib/controllers/api/index.d.ts.map +1 -1
  24. package/src/lib/controllers/api/index.js +6 -0
  25. package/src/lib/controllers/api/index.js.map +1 -1
  26. package/src/lib/controllers/api/messages.d.ts +119 -0
  27. package/src/lib/controllers/api/messages.d.ts.map +1 -0
  28. package/src/lib/controllers/api/messages.js +269 -0
  29. package/src/lib/controllers/api/messages.js.map +1 -0
  30. package/src/lib/controllers/api/nodes.d.ts +152 -0
  31. package/src/lib/controllers/api/nodes.d.ts.map +1 -0
  32. package/src/lib/controllers/api/nodes.js +378 -0
  33. package/src/lib/controllers/api/nodes.js.map +1 -0
  34. package/src/lib/controllers/api/quorum.d.ts +12 -8
  35. package/src/lib/controllers/api/quorum.d.ts.map +1 -1
  36. package/src/lib/controllers/api/quorum.js +83 -17
  37. package/src/lib/controllers/api/quorum.js.map +1 -1
  38. package/src/lib/controllers/api/scbl.d.ts +80 -0
  39. package/src/lib/controllers/api/scbl.d.ts.map +1 -0
  40. package/src/lib/controllers/api/scbl.js +325 -0
  41. package/src/lib/controllers/api/scbl.js.map +1 -0
  42. package/src/lib/controllers/api/sync.d.ts +140 -0
  43. package/src/lib/controllers/api/sync.d.ts.map +1 -0
  44. package/src/lib/controllers/api/sync.js +352 -0
  45. package/src/lib/controllers/api/sync.js.map +1 -0
  46. package/src/lib/controllers/api/user.d.ts +2 -0
  47. package/src/lib/controllers/api/user.d.ts.map +1 -1
  48. package/src/lib/controllers/api/user.js +122 -7
  49. package/src/lib/controllers/api/user.js.map +1 -1
  50. package/src/lib/enumerations/brightChainApiStrings.d.ts.map +1 -1
  51. package/src/lib/enumerations/brightChainApiStrings.js.map +1 -1
  52. package/src/lib/errors/symmetric.d.ts +2 -2
  53. package/src/lib/errors/symmetric.d.ts.map +1 -1
  54. package/src/lib/errors/symmetric.js.map +1 -1
  55. package/src/lib/errors/typed-error-local.d.ts +3 -3
  56. package/src/lib/errors/typed-error-local.d.ts.map +1 -1
  57. package/src/lib/errors/typed-error-local.js.map +1 -1
  58. package/src/lib/interfaces/application.d.ts +2 -1
  59. package/src/lib/interfaces/application.d.ts.map +1 -1
  60. package/src/lib/interfaces/backend-objects/index.d.ts +4 -4
  61. package/src/lib/interfaces/backend-objects/index.d.ts.map +1 -1
  62. package/src/lib/interfaces/backend-objects/index.js +0 -5
  63. package/src/lib/interfaces/backend-objects/index.js.map +1 -1
  64. package/src/lib/interfaces/bases/index.d.ts +4 -4
  65. package/src/lib/interfaces/bases/index.d.ts.map +1 -1
  66. package/src/lib/interfaces/bases/index.js +0 -5
  67. package/src/lib/interfaces/bases/index.js.map +1 -1
  68. package/src/lib/interfaces/index.d.ts +32 -32
  69. package/src/lib/interfaces/index.d.ts.map +1 -1
  70. package/src/lib/interfaces/index.js +0 -33
  71. package/src/lib/interfaces/index.js.map +1 -1
  72. package/src/lib/interfaces/member/index.d.ts +3 -3
  73. package/src/lib/interfaces/member/index.d.ts.map +1 -1
  74. package/src/lib/interfaces/member/index.js +0 -4
  75. package/src/lib/interfaces/member/index.js.map +1 -1
  76. package/src/lib/interfaces/requests/deleteMessagesRequest.d.ts +12 -0
  77. package/src/lib/interfaces/requests/deleteMessagesRequest.d.ts.map +1 -0
  78. package/src/lib/interfaces/requests/deleteMessagesRequest.js +3 -0
  79. package/src/lib/interfaces/requests/deleteMessagesRequest.js.map +1 -0
  80. package/src/lib/interfaces/requests/discoverBlockRequest.d.ts +10 -0
  81. package/src/lib/interfaces/requests/discoverBlockRequest.d.ts.map +1 -0
  82. package/src/lib/interfaces/requests/discoverBlockRequest.js +3 -0
  83. package/src/lib/interfaces/requests/discoverBlockRequest.js.map +1 -0
  84. package/src/lib/interfaces/requests/getBlockLocationRequest.d.ts +9 -0
  85. package/src/lib/interfaces/requests/getBlockLocationRequest.d.ts.map +1 -0
  86. package/src/lib/interfaces/requests/getBlockLocationRequest.js +3 -0
  87. package/src/lib/interfaces/requests/getBlockLocationRequest.js.map +1 -0
  88. package/src/lib/interfaces/requests/getMessageRequest.d.ts +12 -0
  89. package/src/lib/interfaces/requests/getMessageRequest.d.ts.map +1 -0
  90. package/src/lib/interfaces/requests/getMessageRequest.js +3 -0
  91. package/src/lib/interfaces/requests/getMessageRequest.js.map +1 -0
  92. package/src/lib/interfaces/requests/getNodeRequest.d.ts +9 -0
  93. package/src/lib/interfaces/requests/getNodeRequest.d.ts.map +1 -0
  94. package/src/lib/interfaces/{membersResponse.js → requests/getNodeRequest.js} +1 -1
  95. package/src/lib/interfaces/requests/getNodeRequest.js.map +1 -0
  96. package/src/lib/interfaces/requests/index.d.ts +12 -0
  97. package/src/lib/interfaces/requests/index.d.ts.map +1 -0
  98. package/src/lib/interfaces/requests/index.js +3 -0
  99. package/src/lib/interfaces/requests/index.js.map +1 -0
  100. package/src/lib/interfaces/requests/messageRequest.d.ts +10 -0
  101. package/src/lib/interfaces/requests/messageRequest.d.ts.map +1 -0
  102. package/src/lib/interfaces/requests/messageRequest.js +3 -0
  103. package/src/lib/interfaces/requests/messageRequest.js.map +1 -0
  104. package/src/lib/interfaces/requests/queryMessagesRequest.d.ts +16 -0
  105. package/src/lib/interfaces/requests/queryMessagesRequest.d.ts.map +1 -0
  106. package/src/lib/interfaces/requests/queryMessagesRequest.js +3 -0
  107. package/src/lib/interfaces/requests/queryMessagesRequest.js.map +1 -0
  108. package/src/lib/interfaces/requests/registerNodeRequest.d.ts +11 -0
  109. package/src/lib/interfaces/requests/registerNodeRequest.d.ts.map +1 -0
  110. package/src/lib/interfaces/requests/registerNodeRequest.js +3 -0
  111. package/src/lib/interfaces/requests/registerNodeRequest.js.map +1 -0
  112. package/src/lib/interfaces/requests/replicateBlockRequest.d.ts +13 -0
  113. package/src/lib/interfaces/requests/replicateBlockRequest.d.ts.map +1 -0
  114. package/src/lib/interfaces/requests/replicateBlockRequest.js +3 -0
  115. package/src/lib/interfaces/requests/replicateBlockRequest.js.map +1 -0
  116. package/src/lib/interfaces/requests/sendMessageRequest.d.ts +24 -0
  117. package/src/lib/interfaces/requests/sendMessageRequest.d.ts.map +1 -0
  118. package/src/lib/interfaces/requests/sendMessageRequest.js +3 -0
  119. package/src/lib/interfaces/requests/sendMessageRequest.js.map +1 -0
  120. package/src/lib/interfaces/requests/storeSCBLRequestBody.d.ts +9 -0
  121. package/src/lib/interfaces/requests/storeSCBLRequestBody.d.ts.map +1 -0
  122. package/src/lib/interfaces/requests/storeSCBLRequestBody.js +3 -0
  123. package/src/lib/interfaces/requests/storeSCBLRequestBody.js.map +1 -0
  124. package/src/lib/interfaces/requests/syncRequestBody.d.ts +10 -0
  125. package/src/lib/interfaces/requests/syncRequestBody.d.ts.map +1 -0
  126. package/src/lib/interfaces/requests/syncRequestBody.js +3 -0
  127. package/src/lib/interfaces/requests/syncRequestBody.js.map +1 -0
  128. package/src/lib/interfaces/responses/index.d.ts +7 -7
  129. package/src/lib/interfaces/responses/index.d.ts.map +1 -1
  130. package/src/lib/interfaces/responses/index.js +0 -8
  131. package/src/lib/interfaces/responses/index.js.map +1 -1
  132. package/src/lib/middlewares/authentication.d.ts +133 -0
  133. package/src/lib/middlewares/authentication.d.ts.map +1 -0
  134. package/src/lib/middlewares/authentication.js +224 -0
  135. package/src/lib/middlewares/authentication.js.map +1 -0
  136. package/src/lib/middlewares/index.d.ts +2 -0
  137. package/src/lib/middlewares/index.d.ts.map +1 -1
  138. package/src/lib/middlewares/index.js +15 -1
  139. package/src/lib/middlewares/index.js.map +1 -1
  140. package/src/lib/middlewares/request-id.d.ts +18 -0
  141. package/src/lib/middlewares/request-id.d.ts.map +1 -0
  142. package/src/lib/middlewares/request-id.js +30 -0
  143. package/src/lib/middlewares/request-id.js.map +1 -0
  144. package/src/lib/openapi/index.d.ts +8 -0
  145. package/src/lib/openapi/index.d.ts.map +1 -0
  146. package/src/lib/openapi/index.js +21 -0
  147. package/src/lib/openapi/index.js.map +1 -0
  148. package/src/lib/openapi/schemas.d.ts +15 -0
  149. package/src/lib/openapi/schemas.d.ts.map +1 -0
  150. package/src/lib/openapi/schemas.js +610 -0
  151. package/src/lib/openapi/schemas.js.map +1 -0
  152. package/src/lib/routers/api.d.ts +62 -0
  153. package/src/lib/routers/api.d.ts.map +1 -1
  154. package/src/lib/routers/api.js +85 -0
  155. package/src/lib/routers/api.js.map +1 -1
  156. package/src/lib/services/diskQuorumService.d.ts +7 -6
  157. package/src/lib/services/diskQuorumService.d.ts.map +1 -1
  158. package/src/lib/services/diskQuorumService.js.map +1 -1
  159. package/src/lib/services/email.d.ts +2 -1
  160. package/src/lib/services/email.d.ts.map +1 -1
  161. package/src/lib/services/email.js.map +1 -1
  162. package/src/lib/services/eventNotificationSystem.d.ts +88 -6
  163. package/src/lib/services/eventNotificationSystem.d.ts.map +1 -1
  164. package/src/lib/services/eventNotificationSystem.js +132 -17
  165. package/src/lib/services/eventNotificationSystem.js.map +1 -1
  166. package/src/lib/services/fec.js +1 -1
  167. package/src/lib/services/fec.js.map +1 -1
  168. package/src/lib/types/backend-id.d.ts +2 -1
  169. package/src/lib/types/backend-id.d.ts.map +1 -1
  170. package/src/lib/utils/errorResponse.d.ts +227 -2
  171. package/src/lib/utils/errorResponse.d.ts.map +1 -1
  172. package/src/lib/utils/errorResponse.js +292 -3
  173. package/src/lib/utils/errorResponse.js.map +1 -1
  174. package/src/lib/i18n/index.d.ts +0 -7
  175. package/src/lib/i18n/index.d.ts.map +0 -1
  176. package/src/lib/i18n/index.js +0 -29
  177. package/src/lib/i18n/index.js.map +0 -1
  178. package/src/lib/i18n/strings/index.d.ts +0 -6
  179. package/src/lib/i18n/strings/index.d.ts.map +0 -1
  180. package/src/lib/i18n/strings/index.js +0 -17
  181. package/src/lib/i18n/strings/index.js.map +0 -1
  182. package/src/lib/interfaces/membersResponse.d.ts +0 -12
  183. package/src/lib/interfaces/membersResponse.d.ts.map +0 -1
  184. package/src/lib/interfaces/membersResponse.js.map +0 -1
@@ -0,0 +1,352 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SyncController = void 0;
4
+ const node_express_suite_1 = require("@digitaldefiance/node-express-suite");
5
+ const errorResponse_1 = require("../../utils/errorResponse");
6
+ const base_1 = require("../base");
7
+ /**
8
+ * Controller for block replication and synchronization operations.
9
+ *
10
+ * Provides REST API endpoints for replicating blocks to other nodes,
11
+ * querying block locations, checking block availability, and triggering
12
+ * reconciliation with peers.
13
+ *
14
+ * ## Endpoints
15
+ *
16
+ * ### POST /api/blocks/:blockId/replicate
17
+ * Replicate a block to specified target nodes.
18
+ *
19
+ * **Parameters:**
20
+ * - `blockId` (string, required): Block ID to replicate
21
+ *
22
+ * **Request Body:**
23
+ * - `targetNodeIds` (string[], required): Array of node IDs to replicate to
24
+ *
25
+ * **Response:**
26
+ * - `blockId` (string): The block ID that was replicated
27
+ * - `replicationResults` (array): Results for each target node
28
+ *
29
+ * ### GET /api/blocks/:blockId/locations
30
+ * Get all known locations for a block.
31
+ *
32
+ * **Parameters:**
33
+ * - `blockId` (string, required): Block ID to query
34
+ *
35
+ * **Response:**
36
+ * - `blockId` (string): The block ID queried
37
+ * - `locations` (array): Array of location records
38
+ *
39
+ * ### POST /api/sync/request
40
+ * Check which blocks are available locally and which need to be fetched.
41
+ *
42
+ * **Request Body:**
43
+ * - `blockIds` (string[], required): Array of block IDs to check
44
+ *
45
+ * **Response:**
46
+ * - `available` (string[]): Block IDs available locally
47
+ * - `missing` (string[]): Block IDs that need to be fetched
48
+ * - `unknown` (string[]): Block IDs with unknown status
49
+ *
50
+ * ### POST /api/sync/reconcile
51
+ * Initiate reconciliation with connected peers.
52
+ *
53
+ * **Response:**
54
+ * - `result` (object): Reconciliation result with statistics
55
+ *
56
+ * @requirements 4.1, 4.2, 4.3, 4.4
57
+ */
58
+ class SyncController extends base_1.BaseController {
59
+ constructor(application) {
60
+ super(application);
61
+ this.availabilityService = null;
62
+ this.reconciliationService = null;
63
+ this.eventSystem = null;
64
+ }
65
+ /**
66
+ * Set the AvailabilityService instance.
67
+ * This allows for dependency injection and testing.
68
+ */
69
+ setAvailabilityService(service) {
70
+ this.availabilityService = service;
71
+ }
72
+ /**
73
+ * Set the ReconciliationService instance.
74
+ * This allows for dependency injection and testing.
75
+ */
76
+ setReconciliationService(service) {
77
+ this.reconciliationService = service;
78
+ }
79
+ /**
80
+ * Set the EventNotificationSystem instance.
81
+ * This allows for dependency injection and testing.
82
+ * @requirements 4.5
83
+ */
84
+ setEventSystem(eventSystem) {
85
+ this.eventSystem = eventSystem;
86
+ }
87
+ /**
88
+ * Get the AvailabilityService instance.
89
+ * Throws if the service has not been set.
90
+ */
91
+ getAvailabilityService() {
92
+ if (!this.availabilityService) {
93
+ throw new Error('AvailabilityService not initialized');
94
+ }
95
+ return this.availabilityService;
96
+ }
97
+ /**
98
+ * Get the ReconciliationService instance.
99
+ * Throws if the service has not been set.
100
+ */
101
+ getReconciliationService() {
102
+ if (!this.reconciliationService) {
103
+ throw new Error('ReconciliationService not initialized');
104
+ }
105
+ return this.reconciliationService;
106
+ }
107
+ initRouteDefinitions() {
108
+ this.routeDefinitions = [
109
+ (0, node_express_suite_1.routeConfig)('post', '/blocks/:blockId/replicate', {
110
+ handlerKey: 'replicateBlock',
111
+ useAuthentication: false,
112
+ useCryptoAuthentication: false,
113
+ }),
114
+ (0, node_express_suite_1.routeConfig)('get', '/blocks/:blockId/locations', {
115
+ handlerKey: 'getBlockLocations',
116
+ useAuthentication: false,
117
+ useCryptoAuthentication: false,
118
+ }),
119
+ (0, node_express_suite_1.routeConfig)('post', '/request', {
120
+ handlerKey: 'syncRequest',
121
+ useAuthentication: false,
122
+ useCryptoAuthentication: false,
123
+ }),
124
+ (0, node_express_suite_1.routeConfig)('post', '/reconcile', {
125
+ handlerKey: 'reconcile',
126
+ useAuthentication: false,
127
+ useCryptoAuthentication: false,
128
+ }),
129
+ ];
130
+ this.handlers = {
131
+ replicateBlock: this.handleReplicateBlock.bind(this),
132
+ getBlockLocations: this.handleGetBlockLocations.bind(this),
133
+ syncRequest: this.handleSyncRequest.bind(this),
134
+ reconcile: this.handleReconcile.bind(this),
135
+ };
136
+ }
137
+ /**
138
+ * Convert ILocationRecord to response format
139
+ */
140
+ locationToInfo(location) {
141
+ return {
142
+ nodeId: location.nodeId,
143
+ lastSeen: location.lastSeen.toISOString(),
144
+ latencyMs: location.latencyMs,
145
+ isAuthoritative: location.isAuthoritative,
146
+ };
147
+ }
148
+ /**
149
+ * POST /api/sync/blocks/:blockId/replicate
150
+ * Replicate a block to specified target nodes.
151
+ *
152
+ * @param req - Request containing block ID and target node IDs
153
+ * @returns Replication results for each target node
154
+ * @requirements 4.1, 4.5
155
+ */
156
+ async handleReplicateBlock(req) {
157
+ try {
158
+ const typedReq = req;
159
+ const { blockId } = typedReq.params;
160
+ const { targetNodeIds } = typedReq.body;
161
+ if (!blockId) {
162
+ return (0, errorResponse_1.validationError)('Missing required parameter: blockId');
163
+ }
164
+ if (!targetNodeIds || !Array.isArray(targetNodeIds)) {
165
+ return (0, errorResponse_1.validationError)('Missing required field: targetNodeIds (must be an array)');
166
+ }
167
+ if (targetNodeIds.length === 0) {
168
+ return (0, errorResponse_1.validationError)('targetNodeIds array cannot be empty');
169
+ }
170
+ // Validate all node IDs are strings
171
+ for (const nodeId of targetNodeIds) {
172
+ if (typeof nodeId !== 'string') {
173
+ return (0, errorResponse_1.validationError)('All targetNodeIds must be strings');
174
+ }
175
+ }
176
+ const availabilityService = this.getAvailabilityService();
177
+ // Check if block exists locally
178
+ const locations = await availabilityService.getBlockLocations(blockId);
179
+ const localNodeId = availabilityService.getLocalNodeId();
180
+ const hasLocalCopy = locations.some((loc) => loc.nodeId === localNodeId);
181
+ if (!hasLocalCopy && locations.length === 0) {
182
+ return (0, errorResponse_1.notFoundError)('Block', blockId);
183
+ }
184
+ // Simulate replication to each target node
185
+ // In a real implementation, this would send the block data to each node
186
+ const replicationResults = [];
187
+ for (const nodeId of targetNodeIds) {
188
+ try {
189
+ // Update location metadata to indicate the block is now at this node
190
+ await availabilityService.updateLocation(blockId, {
191
+ nodeId,
192
+ lastSeen: new Date(),
193
+ isAuthoritative: false,
194
+ });
195
+ replicationResults.push({
196
+ nodeId,
197
+ success: true,
198
+ });
199
+ // Emit block:replicated event for successful replication
200
+ if (this.eventSystem) {
201
+ this.eventSystem.emitBlockReplicated(blockId, nodeId, true);
202
+ }
203
+ }
204
+ catch (error) {
205
+ const errorMessage = error instanceof Error ? error.message : 'Unknown error';
206
+ replicationResults.push({
207
+ nodeId,
208
+ success: false,
209
+ error: errorMessage,
210
+ });
211
+ // Emit block:replicated event for failed replication
212
+ if (this.eventSystem) {
213
+ this.eventSystem.emitBlockReplicated(blockId, nodeId, false, errorMessage);
214
+ }
215
+ }
216
+ }
217
+ return {
218
+ statusCode: 200,
219
+ response: {
220
+ message: 'Replication initiated',
221
+ blockId,
222
+ replicationResults,
223
+ },
224
+ };
225
+ }
226
+ catch (_error) {
227
+ return (0, errorResponse_1.handleError)(_error);
228
+ }
229
+ }
230
+ /**
231
+ * GET /api/sync/blocks/:blockId/locations
232
+ * Get all known locations for a block.
233
+ *
234
+ * @param req - Request containing the block ID parameter
235
+ * @returns Array of location records
236
+ * @requirements 4.2
237
+ */
238
+ async handleGetBlockLocations(req) {
239
+ try {
240
+ const { blockId } = req.params;
241
+ if (!blockId) {
242
+ return (0, errorResponse_1.validationError)('Missing required parameter: blockId');
243
+ }
244
+ const availabilityService = this.getAvailabilityService();
245
+ const locations = await availabilityService.getBlockLocations(blockId);
246
+ return {
247
+ statusCode: 200,
248
+ response: {
249
+ message: 'OK',
250
+ blockId,
251
+ locations: locations.map((loc) => this.locationToInfo(loc)),
252
+ },
253
+ };
254
+ }
255
+ catch (_error) {
256
+ return (0, errorResponse_1.handleError)(_error);
257
+ }
258
+ }
259
+ /**
260
+ * POST /api/sync/request
261
+ * Check which blocks are available locally and which need to be fetched.
262
+ *
263
+ * @param req - Request containing array of block IDs to check
264
+ * @returns Partitioned lists of available, missing, and unknown blocks
265
+ * @requirements 4.3
266
+ */
267
+ async handleSyncRequest(req) {
268
+ try {
269
+ const { blockIds } = req.body;
270
+ if (!blockIds || !Array.isArray(blockIds)) {
271
+ return (0, errorResponse_1.validationError)('Missing required field: blockIds (must be an array)');
272
+ }
273
+ // Validate all block IDs are strings
274
+ for (const blockId of blockIds) {
275
+ if (typeof blockId !== 'string') {
276
+ return (0, errorResponse_1.validationError)('All blockIds must be strings');
277
+ }
278
+ }
279
+ const availabilityService = this.getAvailabilityService();
280
+ const localNodeId = availabilityService.getLocalNodeId();
281
+ const available = [];
282
+ const missing = [];
283
+ const unknown = [];
284
+ for (const blockId of blockIds) {
285
+ try {
286
+ const locations = await availabilityService.getBlockLocations(blockId);
287
+ if (locations.length === 0) {
288
+ // No known locations - unknown status
289
+ unknown.push(blockId);
290
+ }
291
+ else if (locations.some((loc) => loc.nodeId === localNodeId)) {
292
+ // Block is available locally
293
+ available.push(blockId);
294
+ }
295
+ else {
296
+ // Block exists but not locally - needs to be fetched
297
+ missing.push(blockId);
298
+ }
299
+ }
300
+ catch {
301
+ // Error querying - treat as unknown
302
+ unknown.push(blockId);
303
+ }
304
+ }
305
+ return {
306
+ statusCode: 200,
307
+ response: {
308
+ message: 'OK',
309
+ available,
310
+ missing,
311
+ unknown,
312
+ },
313
+ };
314
+ }
315
+ catch (_error) {
316
+ return (0, errorResponse_1.handleError)(_error);
317
+ }
318
+ }
319
+ /**
320
+ * POST /api/sync/reconcile
321
+ * Initiate reconciliation with connected peers.
322
+ *
323
+ * @returns Reconciliation result with statistics
324
+ * @requirements 4.4
325
+ */
326
+ async handleReconcile() {
327
+ try {
328
+ const reconciliationService = this.getReconciliationService();
329
+ const availabilityService = this.getAvailabilityService();
330
+ // Get list of connected peers (not in partition mode)
331
+ let peerIds = [];
332
+ if (!availabilityService.isInPartitionMode()) {
333
+ // In a real implementation, we would get the list of connected peers
334
+ // For now, we'll use an empty list which will result in a no-op reconciliation
335
+ peerIds = [];
336
+ }
337
+ const result = await reconciliationService.reconcile(peerIds);
338
+ return {
339
+ statusCode: 200,
340
+ response: {
341
+ message: 'Reconciliation completed',
342
+ result,
343
+ },
344
+ };
345
+ }
346
+ catch (_error) {
347
+ return (0, errorResponse_1.handleError)(_error);
348
+ }
349
+ }
350
+ }
351
+ exports.SyncController = SyncController;
352
+ //# sourceMappingURL=sync.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sync.js","sourceRoot":"","sources":["../../../../../../brightchain-api-lib/src/lib/controllers/api/sync.ts"],"names":[],"mappings":";;;AAaA,4EAK6C;AAS7C,6DAImC;AACnC,kCAAyC;AAkBzC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkDG;AACH,MAAa,cAEX,SAAQ,qBAAoE;IAK5E,YAAY,WAAyC;QACnD,KAAK,CAAC,WAAW,CAAC,CAAC;QALb,wBAAmB,GAAgC,IAAI,CAAC;QACxD,0BAAqB,GAAkC,IAAI,CAAC;QAC5D,gBAAW,GAAmC,IAAI,CAAC;IAI3D,CAAC;IAED;;;OAGG;IACI,sBAAsB,CAAC,OAA6B;QACzD,IAAI,CAAC,mBAAmB,GAAG,OAAO,CAAC;IACrC,CAAC;IAED;;;OAGG;IACI,wBAAwB,CAAC,OAA+B;QAC7D,IAAI,CAAC,qBAAqB,GAAG,OAAO,CAAC;IACvC,CAAC;IAED;;;;OAIG;IACI,cAAc,CAAC,WAAoC;QACxD,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;IACjC,CAAC;IAED;;;OAGG;IACK,sBAAsB;QAC5B,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE,CAAC;YAC9B,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAC;QACzD,CAAC;QACD,OAAO,IAAI,CAAC,mBAAmB,CAAC;IAClC,CAAC;IAED;;;OAGG;IACK,wBAAwB;QAC9B,IAAI,CAAC,IAAI,CAAC,qBAAqB,EAAE,CAAC;YAChC,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAC;QAC3D,CAAC;QACD,OAAO,IAAI,CAAC,qBAAqB,CAAC;IACpC,CAAC;IAES,oBAAoB;QAC5B,IAAI,CAAC,gBAAgB,GAAG;YACtB,IAAA,gCAAW,EAAC,MAAM,EAAE,4BAA4B,EAAE;gBAChD,UAAU,EAAE,gBAAgB;gBAC5B,iBAAiB,EAAE,KAAK;gBACxB,uBAAuB,EAAE,KAAK;aAC/B,CAAC;YACF,IAAA,gCAAW,EAAC,KAAK,EAAE,4BAA4B,EAAE;gBAC/C,UAAU,EAAE,mBAAmB;gBAC/B,iBAAiB,EAAE,KAAK;gBACxB,uBAAuB,EAAE,KAAK;aAC/B,CAAC;YACF,IAAA,gCAAW,EAAC,MAAM,EAAE,UAAU,EAAE;gBAC9B,UAAU,EAAE,aAAa;gBACzB,iBAAiB,EAAE,KAAK;gBACxB,uBAAuB,EAAE,KAAK;aAC/B,CAAC;YACF,IAAA,gCAAW,EAAC,MAAM,EAAE,YAAY,EAAE;gBAChC,UAAU,EAAE,WAAW;gBACvB,iBAAiB,EAAE,KAAK;gBACxB,uBAAuB,EAAE,KAAK;aAC/B,CAAC;SACH,CAAC;QAEF,IAAI,CAAC,QAAQ,GAAG;YACd,cAAc,EAAE,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC;YACpD,iBAAiB,EAAE,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,IAAI,CAAC;YAC1D,WAAW,EAAE,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC;YAC9C,SAAS,EAAE,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC;SAC3C,CAAC;IACJ,CAAC;IAED;;OAEG;IACK,cAAc,CAAC,QAAyB;QAC9C,OAAO;YACL,MAAM,EAAE,QAAQ,CAAC,MAAM;YACvB,QAAQ,EAAE,QAAQ,CAAC,QAAQ,CAAC,WAAW,EAAE;YACzC,SAAS,EAAE,QAAQ,CAAC,SAAS;YAC7B,eAAe,EAAE,QAAQ,CAAC,eAAe;SAC1C,CAAC;IACJ,CAAC;IAED;;;;;;;OAOG;IACK,KAAK,CAAC,oBAAoB,CAAC,GAAY;QAI7C,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,GAAwC,CAAC;YAC1D,MAAM,EAAE,OAAO,EAAE,GAAG,QAAQ,CAAC,MAAM,CAAC;YACpC,MAAM,EAAE,aAAa,EAAE,GAAG,QAAQ,CAAC,IAAI,CAAC;YAExC,IAAI,CAAC,OAAO,EAAE,CAAC;gBACb,OAAO,IAAA,+BAAe,EAAC,qCAAqC,CAAC,CAAC;YAChE,CAAC;YAED,IAAI,CAAC,aAAa,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,aAAa,CAAC,EAAE,CAAC;gBACpD,OAAO,IAAA,+BAAe,EACpB,0DAA0D,CAC3D,CAAC;YACJ,CAAC;YAED,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC/B,OAAO,IAAA,+BAAe,EAAC,qCAAqC,CAAC,CAAC;YAChE,CAAC;YAED,oCAAoC;YACpC,KAAK,MAAM,MAAM,IAAI,aAAa,EAAE,CAAC;gBACnC,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;oBAC/B,OAAO,IAAA,+BAAe,EAAC,mCAAmC,CAAC,CAAC;gBAC9D,CAAC;YACH,CAAC;YAED,MAAM,mBAAmB,GAAG,IAAI,CAAC,sBAAsB,EAAE,CAAC;YAE1D,gCAAgC;YAChC,MAAM,SAAS,GAAG,MAAM,mBAAmB,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;YACvE,MAAM,WAAW,GAAG,mBAAmB,CAAC,cAAc,EAAE,CAAC;YACzD,MAAM,YAAY,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,MAAM,KAAK,WAAW,CAAC,CAAC;YAEzE,IAAI,CAAC,YAAY,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC5C,OAAO,IAAA,6BAAa,EAAC,OAAO,EAAE,OAAO,CAAC,CAAC;YACzC,CAAC;YAED,2CAA2C;YAC3C,wEAAwE;YACxE,MAAM,kBAAkB,GAA6B,EAAE,CAAC;YAExD,KAAK,MAAM,MAAM,IAAI,aAAa,EAAE,CAAC;gBACnC,IAAI,CAAC;oBACH,qEAAqE;oBACrE,MAAM,mBAAmB,CAAC,cAAc,CAAC,OAAO,EAAE;wBAChD,MAAM;wBACN,QAAQ,EAAE,IAAI,IAAI,EAAE;wBACpB,eAAe,EAAE,KAAK;qBACvB,CAAC,CAAC;oBAEH,kBAAkB,CAAC,IAAI,CAAC;wBACtB,MAAM;wBACN,OAAO,EAAE,IAAI;qBACd,CAAC,CAAC;oBAEH,yDAAyD;oBACzD,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;wBACrB,IAAI,CAAC,WAAW,CAAC,mBAAmB,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;oBAC9D,CAAC;gBACH,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACf,MAAM,YAAY,GAChB,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,CAAC;oBAC3D,kBAAkB,CAAC,IAAI,CAAC;wBACtB,MAAM;wBACN,OAAO,EAAE,KAAK;wBACd,KAAK,EAAE,YAAY;qBACpB,CAAC,CAAC;oBAEH,qDAAqD;oBACrD,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;wBACrB,IAAI,CAAC,WAAW,CAAC,mBAAmB,CAClC,OAAO,EACP,MAAM,EACN,KAAK,EACL,YAAY,CACb,CAAC;oBACJ,CAAC;gBACH,CAAC;YACH,CAAC;YAED,OAAO;gBACL,UAAU,EAAE,GAAG;gBACf,QAAQ,EAAE;oBACR,OAAO,EAAE,uBAAuB;oBAChC,OAAO;oBACP,kBAAkB;iBACnB;aACF,CAAC;QACJ,CAAC;QAAC,OAAO,MAAM,EAAE,CAAC;YAChB,OAAO,IAAA,2BAAW,EAAC,MAAM,CAAC,CAAC;QAC7B,CAAC;IACH,CAAC;IAED;;;;;;;OAOG;IACK,KAAK,CAAC,uBAAuB,CAAC,GAAY;QAIhD,IAAI,CAAC;YACH,MAAM,EAAE,OAAO,EAAE,GAAI,GAA4C,CAAC,MAAM,CAAC;YAEzE,IAAI,CAAC,OAAO,EAAE,CAAC;gBACb,OAAO,IAAA,+BAAe,EAAC,qCAAqC,CAAC,CAAC;YAChE,CAAC;YAED,MAAM,mBAAmB,GAAG,IAAI,CAAC,sBAAsB,EAAE,CAAC;YAC1D,MAAM,SAAS,GAAG,MAAM,mBAAmB,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;YAEvE,OAAO;gBACL,UAAU,EAAE,GAAG;gBACf,QAAQ,EAAE;oBACR,OAAO,EAAE,IAAI;oBACb,OAAO;oBACP,SAAS,EAAE,SAAS,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;iBAC5D;aACF,CAAC;QACJ,CAAC;QAAC,OAAO,MAAM,EAAE,CAAC;YAChB,OAAO,IAAA,2BAAW,EAAC,MAAM,CAAC,CAAC;QAC7B,CAAC;IACH,CAAC;IAED;;;;;;;OAOG;IACK,KAAK,CAAC,iBAAiB,CAAC,GAAY;QAI1C,IAAI,CAAC;YACH,MAAM,EAAE,QAAQ,EAAE,GAAI,GAAmC,CAAC,IAAI,CAAC;YAE/D,IAAI,CAAC,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAC1C,OAAO,IAAA,+BAAe,EACpB,qDAAqD,CACtD,CAAC;YACJ,CAAC;YAED,qCAAqC;YACrC,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;gBAC/B,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;oBAChC,OAAO,IAAA,+BAAe,EAAC,8BAA8B,CAAC,CAAC;gBACzD,CAAC;YACH,CAAC;YAED,MAAM,mBAAmB,GAAG,IAAI,CAAC,sBAAsB,EAAE,CAAC;YAC1D,MAAM,WAAW,GAAG,mBAAmB,CAAC,cAAc,EAAE,CAAC;YAEzD,MAAM,SAAS,GAAa,EAAE,CAAC;YAC/B,MAAM,OAAO,GAAa,EAAE,CAAC;YAC7B,MAAM,OAAO,GAAa,EAAE,CAAC;YAE7B,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;gBAC/B,IAAI,CAAC;oBACH,MAAM,SAAS,GACb,MAAM,mBAAmB,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;oBAEvD,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;wBAC3B,sCAAsC;wBACtC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;oBACxB,CAAC;yBAAM,IAAI,SAAS,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,MAAM,KAAK,WAAW,CAAC,EAAE,CAAC;wBAC/D,6BAA6B;wBAC7B,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;oBAC1B,CAAC;yBAAM,CAAC;wBACN,qDAAqD;wBACrD,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;oBACxB,CAAC;gBACH,CAAC;gBAAC,MAAM,CAAC;oBACP,oCAAoC;oBACpC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;gBACxB,CAAC;YACH,CAAC;YAED,OAAO;gBACL,UAAU,EAAE,GAAG;gBACf,QAAQ,EAAE;oBACR,OAAO,EAAE,IAAI;oBACb,SAAS;oBACT,OAAO;oBACP,OAAO;iBACR;aACF,CAAC;QACJ,CAAC;QAAC,OAAO,MAAM,EAAE,CAAC;YAChB,OAAO,IAAA,2BAAW,EAAC,MAAM,CAAC,CAAC;QAC7B,CAAC;IACH,CAAC;IAED;;;;;;OAMG;IACK,KAAK,CAAC,eAAe;QAI3B,IAAI,CAAC;YACH,MAAM,qBAAqB,GAAG,IAAI,CAAC,wBAAwB,EAAE,CAAC;YAC9D,MAAM,mBAAmB,GAAG,IAAI,CAAC,sBAAsB,EAAE,CAAC;YAE1D,sDAAsD;YACtD,IAAI,OAAO,GAAa,EAAE,CAAC;YAE3B,IAAI,CAAC,mBAAmB,CAAC,iBAAiB,EAAE,EAAE,CAAC;gBAC7C,qEAAqE;gBACrE,+EAA+E;gBAC/E,OAAO,GAAG,EAAE,CAAC;YACf,CAAC;YAED,MAAM,MAAM,GAAG,MAAM,qBAAqB,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;YAE9D,OAAO;gBACL,UAAU,EAAE,GAAG;gBACf,QAAQ,EAAE;oBACR,OAAO,EAAE,0BAA0B;oBACnC,MAAM;iBACP;aACF,CAAC;QACJ,CAAC;QAAC,OAAO,MAAM,EAAE,CAAC;YAChB,OAAO,IAAA,2BAAW,EAAC,MAAM,CAAC,CAAC;QAC7B,CAAC;IACH,CAAC;CACF;AA7VD,wCA6VC"}
@@ -8,6 +8,7 @@ interface IUserHandlers extends TypedHandlers {
8
8
  register: ApiRequestHandler<IApiMessageResponse | ApiErrorResponse>;
9
9
  login: ApiRequestHandler<IApiMessageResponse | ApiErrorResponse>;
10
10
  profile: ApiRequestHandler<IApiMessageResponse | ApiErrorResponse>;
11
+ updateProfile: ApiRequestHandler<IApiMessageResponse | ApiErrorResponse>;
11
12
  }
12
13
  export declare class UserController<TID extends PlatformID = DefaultBackendIdType> extends BaseController<TID, IApiMessageResponse | ApiErrorResponse, IUserHandlers, CoreLanguageCode> {
13
14
  constructor(application: IBrightChainApplication<TID>);
@@ -15,6 +16,7 @@ export declare class UserController<TID extends PlatformID = DefaultBackendIdTyp
15
16
  private handleRegister;
16
17
  private handleLogin;
17
18
  private handleProfile;
19
+ private handleUpdateProfile;
18
20
  }
19
21
  export {};
20
22
  //# sourceMappingURL=user.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"user.d.ts","sourceRoot":"","sources":["../../../../../../brightchain-api-lib/src/lib/controllers/api/user.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,EACjB,mBAAmB,EAEnB,aAAa,EAEd,MAAM,qCAAqC,CAAC;AAC7C,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AAEvE,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAEzC,UAAU,aAAc,SAAQ,aAAa;IAC3C,QAAQ,EAAE,iBAAiB,CAAC,mBAAmB,GAAG,gBAAgB,CAAC,CAAC;IACpE,KAAK,EAAE,iBAAiB,CAAC,mBAAmB,GAAG,gBAAgB,CAAC,CAAC;IACjE,OAAO,EAAE,iBAAiB,CAAC,mBAAmB,GAAG,gBAAgB,CAAC,CAAC;CACpE;AAaD,qBAAa,cAAc,CACzB,GAAG,SAAS,UAAU,GAAG,oBAAoB,CAC7C,SAAQ,cAAc,CACtB,GAAG,EACH,mBAAmB,GAAG,gBAAgB,EACtC,aAAa,EACb,gBAAgB,CACjB;gBACa,WAAW,EAAE,uBAAuB,CAAC,GAAG,CAAC;IAIrD,SAAS,CAAC,oBAAoB,IAAI,IAAI;IA0BtC,OAAO,CAAC,cAAc,CAmCpB;IAEF,OAAO,CAAC,WAAW,CAgCjB;IAEF,OAAO,CAAC,aAAa,CAwBnB;CACH"}
1
+ {"version":3,"file":"user.d.ts","sourceRoot":"","sources":["../../../../../../brightchain-api-lib/src/lib/controllers/api/user.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,EACjB,mBAAmB,EAEnB,aAAa,EAEd,MAAM,qCAAqC,CAAC;AAC7C,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AAEvE,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAEzC,UAAU,aAAc,SAAQ,aAAa;IAC3C,QAAQ,EAAE,iBAAiB,CAAC,mBAAmB,GAAG,gBAAgB,CAAC,CAAC;IACpE,KAAK,EAAE,iBAAiB,CAAC,mBAAmB,GAAG,gBAAgB,CAAC,CAAC;IACjE,OAAO,EAAE,iBAAiB,CAAC,mBAAmB,GAAG,gBAAgB,CAAC,CAAC;IACnE,aAAa,EAAE,iBAAiB,CAAC,mBAAmB,GAAG,gBAAgB,CAAC,CAAC;CAC1E;AAsBD,qBAAa,cAAc,CACzB,GAAG,SAAS,UAAU,GAAG,oBAAoB,CAC7C,SAAQ,cAAc,CACtB,GAAG,EACH,mBAAmB,GAAG,gBAAgB,EACtC,aAAa,EACb,gBAAgB,CACjB;gBACa,WAAW,EAAE,uBAAuB,CAAC,GAAG,CAAC;IAIrD,SAAS,CAAC,oBAAoB,IAAI,IAAI;IAgCtC,OAAO,CAAC,cAAc,CAmCpB;IAEF,OAAO,CAAC,WAAW,CAgCjB;IAEF,OAAO,CAAC,aAAa,CAwEnB;IAEF,OAAO,CAAC,mBAAmB,CAwEzB;CACH"}
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.UserController = void 0;
4
+ const brightchain_lib_1 = require("@brightchain/brightchain-lib");
4
5
  const ecies_lib_1 = require("@digitaldefiance/ecies-lib");
5
6
  const node_express_suite_1 = require("@digitaldefiance/node-express-suite");
6
7
  const base_1 = require("../base");
@@ -71,13 +72,121 @@ class UserController extends base_1.BaseController {
71
72
  },
72
73
  };
73
74
  }
74
- return {
75
- statusCode: 200,
76
- response: {
77
- message: 'Profile retrieved',
78
- user,
79
- },
80
- };
75
+ try {
76
+ // Get energy account for balance and reputation
77
+ const energyStore = this.application.services.get('energyStore');
78
+ const memberChecksum = brightchain_lib_1.Checksum.fromHex(user.memberId);
79
+ const energyAccount = await energyStore.getOrCreate(memberChecksum);
80
+ // Try to get member profile from MemberStore if available
81
+ let memberProfile = null;
82
+ try {
83
+ const memberStore = this.application.services.get('memberStore');
84
+ if (memberStore) {
85
+ const profile = await memberStore.getMemberProfile(memberChecksum.toUint8Array());
86
+ if (profile.publicProfile) {
87
+ memberProfile = {
88
+ status: profile.publicProfile.status,
89
+ storageQuota: profile.publicProfile.storageQuota?.toString(),
90
+ storageUsed: profile.publicProfile.storageUsed?.toString(),
91
+ lastActive: profile.publicProfile.lastActive?.toISOString(),
92
+ dateCreated: profile.publicProfile.dateCreated?.toISOString(),
93
+ };
94
+ }
95
+ }
96
+ }
97
+ catch {
98
+ // MemberStore profile not available, continue with basic profile
99
+ }
100
+ return {
101
+ statusCode: 200,
102
+ response: {
103
+ message: 'Profile retrieved',
104
+ memberId: user.memberId,
105
+ energyBalance: energyAccount.balance,
106
+ availableBalance: energyAccount.availableBalance,
107
+ earned: energyAccount.earned,
108
+ spent: energyAccount.spent,
109
+ reserved: energyAccount.reserved,
110
+ reputation: energyAccount.reputation,
111
+ createdAt: energyAccount.createdAt.toISOString(),
112
+ lastUpdated: energyAccount.lastUpdated.toISOString(),
113
+ ...(memberProfile && { profile: memberProfile }),
114
+ },
115
+ };
116
+ }
117
+ catch {
118
+ return {
119
+ statusCode: 500,
120
+ response: {
121
+ message: 'Failed to retrieve profile',
122
+ error: 'Failed to retrieve profile',
123
+ },
124
+ };
125
+ }
126
+ };
127
+ this.handleUpdateProfile = async (req) => {
128
+ const user = req.user;
129
+ if (!user) {
130
+ return {
131
+ statusCode: 401,
132
+ response: {
133
+ message: 'Not authenticated',
134
+ error: 'Not authenticated',
135
+ },
136
+ };
137
+ }
138
+ try {
139
+ const updateData = req.body;
140
+ const memberChecksum = brightchain_lib_1.Checksum.fromHex(user.memberId);
141
+ const memberIdBytes = memberChecksum.toUint8Array();
142
+ // Try to update member profile in MemberStore if available
143
+ let profileUpdated = false;
144
+ try {
145
+ const memberStore = this.application.services.get('memberStore');
146
+ if (memberStore && updateData.settings) {
147
+ // Build complete settings object with defaults for missing values
148
+ const completeSettings = {
149
+ autoReplication: updateData.settings.autoReplication ?? true,
150
+ minRedundancy: updateData.settings.minRedundancy ?? 3,
151
+ preferredRegions: updateData.settings.preferredRegions ?? [],
152
+ };
153
+ await memberStore.updateMember(memberIdBytes, {
154
+ id: memberIdBytes,
155
+ privateChanges: {
156
+ settings: completeSettings,
157
+ },
158
+ });
159
+ profileUpdated = true;
160
+ }
161
+ }
162
+ catch {
163
+ // MemberStore update not available, continue
164
+ }
165
+ // Get updated energy account for response
166
+ const energyStore = this.application.services.get('energyStore');
167
+ const energyAccount = await energyStore.getOrCreate(memberChecksum);
168
+ return {
169
+ statusCode: 200,
170
+ response: {
171
+ message: profileUpdated
172
+ ? 'Profile updated successfully'
173
+ : 'Profile update partially completed',
174
+ memberId: user.memberId,
175
+ energyBalance: energyAccount.balance,
176
+ reputation: energyAccount.reputation,
177
+ updated: profileUpdated,
178
+ },
179
+ };
180
+ }
181
+ catch {
182
+ return {
183
+ statusCode: 500,
184
+ response: {
185
+ message: 'Failed to update profile',
186
+ error: 'Failed to update profile',
187
+ },
188
+ };
189
+ }
81
190
  };
82
191
  }
83
192
  initRouteDefinitions() {
@@ -97,11 +206,17 @@ class UserController extends base_1.BaseController {
97
206
  useAuthentication: true,
98
207
  useCryptoAuthentication: false,
99
208
  }),
209
+ (0, node_express_suite_1.routeConfig)('put', '/profile', {
210
+ handlerKey: 'updateProfile',
211
+ useAuthentication: true,
212
+ useCryptoAuthentication: false,
213
+ }),
100
214
  ];
101
215
  this.handlers = {
102
216
  register: this.handleRegister.bind(this),
103
217
  login: this.handleLogin.bind(this),
104
218
  profile: this.handleProfile.bind(this),
219
+ updateProfile: this.handleUpdateProfile.bind(this),
105
220
  };
106
221
  }
107
222
  }
@@ -1 +1 @@
1
- {"version":3,"file":"user.js","sourceRoot":"","sources":["../../../../../../brightchain-api-lib/src/lib/controllers/api/user.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"user.js","sourceRoot":"","sources":["../../../../../../brightchain-api-lib/src/lib/controllers/api/user.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"brightChainApiStrings.d.ts","sourceRoot":"","sources":["../../../../../brightchain-api-lib/src/lib/enumerations/brightChainApiStrings.ts"],"names":[],"mappings":"AAAA,oBAAY,qBAAqB;CAEhC"}
1
+ {"version":3,"file":"brightChainApiStrings.d.ts","sourceRoot":"","sources":["../../../../../brightchain-api-lib/src/lib/enumerations/brightChainApiStrings.ts"],"names":[],"mappings":"AAAA,oBAAY,qBAAqB;CAAG"}
@@ -1 +1 @@
1
- {"version":3,"file":"brightChainApiStrings.js","sourceRoot":"","sources":["../../../../../brightchain-api-lib/src/lib/enumerations/brightChainApiStrings.ts"],"names":[],"mappings":";;;AAAA,IAAY,qBAEX;AAFD,WAAY,qBAAqB;AAEjC,CAAC,EAFW,qBAAqB,qCAArB,qBAAqB,QAEhC"}
1
+ {"version":3,"file":"brightChainApiStrings.js","sourceRoot":"","sources":["../../../../../brightchain-api-lib/src/lib/enumerations/brightChainApiStrings.ts"],"names":[],"mappings":";;;AAAA,IAAY,qBAAwB;AAApC,WAAY,qBAAqB;AAAE,CAAC,EAAxB,qBAAqB,qCAArB,qBAAqB,QAAG"}
@@ -1,9 +1,9 @@
1
+ import { CoreLanguageCode } from '@digitaldefiance/i18n-lib';
1
2
  import { SuiteCoreStringKeyValue } from '@digitaldefiance/suite-core-lib';
2
3
  import { SymmetricErrorType } from '../enumerations/symmetric-error-type';
3
- import { StringLanguage } from '../interfaces/request-user';
4
4
  import { TypedError } from './typed-error-local';
5
5
  export declare class SymmetricError extends TypedError<SymmetricErrorType, SuiteCoreStringKeyValue> {
6
6
  protected get reasonMap(): Record<SymmetricErrorType, SuiteCoreStringKeyValue>;
7
- constructor(type: SymmetricErrorType, language?: StringLanguage);
7
+ constructor(type: SymmetricErrorType, language?: CoreLanguageCode);
8
8
  }
9
9
  //# sourceMappingURL=symmetric.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"symmetric.d.ts","sourceRoot":"","sources":["../../../../../brightchain-api-lib/src/lib/errors/symmetric.ts"],"names":[],"mappings":"AACA,OAAO,EAEL,uBAAuB,EACxB,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAAE,kBAAkB,EAAE,MAAM,sCAAsC,CAAC;AAC1E,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAC5D,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAEjD,qBAAa,cAAe,SAAQ,UAAU,CAC5C,kBAAkB,EAClB,uBAAuB,CACxB;IACC,SAAS,KAAK,SAAS,IAAI,MAAM,CAAC,kBAAkB,EAAE,uBAAuB,CAAC,CAO7E;gBACW,IAAI,EAAE,kBAAkB,EAAE,QAAQ,CAAC,EAAE,cAAc;CAOhE"}
1
+ {"version":3,"file":"symmetric.d.ts","sourceRoot":"","sources":["../../../../../brightchain-api-lib/src/lib/errors/symmetric.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAC7D,OAAO,EAEL,uBAAuB,EACxB,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAAE,kBAAkB,EAAE,MAAM,sCAAsC,CAAC;AAC1E,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAEjD,qBAAa,cAAe,SAAQ,UAAU,CAC5C,kBAAkB,EAClB,uBAAuB,CACxB;IACC,SAAS,KAAK,SAAS,IAAI,MAAM,CAC/B,kBAAkB,EAClB,uBAAuB,CACxB,CAOA;gBACW,IAAI,EAAE,kBAAkB,EAAE,QAAQ,CAAC,EAAE,gBAAgB;CAOlE"}
@@ -1 +1 @@
1
- {"version":3,"file":"symmetric.js","sourceRoot":"","sources":["../../../../../brightchain-api-lib/src/lib/errors/symmetric.ts"],"names":[],"mappings":";;;AAAA,kEAAgE;AAChE,oEAGyC;AACzC,+EAA0E;AAE1E,2DAAiD;AAEjD,MAAa,cAAe,SAAQ,8BAGnC;IACC,IAAc,SAAS;QACrB,OAAO;YACL,CAAC,yCAAkB,CAAC,mBAAmB,CAAC,EACtC,mCAAkB,CAAC,kCAAkC;YACvD,CAAC,yCAAkB,CAAC,gBAAgB,CAAC,EACnC,mCAAkB,CAAC,uCAAuC;SAC7D,CAAC;IACJ,CAAC;IACD,YAAY,IAAwB,EAAE,QAAyB;QAC7D,KAAK,CAAC,IAAI,EAAE,QAAQ,EAAE;YACpB,QAAQ,EAAE,kCAAgB,CAAC,gBAAgB;YAC3C,SAAS,EAAE,kCAAgB,CAAC,iBAAiB;SAC9C,CAAC,CAAC;QACH,IAAI,CAAC,IAAI,GAAG,gBAAgB,CAAC;IAC/B,CAAC;CACF;AAnBD,wCAmBC"}
1
+ {"version":3,"file":"symmetric.js","sourceRoot":"","sources":["../../../../../brightchain-api-lib/src/lib/errors/symmetric.ts"],"names":[],"mappings":";;;AAAA,kEAAgE;AAEhE,oEAGyC;AACzC,+EAA0E;AAC1E,2DAAiD;AAEjD,MAAa,cAAe,SAAQ,8BAGnC;IACC,IAAc,SAAS;QAIrB,OAAO;YACL,CAAC,yCAAkB,CAAC,mBAAmB,CAAC,EACtC,mCAAkB,CAAC,kCAAkC;YACvD,CAAC,yCAAkB,CAAC,gBAAgB,CAAC,EACnC,mCAAkB,CAAC,uCAAuC;SAC7D,CAAC;IACJ,CAAC;IACD,YAAY,IAAwB,EAAE,QAA2B;QAC/D,KAAK,CAAC,IAAI,EAAE,QAAQ,EAAE;YACpB,QAAQ,EAAE,kCAAgB,CAAC,gBAAgB;YAC3C,SAAS,EAAE,kCAAgB,CAAC,iBAAiB;SAC9C,CAAC,CAAC;QACH,IAAI,CAAC,IAAI,GAAG,gBAAgB,CAAC;IAC/B,CAAC;CACF;AAtBD,wCAsBC"}
@@ -1,10 +1,10 @@
1
1
  import { BrightChainStringKey } from '@brightchain/brightchain-lib';
2
- import { StringLanguage } from '../interfaces/request-user';
2
+ import { CoreLanguageCode } from '@digitaldefiance/i18n-lib';
3
3
  export declare abstract class TypedError<T extends string | number, K extends string = BrightChainStringKey> extends Error {
4
4
  readonly type: T;
5
- readonly language?: StringLanguage | undefined;
5
+ readonly language?: CoreLanguageCode | undefined;
6
6
  readonly otherVars?: Record<string, string | number> | undefined;
7
7
  protected abstract get reasonMap(): Record<T, K>;
8
- constructor(type: T, language?: StringLanguage | undefined, otherVars?: Record<string, string | number> | undefined);
8
+ constructor(type: T, language?: CoreLanguageCode | undefined, otherVars?: Record<string, string | number> | undefined);
9
9
  }
10
10
  //# sourceMappingURL=typed-error-local.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"typed-error-local.d.ts","sourceRoot":"","sources":["../../../../../brightchain-api-lib/src/lib/errors/typed-error-local.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,oBAAoB,EAErB,MAAM,8BAA8B,CAAC;AACtC,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAE5D,8BAAsB,UAAU,CAC9B,CAAC,SAAS,MAAM,GAAG,MAAM,EACzB,CAAC,SAAS,MAAM,GAAG,oBAAoB,CACvC,SAAQ,KAAK;aAIK,IAAI,EAAE,CAAC;aACP,QAAQ,CAAC,EAAE,cAAc;aACzB,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC;IAL7D,SAAS,CAAC,QAAQ,KAAK,SAAS,IAAI,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;gBAG/B,IAAI,EAAE,CAAC,EACP,QAAQ,CAAC,EAAE,cAAc,YAAA,EACzB,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,YAAA;CAe9D"}
1
+ {"version":3,"file":"typed-error-local.d.ts","sourceRoot":"","sources":["../../../../../brightchain-api-lib/src/lib/errors/typed-error-local.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,oBAAoB,EAAa,MAAM,8BAA8B,CAAC;AAC/E,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAE7D,8BAAsB,UAAU,CAC9B,CAAC,SAAS,MAAM,GAAG,MAAM,EACzB,CAAC,SAAS,MAAM,GAAG,oBAAoB,CACvC,SAAQ,KAAK;aAIK,IAAI,EAAE,CAAC;aACP,QAAQ,CAAC,EAAE,gBAAgB;aAC3B,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC;IAL7D,SAAS,CAAC,QAAQ,KAAK,SAAS,IAAI,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;gBAG/B,IAAI,EAAE,CAAC,EACP,QAAQ,CAAC,EAAE,gBAAgB,YAAA,EAC3B,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,YAAA;CAe9D"}
@@ -1 +1 @@
1
- {"version":3,"file":"typed-error-local.js","sourceRoot":"","sources":["../../../../../brightchain-api-lib/src/lib/errors/typed-error-local.ts"],"names":[],"mappings":";;;AAAA,gEAAgE;AAChE,mDAAmD;AACnD,kEAGsC;AAGtC,MAAsB,UAGpB,SAAQ,KAAK;IAGb,YACkB,IAAO,EACP,QAAyB,EACzB,SAA2C;QAE3D,uCAAuC;QACvC,MAAM,SAAS,GAAI,GAAG,CAAC,MAA4B,CAAC,SAAS,CAAC,SAAS,CAAC;QAExE,yCAAyC;QACzC,KAAK,CAAC,IAAA,2BAAS,EAAC,SAAS,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC,CAAC;QARvC,SAAI,GAAJ,IAAI,CAAG;QACP,aAAQ,GAAR,QAAQ,CAAiB;QACzB,cAAS,GAAT,SAAS,CAAkC;QAQ3D,iBAAiB;QACjB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;QAElC,sDAAsD;QACtD,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IACpD,CAAC;CACF;AAxBD,gCAwBC"}
1
+ {"version":3,"file":"typed-error-local.js","sourceRoot":"","sources":["../../../../../brightchain-api-lib/src/lib/errors/typed-error-local.ts"],"names":[],"mappings":";;;AAAA,gEAAgE;AAChE,mDAAmD;AACnD,kEAA+E;AAG/E,MAAsB,UAGpB,SAAQ,KAAK;IAGb,YACkB,IAAO,EACP,QAA2B,EAC3B,SAA2C;QAE3D,uCAAuC;QACvC,MAAM,SAAS,GAAI,GAAG,CAAC,MAA4B,CAAC,SAAS,CAAC,SAAS,CAAC;QAExE,yCAAyC;QACzC,KAAK,CAAC,IAAA,2BAAS,EAAC,SAAS,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC,CAAC;QARvC,SAAI,GAAJ,IAAI,CAAG;QACP,aAAQ,GAAR,QAAQ,CAAmB;QAC3B,cAAS,GAAT,SAAS,CAAkC;QAQ3D,iBAAiB;QACjB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;QAElC,sDAAsD;QACtD,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IACpD,CAAC;CACF;AAxBD,gCAwBC"}
@@ -1,10 +1,11 @@
1
1
  import { PlatformID } from '@digitaldefiance/node-ecies-lib';
2
2
  import { IApplication } from '@digitaldefiance/node-express-suite';
3
3
  import { Environment } from '../environment';
4
+ import { DefaultBackendIdType } from '../types/backend-id';
4
5
  /**
5
6
  * Extended application interface with BrightChain-specific methods
6
7
  */
7
- export interface IBrightChainApplication<TID extends PlatformID = Buffer> extends IApplication<TID> {
8
+ export interface IBrightChainApplication<TID extends PlatformID = DefaultBackendIdType> extends IApplication<TID> {
8
9
  get environment(): Environment<TID>;
9
10
  /**
10
11
  * Get a controller by name
@@ -1 +1 @@
1
- {"version":3,"file":"application.d.ts","sourceRoot":"","sources":["../../../../../brightchain-api-lib/src/lib/interfaces/application.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAC7D,OAAO,EAAE,YAAY,EAAE,MAAM,qCAAqC,CAAC;AACnE,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAE7C;;GAEG;AACH,MAAM,WAAW,uBAAuB,CACtC,GAAG,SAAS,UAAU,GAAG,MAAM,CAC/B,SAAQ,YAAY,CAAC,GAAG,CAAC;IACzB,IAAI,WAAW,IAAI,WAAW,CAAC,GAAG,CAAC,CAAC;IACpC;;;;OAIG;IACH,aAAa,CAAC,CAAC,GAAG,OAAO,EAAE,IAAI,EAAE,MAAM,GAAG,CAAC,CAAC;IAE5C;;;;OAIG;IACH,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO,GAAG,IAAI,CAAC;CACxD"}
1
+ {"version":3,"file":"application.d.ts","sourceRoot":"","sources":["../../../../../brightchain-api-lib/src/lib/interfaces/application.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAC7D,OAAO,EAAE,YAAY,EAAE,MAAM,qCAAqC,CAAC;AACnE,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAE3D;;GAEG;AACH,MAAM,WAAW,uBAAuB,CACtC,GAAG,SAAS,UAAU,GAAG,oBAAoB,CAC7C,SAAQ,YAAY,CAAC,GAAG,CAAC;IACzB,IAAI,WAAW,IAAI,WAAW,CAAC,GAAG,CAAC,CAAC;IACpC;;;;OAIG;IACH,aAAa,CAAC,CAAC,GAAG,OAAO,EAAE,IAAI,EAAE,MAAM,GAAG,CAAC,CAAC;IAE5C;;;;OAIG;IACH,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO,GAAG,IAAI,CAAC;CACxD"}