@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
@@ -64,13 +64,41 @@ class EnergyController extends base_1.BaseController {
64
64
  },
65
65
  };
66
66
  }
67
- return {
68
- statusCode: 200,
69
- response: {
70
- message: 'Transactions retrieved',
71
- transactions: [],
72
- },
73
- };
67
+ try {
68
+ const energyLedger = this.application.services.get('energyLedger');
69
+ const memberChecksum = brightchain_lib_1.Checksum.fromHex(user.memberId);
70
+ const transactions = energyLedger.getByMember(memberChecksum);
71
+ // Map transactions to API response format
72
+ const transactionList = transactions.map((tx) => ({
73
+ id: tx.id.toHex(),
74
+ timestamp: tx.timestamp.toISOString(),
75
+ source: tx.source.toHex(),
76
+ destination: tx.destination.toHex(),
77
+ amount: tx.amount,
78
+ operationType: tx.operationType,
79
+ blockId: tx.blockId?.toHex(),
80
+ metadata: tx.metadata,
81
+ }));
82
+ // Sort by timestamp descending (most recent first)
83
+ transactionList.sort((a, b) => new Date(b.timestamp).getTime() - new Date(a.timestamp).getTime());
84
+ return {
85
+ statusCode: 200,
86
+ response: {
87
+ message: 'Transactions retrieved',
88
+ transactions: transactionList,
89
+ count: transactionList.length,
90
+ },
91
+ };
92
+ }
93
+ catch {
94
+ return {
95
+ statusCode: 500,
96
+ response: {
97
+ message: 'Failed to retrieve transactions',
98
+ error: 'Failed to retrieve transactions',
99
+ },
100
+ };
101
+ }
74
102
  };
75
103
  }
