@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,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":"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"}
|
|
@@ -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":"
|
|
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
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
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":";;;AAAA,0DAA0D;AAG1D,4EAO6C;AAI7C,kCAAyC;
|
|
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;
|
|
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,
|
|
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?:
|
|
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,
|
|
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;
|
|
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 {
|
|
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?:
|
|
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?:
|
|
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,
|
|
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,
|
|
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 =
|
|
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;
|
|
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"}
|