76
104
  initRouteDefinitions() {
@@ -1 +1 @@
1
- {"version":3,"file":"energy.js","sourceRoot":"","sources":["../../../../../../brightchain-api-lib/src/lib/controllers/api/energy.ts"],"names":[],"mappings":";;;AAAA,kEAA4E;AAG5E,4EAO6C;AAG7C,kCAAyC;AAOzC,MAAa,gBAEX,SAAQ,qBAKT;IACC,YAAY,WAAyC;QACnD,KAAK,CAAC,WAAW,CAAC,CAAC;QAuBb,qBAAgB,GAEpB,KAAK,EACP,GAAG,EACmE,EAAE;YACxE,MAAM,IAAI,GAAI,GAAuC,CAAC,IAAI,CAAC;YAE3D,IAAI,CAAC,IAAI,EAAE,CAAC;gBACV,OAAO;oBACL,UAAU,EAAE,GAAG;oBACf,QAAQ,EAAE;wBACR,OAAO,EAAE,mBAAmB;wBAC5B,KAAK,EAAE,mBAAmB;qBAC3B;iBACF,CAAC;YACJ,CAAC;YAED,IAAI,CAAC;gBACH,MAAM,WAAW,GACf,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,GAAG,CAAqB,aAAa,CAAC,CAAC;gBACnE,MAAM,cAAc,GAAG,0BAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;gBACvD,MAAM,OAAO,GAAG,WAAW,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;gBAEhD,IAAI,CAAC,OAAO,EAAE,CAAC;oBACb,OAAO;wBACL,UAAU,EAAE,GAAG;wBACf,QAAQ,EAAE;4BACR,OAAO,EAAE,0BAA0B;4BACnC,KAAK,EAAE,0BAA0B;yBAClC;qBACF,CAAC;gBACJ,CAAC;gBAED,OAAO;oBACL,UAAU,EAAE,GAAG;oBACf,QAAQ,EAAE;wBACR,OAAO,EAAE,mBAAmB;wBAC5B,OAAO,EAAE,OAAO,CAAC,OAAO;wBACxB,MAAM,EAAE,OAAO,CAAC,MAAM;wBACtB,KAAK,EAAE,OAAO,CAAC,KAAK;wBACpB,QAAQ,EAAE,OAAO,CAAC,QAAQ;wBAC1B,UAAU,EAAE,OAAO,CAAC,UAAU;qBACR;iBACzB,CAAC;YACJ,CAAC;YAAC,MAAM,CAAC;gBACP,OAAO;oBACL,UAAU,EAAE,GAAG;oBACf,QAAQ,EAAE;wBACR,OAAO,EAAE,4BAA4B;wBACrC,KAAK,EAAE,4BAA4B;qBACpC;iBACF,CAAC;YACJ,CAAC;QACH,CAAC,CAAC;QAEM,0BAAqB,GAEzB,KAAK,EACP,GAAG,EACmE,EAAE;YACxE,MAAM,IAAI,GAAI,GAAuC,CAAC,IAAI,CAAC;YAE3D,IAAI,CAAC,IAAI,EAAE,CAAC;gBACV,OAAO;oBACL,UAAU,EAAE,GAAG;oBACf,QAAQ,EAAE;wBACR,OAAO,EAAE,mBAAmB;wBAC5B,KAAK,EAAE,mBAAmB;qBAC3B;iBACF,CAAC;YACJ,CAAC;YAED,OAAO;gBACL,UAAU,EAAE,GAAG;gBACf,QAAQ,EAAE;oBACR,OAAO,EAAE,wBAAwB;oBACjC,YAAY,EAAE,EAAE;iBACM;aACzB,CAAC;QACJ,CAAC,CAAC;IArGF,CAAC;IAES,oBAAoB;QAC5B,IAAI,CAAC,gBAAgB,GAAG;YACtB,IAAA,gCAAW,EAAC,KAAK,EAAE,UAAU,EAAE;gBAC7B,UAAU,EAAE,YAAY;gBACxB,iBAAiB,EAAE,IAAI;gBACvB,uBAAuB,EAAE,KAAK;aAC/B,CAAC;YACF,IAAA,gCAAW,EAAC,KAAK,EAAE,eAAe,EAAE;gBAClC,UAAU,EAAE,iBAAiB;gBAC7B,iBAAiB,EAAE,IAAI;gBACvB,uBAAuB,EAAE,KAAK;aAC/B,CAAC;SACH,CAAC;QAEF,IAAI,CAAC,QAAQ,GAAG;YACd,UAAU,EAAE,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC;YAC5C,eAAe,EAAE,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC;SACvD,CAAC;IACJ,CAAC;CAkFF;AAhHD,4CAgHC"}
1
+ {"version":3,"file":"energy.js","sourceRoot":"","sources":["../../../../../../brightchain-api-lib/src/lib/controllers/api/energy.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,95 @@
1
+ import { IDetailedHealthResponse, IHealthResponse } from '@brightchain/brightchain-lib';
2
+ import { CoreLanguageCode } from '@digitaldefiance/i18n-lib';
3
+ import { PlatformID } from '@digitaldefiance/node-ecies-lib';
4
+ import { ApiErrorResponse, ApiRequestHandler, TypedHandlers } from '@digitaldefiance/node-express-suite';
5
+ import { IBrightChainApplication } from '../../interfaces/application';
6
+ import { DefaultBackendIdType } from '../../shared-types';
7
+ import { BaseController } from '../base';
8
+ type HealthApiResponse = IHealthResponse | IDetailedHealthResponse | ApiErrorResponse;
9
+ interface IHealthHandlers extends TypedHandlers {
10
+ getHealth: ApiRequestHandler<IHealthResponse | ApiErrorResponse>;
11
+ getDetailedHealth: ApiRequestHandler<IDetailedHealthResponse | ApiErrorResponse>;
12
+ }
13
+ /**
14
+ * Controller for health check and status endpoints.
15
+ *
16
+ * Provides REST API endpoints for monitoring the API server health
17
+ * and checking the status of dependencies.
18
+ *
19
+ * ## Endpoints
20
+ *
21
+ * ### GET /api/health
22
+ * Basic health check returning server status, uptime, and version.
23
+ * Response time should be under 100ms.
24
+ *
25
+ * **Response:**
26
+ * - `status` (string): 'healthy' | 'degraded' | 'unhealthy' | 'starting'
27
+ * - `uptime` (number): Server uptime in seconds
28
+ * - `timestamp` (string): ISO timestamp of the response
29
+ * - `version` (string): API version
30
+ *
31
+ * ### GET /api/health/detailed
32
+ * Detailed health check with dependency status.
33
+ * Returns 503 when critical dependencies are unhealthy.
34
+ *
35
+ * **Response:**
36
+ * - All fields from basic health check
37
+ * - `dependencies` (object): Status of each dependency
38
+ * - `blockStore`: Block storage service status
39
+ * - `messageService`: Message passing service status
40
+ * - `webSocketServer`: WebSocket server status
41
+ *
42
+ * @requirements 6.1, 6.2, 6.3, 6.4, 6.5
43
+ */
44
+ export declare class HealthController<TID extends PlatformID = DefaultBackendIdType> extends BaseController<TID, HealthApiResponse, IHealthHandlers, CoreLanguageCode> {
45
+ private static readonly VERSION;
46
+ private static startTime;
47
+ private static isStarting;
48
+ constructor(application: IBrightChainApplication<TID>);
49
+ /**
50
+ * Mark the server as fully initialized (no longer starting)
51
+ */
52
+ static markReady(): void;
53
+ /**
54
+ * Mark the server as starting (for testing or restart scenarios)
55
+ */
56
+ static markStarting(): void;
57
+ /**
58
+ * Check if the server is in starting state
59
+ */
60
+ static isInStartingState(): boolean;
61
+ /**
62
+ * Reset the start time (for testing)
63
+ */
64
+ static resetStartTime(): void;
65
+ protected initRouteDefinitions(): void;
66
+ /**
67
+ * Calculate server uptime in seconds
68
+ */
69
+ private getUptime;
70
+ /**
71
+ * GET /api/health
72
+ * Basic health check returning server status, uptime, timestamp, and version.
73
+ *
74
+ * Returns 503 with "starting" status during initialization.
75
+ * Response time should be under 100ms.
76
+ *
77
+ * @requirements 6.1, 6.4, 6.5
78
+ */
79
+ private handleGetHealth;
80
+ /**
81
+ * Check the health of a dependency
82
+ */
83
+ private checkDependencyHealth;
84
+ /**
85
+ * GET /api/health/detailed
86
+ * Detailed health check with dependency status.
87
+ *
88
+ * Returns 503 when critical dependencies are unhealthy.
89
+ *
90
+ * @requirements 6.2, 6.3, 6.5
91
+ */
92
+ private handleGetDetailedHealth;
93
+ }
94
+ export {};
95
+ //# sourceMappingURL=health.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"health.d.ts","sourceRoot":"","sources":["../../../../../../brightchain-api-lib/src/lib/controllers/api/health.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,uBAAuB,EACvB,eAAe,EAChB,MAAM,8BAA8B,CAAC;AACtC,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAC7D,OAAO,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAC7D,OAAO,EACL,gBAAgB,EAChB,iBAAiB,EAGjB,aAAa,EAEd,MAAM,qCAAqC,CAAC;AAC7C,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AACvE,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAEzC,KAAK,iBAAiB,GAClB,eAAe,GACf,uBAAuB,GACvB,gBAAgB,CAAC;AAErB,UAAU,eAAgB,SAAQ,aAAa;IAC7C,SAAS,EAAE,iBAAiB,CAAC,eAAe,GAAG,gBAAgB,CAAC,CAAC;IACjE,iBAAiB,EAAE,iBAAiB,CAClC,uBAAuB,GAAG,gBAAgB,CAC3C,CAAC;CACH;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,qBAAa,gBAAgB,CAC3B,GAAG,SAAS,UAAU,GAAG,oBAAoB,CAC7C,SAAQ,cAAc,CACtB,GAAG,EACH,iBAAiB,EACjB,eAAe,EACf,gBAAgB,CACjB;IACC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAY;IAC3C,OAAO,CAAC,MAAM,CAAC,SAAS,CAAsB;IAC9C,OAAO,CAAC,MAAM,CAAC,UAAU,CAAiB;gBAE9B,WAAW,EAAE,uBAAuB,CAAC,GAAG,CAAC;IASrD;;OAEG;WACW,SAAS,IAAI,IAAI;IAI/B;;OAEG;WACW,YAAY,IAAI,IAAI;IAIlC;;OAEG;WACW,iBAAiB,IAAI,OAAO;IAI1C;;OAEG;WACW,cAAc,IAAI,IAAI;IAIpC,SAAS,CAAC,oBAAoB,IAAI,IAAI;IAkEtC;;OAEG;IACH,OAAO,CAAC,SAAS;IAIjB;;;;;;;;OAQG;YACW,eAAe;IA6B7B;;OAEG;YACW,qBAAqB;IAwBnC;;;;;;;OAOG;YACW,uBAAuB;CA0HtC"}
@@ -0,0 +1,319 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.HealthController = void 0;
4
+ const brightchain_lib_1 = require("@brightchain/brightchain-lib");
5
+ const node_express_suite_1 = require("@digitaldefiance/node-express-suite");
6
+ const base_1 = require("../base");
7
+ /**
8
+ * Controller for health check and status endpoints.
9
+ *
10
+ * Provides REST API endpoints for monitoring the API server health
11
+ * and checking the status of dependencies.
12
+ *
13
+ * ## Endpoints
14
+ *
15
+ * ### GET /api/health
16
+ * Basic health check returning server status, uptime, and version.
17
+ * Response time should be under 100ms.
18
+ *
19
+ * **Response:**
20
+ * - `status` (string): 'healthy' | 'degraded' | 'unhealthy' | 'starting'
21
+ * - `uptime` (number): Server uptime in seconds
22
+ * - `timestamp` (string): ISO timestamp of the response
23
+ * - `version` (string): API version
24
+ *
25
+ * ### GET /api/health/detailed
26
+ * Detailed health check with dependency status.
27
+ * Returns 503 when critical dependencies are unhealthy.
28
+ *
29
+ * **Response:**
30
+ * - All fields from basic health check
31
+ * - `dependencies` (object): Status of each dependency
32
+ * - `blockStore`: Block storage service status
33
+ * - `messageService`: Message passing service status
34
+ * - `webSocketServer`: WebSocket server status
35
+ *
36
+ * @requirements 6.1, 6.2, 6.3, 6.4, 6.5
37
+ */
38
+ class HealthController extends base_1.BaseController {
39
+ constructor(application) {
40
+ super(application);
41
+ // Mark as no longer starting after a brief initialization period
42
+ // In production, this would be set when all services are ready
43
+ setTimeout(() => {
44
+ HealthController.isStarting = false;
45
+ }, 100);
46
+ }
47
+ /**
48
+ * Mark the server as fully initialized (no longer starting)
49
+ */
50
+ static markReady() {
51
+ HealthController.isStarting = false;
52
+ }
53
+ /**
54
+ * Mark the server as starting (for testing or restart scenarios)
55
+ */
56
+ static markStarting() {
57
+ HealthController.isStarting = true;
58
+ }
59
+ /**
60
+ * Check if the server is in starting state
61
+ */
62
+ static isInStartingState() {
63
+ return HealthController.isStarting;
64
+ }
65
+ /**
66
+ * Reset the start time (for testing)
67
+ */
68
+ static resetStartTime() {
69
+ HealthController.startTime = Date.now();
70
+ }
71
+ initRouteDefinitions() {
72
+ this.routeDefinitions = [
73
+ (0, node_express_suite_1.routeConfig)('get', '/', {
74
+ handlerKey: 'getHealth',
75
+ useAuthentication: false,
76
+ useCryptoAuthentication: false,
77
+ openapi: {
78
+ summary: 'Basic health check',
79
+ description: 'Returns server status, uptime, and version. Response time under 100ms.',
80
+ tags: ['Health'],
81
+ responses: {
82
+ 200: {
83
+ schema: 'HealthResponse',
84
+ description: 'Server is healthy',
85
+ example: {
86
+ message: 'OK',
87
+ status: 'healthy',
88
+ uptime: 3600,
89
+ timestamp: '2025-01-16T10:00:00.000Z',
90
+ version: '0.13.0',
91
+ },
92
+ },
93
+ 503: {
94
+ schema: 'HealthResponse',
95
+ description: 'Server is starting or unhealthy',
96
+ },
97
+ },
98
+ },
99
+ }),
100
+ (0, node_express_suite_1.routeConfig)('get', '/detailed', {
101
+ handlerKey: 'getDetailedHealth',
102
+ useAuthentication: false,
103
+ useCryptoAuthentication: false,
104
+ openapi: {
105
+ summary: 'Detailed health check with dependencies',
106
+ description: 'Returns status of all dependencies. Returns 503 when critical dependencies are unhealthy.',
107
+ tags: ['Health'],
108
+ responses: {
109
+ 200: {
110
+ schema: 'DetailedHealthResponse',
111
+ description: 'Health check completed',
112
+ },
113
+ 503: {
114
+ schema: 'DetailedHealthResponse',
115
+ description: 'Critical dependency unhealthy',
116
+ },
117
+ },
118
+ },
119
+ }),
120
+ ];
121
+ // Register with OpenAPI registry
122
+ node_express_suite_1.ControllerRegistry.register('/health', 'HealthController', this.routeDefinitions);
123
+ this.handlers = {
124
+ getHealth: this.handleGetHealth.bind(this),
125
+ getDetailedHealth: this.handleGetDetailedHealth.bind(this),
126
+ };
127
+ }
128
+ /**
129
+ * Calculate server uptime in seconds
130
+ */
131
+ getUptime() {
132
+ return Math.floor((Date.now() - HealthController.startTime) / 1000);
133
+ }
134
+ /**
135
+ * GET /api/health
136
+ * Basic health check returning server status, uptime, timestamp, and version.
137
+ *
138
+ * Returns 503 with "starting" status during initialization.
139
+ * Response time should be under 100ms.
140
+ *
141
+ * @requirements 6.1, 6.4, 6.5
142
+ */
143
+ async handleGetHealth() {
144
+ // Check if server is still starting
145
+ if (HealthController.isStarting) {
146
+ return {
147
+ statusCode: 503,
148
+ response: {
149
+ message: 'Server is starting',
150
+ status: brightchain_lib_1.HealthStatus.STARTING,
151
+ uptime: this.getUptime(),
152
+ timestamp: new Date().toISOString(),
153
+ version: HealthController.VERSION,
154
+ },
155
+ };
156
+ }
157
+ return {
158
+ statusCode: 200,
159
+ response: {
160
+ message: 'OK',
161
+ status: brightchain_lib_1.HealthStatus.HEALTHY,
162
+ uptime: this.getUptime(),
163
+ timestamp: new Date().toISOString(),
164
+ version: HealthController.VERSION,
165
+ },
166
+ };
167
+ }
168
+ /**
169
+ * Check the health of a dependency
170
+ */
171
+ async checkDependencyHealth(name, checkFn) {
172
+ const startTime = Date.now();
173
+ try {
174
+ const isHealthy = await checkFn();
175
+ const latencyMs = Date.now() - startTime;
176
+ return {
177
+ name,
178
+ status: isHealthy ? brightchain_lib_1.HealthStatus.HEALTHY : brightchain_lib_1.HealthStatus.UNHEALTHY,
179
+ latencyMs,
180
+ };
181
+ }
182
+ catch (error) {
183
+ const latencyMs = Date.now() - startTime;
184
+ return {
185
+ name,
186
+ status: brightchain_lib_1.HealthStatus.UNHEALTHY,
187
+ latencyMs,
188
+ message: error instanceof Error ? error.message : 'Unknown error',
189
+ };
190
+ }
191
+ }
192
+ /**
193
+ * GET /api/health/detailed
194
+ * Detailed health check with dependency status.
195
+ *
196
+ * Returns 503 when critical dependencies are unhealthy.
197
+ *
198
+ * @requirements 6.2, 6.3, 6.5
199
+ */
200
+ async handleGetDetailedHealth() {
201
+ // Check if server is still starting
202
+ if (HealthController.isStarting) {
203
+ return {
204
+ statusCode: 503,
205
+ response: {
206
+ message: 'Server is starting',
207
+ status: brightchain_lib_1.HealthStatus.STARTING,
208
+ uptime: this.getUptime(),
209
+ timestamp: new Date().toISOString(),
210
+ version: HealthController.VERSION,
211
+ dependencies: {
212
+ blockStore: {
213
+ name: 'blockStore',
214
+ status: brightchain_lib_1.HealthStatus.STARTING,
215
+ message: 'Server is starting',
216
+ },
217
+ messageService: {
218
+ name: 'messageService',
219
+ status: brightchain_lib_1.HealthStatus.STARTING,
220
+ message: 'Server is starting',
221
+ },
222
+ webSocketServer: {
223
+ name: 'webSocketServer',
224
+ status: brightchain_lib_1.HealthStatus.STARTING,
225
+ message: 'Server is starting',
226
+ },
227
+ },
228
+ },
229
+ };
230
+ }
231
+ // Check each dependency
232
+ const [blockStoreHealth, messageServiceHealth, webSocketServerHealth] = await Promise.all([
233
+ this.checkDependencyHealth('blockStore', async () => {
234
+ // Check if block store service is available
235
+ try {
236
+ const blockStore = this.application.services.get('blockStore');
237
+ return blockStore !== undefined;
238
+ }
239
+ catch {
240
+ return false;
241
+ }
242
+ }),
243
+ this.checkDependencyHealth('messageService', async () => {
244
+ // Check if message service is available
245
+ try {
246
+ const messageService = this.application.services.get('messageService');
247
+ return messageService !== undefined;
248
+ }
249
+ catch {
250
+ // Message service may not be registered yet, treat as degraded
251
+ return false;
252
+ }
253
+ }),
254
+ this.checkDependencyHealth('webSocketServer', async () => {
255
+ // Check if WebSocket server is available
256
+ try {
257
+ const wsServer = this.application.services.get('webSocketServer');
258
+ return wsServer !== undefined;
259
+ }
260
+ catch {
261
+ // WebSocket server may not be registered yet, treat as degraded
262
+ return false;
263
+ }
264
+ }),
265
+ ]);
266
+ // Determine overall status based on dependencies
267
+ const allHealthy = blockStoreHealth.status === brightchain_lib_1.HealthStatus.HEALTHY &&
268
+ messageServiceHealth.status === brightchain_lib_1.HealthStatus.HEALTHY &&
269
+ webSocketServerHealth.status === brightchain_lib_1.HealthStatus.HEALTHY;
270
+ const anyUnhealthy = blockStoreHealth.status === brightchain_lib_1.HealthStatus.UNHEALTHY ||
271
+ messageServiceHealth.status === brightchain_lib_1.HealthStatus.UNHEALTHY ||
272
+ webSocketServerHealth.status === brightchain_lib_1.HealthStatus.UNHEALTHY;
273
+ // Block store is critical - if it's unhealthy, the whole system is unhealthy
274
+ const blockStoreUnhealthy = blockStoreHealth.status === brightchain_lib_1.HealthStatus.UNHEALTHY;
275
+ let overallStatus;
276
+ let statusCode;
277
+ let statusMessage;
278
+ if (blockStoreUnhealthy) {
279
+ overallStatus = brightchain_lib_1.HealthStatus.UNHEALTHY;
280
+ statusCode = 503;
281
+ statusMessage = 'Critical dependency unhealthy';
282
+ }
283
+ else if (anyUnhealthy) {
284
+ overallStatus = brightchain_lib_1.HealthStatus.DEGRADED;
285
+ statusCode = 200;
286
+ statusMessage = 'Some dependencies unhealthy';
287
+ }
288
+ else if (allHealthy) {
289
+ overallStatus = brightchain_lib_1.HealthStatus.HEALTHY;
290
+ statusCode = 200;
291
+ statusMessage = 'OK';
292
+ }
293
+ else {
294
+ overallStatus = brightchain_lib_1.HealthStatus.DEGRADED;
295
+ statusCode = 200;
296
+ statusMessage = 'Some dependencies unavailable';
297
+ }
298
+ return {
299
+ statusCode,
300
+ response: {
301
+ message: statusMessage,
302
+ status: overallStatus,
303
+ uptime: this.getUptime(),
304
+ timestamp: new Date().toISOString(),
305
+ version: HealthController.VERSION,
306
+ dependencies: {
307
+ blockStore: blockStoreHealth,
308
+ messageService: messageServiceHealth,
309
+ webSocketServer: webSocketServerHealth,
310
+ },
311
+ },
312
+ };
313
+ }
314
+ }
315
+ exports.HealthController = HealthController;
316
+ HealthController.VERSION = '0.13.0';
317
+ HealthController.startTime = Date.now();
318
+ HealthController.isStarting = true;
319
+ //# sourceMappingURL=health.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"health.js","sourceRoot":"","sources":["../../../../../../brightchain-api-lib/src/lib/controllers/api/health.ts"],"names":[],"mappings":"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"}
@@ -1,9 +1,15 @@
1
1
  export * from './blocks';
2
2
  export * from './cbl';
3
+ export * from './docs';
3
4
  export * from './energy';
5
+ export * from './health';
4
6
  export * from './i18n';
5
7
  export * from './members';
8
+ export * from './messages';
9
+ export * from './nodes';
6
10
  export * from './quorum';
11
+ export * from './scbl';
7
12
  export * from './sessions';
13
+ export * from './sync';
8
14
  export * from './user';
9
15
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../brightchain-api-lib/src/lib/controllers/api/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AACzB,cAAc,OAAO,CAAC;AACtB,cAAc,UAAU,CAAC;AACzB,cAAc,QAAQ,CAAC;AACvB,cAAc,WAAW,CAAC;AAC1B,cAAc,UAAU,CAAC;AACzB,cAAc,YAAY,CAAC;AAC3B,cAAc,QAAQ,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../brightchain-api-lib/src/lib/controllers/api/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AACzB,cAAc,OAAO,CAAC;AACtB,cAAc,QAAQ,CAAC;AACvB,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;AACzB,cAAc,QAAQ,CAAC;AACvB,cAAc,WAAW,CAAC;AAC1B,cAAc,YAAY,CAAC;AAC3B,cAAc,SAAS,CAAC;AACxB,cAAc,UAAU,CAAC;AACzB,cAAc,QAAQ,CAAC;AACvB,cAAc,YAAY,CAAC;AAC3B,cAAc,QAAQ,CAAC;AACvB,cAAc,QAAQ,CAAC"}
@@ -3,10 +3,16 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  const tslib_1 = require("tslib");
4
4
  tslib_1.__exportStar(require("./blocks"), exports);
5
5
  tslib_1.__exportStar(require("./cbl"), exports);
6
+ tslib_1.__exportStar(require("./docs"), exports);
6
7
  tslib_1.__exportStar(require("./energy"), exports);
8
+ tslib_1.__exportStar(require("./health"), exports);
7
9
  tslib_1.__exportStar(require("./i18n"), exports);
8
10
  tslib_1.__exportStar(require("./members"), exports);
11
+ tslib_1.__exportStar(require("./messages"), exports);
12
+ tslib_1.__exportStar(require("./nodes"), exports);
9
13
  tslib_1.__exportStar(require("./quorum"), exports);
14
+ tslib_1.__exportStar(require("./scbl"), exports);
10
15
  tslib_1.__exportStar(require("./sessions"), exports);
16
+ tslib_1.__exportStar(require("./sync"), exports);
11
17
  tslib_1.__exportStar(require("./user"), exports);
12
18
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../brightchain-api-lib/src/lib/controllers/api/index.ts"],"names":[],"mappings":";;;AAAA,mDAAyB;AACzB,gDAAsB;AACtB,mDAAyB;AACzB,iDAAuB;AACvB,oDAA0B;AAC1B,mDAAyB;AACzB,qDAA2B;AAC3B,iDAAuB"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../brightchain-api-lib/src/lib/controllers/api/index.ts"],"names":[],"mappings":";;;AAAA,mDAAyB;AACzB,gDAAsB;AACtB,iDAAuB;AACvB,mDAAyB;AACzB,mDAAyB;AACzB,iDAAuB;AACvB,oDAA0B;AAC1B,qDAA2B;AAC3B,kDAAwB;AACxB,mDAAyB;AACzB,iDAAuB;AACvB,qDAA2B;AAC3B,iDAAuB;AACvB,iDAAuB"}
@@ -0,0 +1,119 @@
1
+ import { IDeleteMessageResponse, IGetMessageResponse, IQueryMessagesResponse, ISendMessageResponse } from '@brightchain/brightchain-lib';
2
+ import { CoreLanguageCode } from '@digitaldefiance/i18n-lib';
3
+ import { PlatformID } from '@digitaldefiance/node-ecies-lib';
4
+ import { ApiErrorResponse, ApiRequestHandler, TypedHandlers } from '@digitaldefiance/node-express-suite';
5
+ import { IBrightChainApplication } from '../../interfaces/application';
6
+ import { MessagePassingService } from '../../services/messagePassingService';
7
+ import { DefaultBackendIdType } from '../../shared-types';
8
+ import { BaseController } from '../base';
9
+ type MessageApiResponse = ISendMessageResponse | IGetMessageResponse | IQueryMessagesResponse | IDeleteMessageResponse | ApiErrorResponse;
10
+ interface MessagesHandlers extends TypedHandlers {
11
+ sendMessage: ApiRequestHandler<ISendMessageResponse | ApiErrorResponse>;
12
+ getMessage: ApiRequestHandler<IGetMessageResponse | ApiErrorResponse>;
13
+ queryMessages: ApiRequestHandler<IQueryMessagesResponse | ApiErrorResponse>;
14
+ deleteMessage: ApiRequestHandler<IDeleteMessageResponse | ApiErrorResponse>;
15
+ }
16
+ /**
17
+ * Controller for message passing operations.
18
+ *
19
+ * Provides REST API endpoints for sending, retrieving, querying, and deleting
20
+ * messages in the BrightChain distributed messaging system.
21
+ *
22
+ * ## Endpoints
23
+ *
24
+ * ### POST /api/messages
25
+ * Send a new message with optional recipients.
26
+ *
27
+ * **Request Body:**
28
+ * - `content` (string, required): Base64-encoded message content
29
+ * - `senderId` (string, required): Sender member ID
30
+ * - `recipients` (string[], optional): Recipient IDs (broadcast if empty)
31
+ * - `messageType` (string, required): Message type identifier
32
+ * - `priority` (number, optional): Message priority level
33
+ * - `encryptionScheme` (number, optional): Encryption scheme identifier
34
+ *
35
+ * **Response:** Message ID and magnet URL
36
+ *
37
+ * ### GET /api/messages/:id
38
+ * Retrieve a message by its ID.
39
+ *
40
+ * **Parameters:**
41
+ * - `id` (string, required): Message ID
42
+ *
43
+ * **Response:** Base64-encoded message content
44
+ *
45
+ * ### GET /api/messages
46
+ * Query messages with optional filters.
47
+ *
48
+ * **Query Parameters:**
49
+ * - `recipientId` (string, optional): Filter by recipient ID
50
+ * - `senderId` (string, optional): Filter by sender ID
51
+ * - `messageType` (string, optional): Filter by message type
52
+ * - `page` (number, optional): Page number (default: 1)
53
+ * - `pageSize` (number, optional): Page size (default: 50)
54
+ *
55
+ * **Response:** Array of message metadata
56
+ *
57
+ * ### DELETE /api/messages/:id
58
+ * Delete a message by its ID.
59
+ *
60
+ * **Parameters:**
61
+ * - `id` (string, required): Message ID
62
+ *
63
+ * **Response:** 204 No Content on success
64
+ *
65
+ * @requirements 1.1, 1.2, 1.3, 1.4, 1.5, 1.6
66
+ */
67
+ export declare class MessagesController<TID extends PlatformID = DefaultBackendIdType> extends BaseController<TID, MessageApiResponse, MessagesHandlers, CoreLanguageCode> {
68
+ private messageService;
69
+ constructor(application: IBrightChainApplication<TID>);
70
+ /**
71
+ * Set the MessagePassingService instance.
72
+ * This allows for dependency injection and testing.
73
+ */
74
+ setMessageService(service: MessagePassingService): void;
75
+ /**
76
+ * Get the MessagePassingService instance.
77
+ * Throws if the service has not been set.
78
+ */
79
+ private getMessageService;
80
+ protected initRouteDefinitions(): void;
81
+ /**
82
+ * POST /api/messages
83
+ * Send a new message.
84
+ *
85
+ * @param req - Request containing message content and metadata
86
+ * @returns Message ID and magnet URL on success, or error response
87
+ * @requirements 1.1
88
+ */
89
+ private handleSendMessage;
90
+ /**
91
+ * GET /api/messages/:id
92
+ * Retrieve a message by its ID.
93
+ *
94
+ * @param req - Request containing the message ID parameter
95
+ * @returns Base64-encoded message content on success, or 404 if not found
96
+ * @requirements 1.2, 1.5
97
+ */
98
+ private handleGetMessage;
99
+ /**
100
+ * GET /api/messages
101
+ * Query messages with optional filters.
102
+ *
103
+ * @param req - Request containing query parameters
104
+ * @returns Array of message metadata matching the query
105
+ * @requirements 1.3
106
+ */
107
+ private handleQueryMessages;
108
+ /**
109
+ * DELETE /api/messages/:id
110
+ * Delete a message by its ID.
111
+ *
112
+ * @param req - Request containing the message ID parameter
113
+ * @returns 204 No Content on success, or 404 if not found
114
+ * @requirements 1.4
115
+ */
116
+ private handleDeleteMessage;
117
+ }
118
+ export {};
119
+ //# sourceMappingURL=messages.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"messages.d.ts","sourceRoot":"","sources":["../../../../../../brightchain-api-lib/src/lib/controllers/api/messages.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,sBAAsB,EACtB,mBAAmB,EACnB,sBAAsB,EACtB,oBAAoB,EAGrB,MAAM,8BAA8B,CAAC;AACtC,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAC7D,OAAO,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAC7D,OAAO,EACL,gBAAgB,EAChB,iBAAiB,EACjB,aAAa,EAEd,MAAM,qCAAqC,CAAC;AAM7C,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AAEvE,OAAO,EAAE,qBAAqB,EAAE,MAAM,sCAAsC,CAAC;AAC7E,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAM1D,OAAO,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAEzC,KAAK,kBAAkB,GACnB,oBAAoB,GACpB,mBAAmB,GACnB,sBAAsB,GACtB,sBAAsB,GACtB,gBAAgB,CAAC;AAErB,UAAU,gBAAiB,SAAQ,aAAa;IAC9C,WAAW,EAAE,iBAAiB,CAAC,oBAAoB,GAAG,gBAAgB,CAAC,CAAC;IACxE,UAAU,EAAE,iBAAiB,CAAC,mBAAmB,GAAG,gBAAgB,CAAC,CAAC;IACtE,aAAa,EAAE,iBAAiB,CAAC,sBAAsB,GAAG,gBAAgB,CAAC,CAAC;IAC5E,aAAa,EAAE,iBAAiB,CAAC,sBAAsB,GAAG,gBAAgB,CAAC,CAAC;CAC7E;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkDG;AACH,qBAAa,kBAAkB,CAC7B,GAAG,SAAS,UAAU,GAAG,oBAAoB,CAC7C,SAAQ,cAAc,CACtB,GAAG,EACH,kBAAkB,EAClB,gBAAgB,EAChB,gBAAgB,CACjB;IACC,OAAO,CAAC,cAAc,CAAsC;gBAEhD,WAAW,EAAE,uBAAuB,CAAC,GAAG,CAAC;IAIrD;;;OAGG;IACI,iBAAiB,CAAC,OAAO,EAAE,qBAAqB,GAAG,IAAI;IAI9D;;;OAGG;IACH,OAAO,CAAC,iBAAiB;IAOzB,SAAS,CAAC,oBAAoB,IAAI,IAAI;IAgCtC;;;;;;;OAOG;YACW,iBAAiB;IAqE/B;;;;;;;OAOG;YACW,gBAAgB;IA6B9B;;;;;;;OAOG;YACW,mBAAmB;IA4CjC;;;;;;;OAOG;YACW,mBAAmB;CAwBlC"}