@brightchain/brightchain-api-lib 0.12.0 → 0.14.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (217) 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/availability/configValidation.d.ts.map +1 -1
  9. package/src/lib/availability/configValidation.js +20 -0
  10. package/src/lib/availability/configValidation.js.map +1 -1
  11. package/src/lib/availability/gossipService.d.ts +150 -7
  12. package/src/lib/availability/gossipService.d.ts.map +1 -1
  13. package/src/lib/availability/gossipService.js +297 -17
  14. package/src/lib/availability/gossipService.js.map +1 -1
  15. package/src/lib/controllers/api/blocks.d.ts.map +1 -1
  16. package/src/lib/controllers/api/blocks.js +62 -0
  17. package/src/lib/controllers/api/blocks.js.map +1 -1
  18. package/src/lib/controllers/api/docs.d.ts +67 -0
  19. package/src/lib/controllers/api/docs.d.ts.map +1 -0
  20. package/src/lib/controllers/api/docs.js +86 -0
  21. package/src/lib/controllers/api/docs.js.map +1 -0
  22. package/src/lib/controllers/api/energy.d.ts.map +1 -1
  23. package/src/lib/controllers/api/energy.js +35 -7
  24. package/src/lib/controllers/api/energy.js.map +1 -1
  25. package/src/lib/controllers/api/health.d.ts +95 -0
  26. package/src/lib/controllers/api/health.d.ts.map +1 -0
  27. package/src/lib/controllers/api/health.js +319 -0
  28. package/src/lib/controllers/api/health.js.map +1 -0
  29. package/src/lib/controllers/api/index.d.ts +6 -0
  30. package/src/lib/controllers/api/index.d.ts.map +1 -1
  31. package/src/lib/controllers/api/index.js +6 -0
  32. package/src/lib/controllers/api/index.js.map +1 -1
  33. package/src/lib/controllers/api/messages.d.ts +119 -0
  34. package/src/lib/controllers/api/messages.d.ts.map +1 -0
  35. package/src/lib/controllers/api/messages.js +269 -0
  36. package/src/lib/controllers/api/messages.js.map +1 -0
  37. package/src/lib/controllers/api/nodes.d.ts +152 -0
  38. package/src/lib/controllers/api/nodes.d.ts.map +1 -0
  39. package/src/lib/controllers/api/nodes.js +378 -0
  40. package/src/lib/controllers/api/nodes.js.map +1 -0
  41. package/src/lib/controllers/api/quorum.d.ts +12 -8
  42. package/src/lib/controllers/api/quorum.d.ts.map +1 -1
  43. package/src/lib/controllers/api/quorum.js +83 -17
  44. package/src/lib/controllers/api/quorum.js.map +1 -1
  45. package/src/lib/controllers/api/scbl.d.ts +80 -0
  46. package/src/lib/controllers/api/scbl.d.ts.map +1 -0
  47. package/src/lib/controllers/api/scbl.js +325 -0
  48. package/src/lib/controllers/api/scbl.js.map +1 -0
  49. package/src/lib/controllers/api/sync.d.ts +140 -0
  50. package/src/lib/controllers/api/sync.d.ts.map +1 -0
  51. package/src/lib/controllers/api/sync.js +352 -0
  52. package/src/lib/controllers/api/sync.js.map +1 -0
  53. package/src/lib/controllers/api/user.d.ts +2 -0
  54. package/src/lib/controllers/api/user.d.ts.map +1 -1
  55. package/src/lib/controllers/api/user.js +122 -7
  56. package/src/lib/controllers/api/user.js.map +1 -1
  57. package/src/lib/enumerations/brightChainApiStrings.d.ts.map +1 -1
  58. package/src/lib/enumerations/brightChainApiStrings.js.map +1 -1
  59. package/src/lib/errors/symmetric.d.ts +2 -2
  60. package/src/lib/errors/symmetric.d.ts.map +1 -1
  61. package/src/lib/errors/symmetric.js.map +1 -1
  62. package/src/lib/errors/typed-error-local.d.ts +3 -3
  63. package/src/lib/errors/typed-error-local.d.ts.map +1 -1
  64. package/src/lib/errors/typed-error-local.js.map +1 -1
  65. package/src/lib/interfaces/application.d.ts +2 -1
  66. package/src/lib/interfaces/application.d.ts.map +1 -1
  67. package/src/lib/interfaces/backend-objects/index.d.ts +4 -4
  68. package/src/lib/interfaces/backend-objects/index.d.ts.map +1 -1
  69. package/src/lib/interfaces/backend-objects/index.js +0 -5
  70. package/src/lib/interfaces/backend-objects/index.js.map +1 -1
  71. package/src/lib/interfaces/bases/index.d.ts +4 -4
  72. package/src/lib/interfaces/bases/index.d.ts.map +1 -1
  73. package/src/lib/interfaces/bases/index.js +0 -5
  74. package/src/lib/interfaces/bases/index.js.map +1 -1
  75. package/src/lib/interfaces/index.d.ts +32 -32
  76. package/src/lib/interfaces/index.d.ts.map +1 -1
  77. package/src/lib/interfaces/index.js +0 -33
  78. package/src/lib/interfaces/index.js.map +1 -1
  79. package/src/lib/interfaces/member/index.d.ts +3 -3
  80. package/src/lib/interfaces/member/index.d.ts.map +1 -1
  81. package/src/lib/interfaces/member/index.js +0 -4
  82. package/src/lib/interfaces/member/index.js.map +1 -1
  83. package/src/lib/interfaces/requests/deleteMessagesRequest.d.ts +12 -0
  84. package/src/lib/interfaces/requests/deleteMessagesRequest.d.ts.map +1 -0
  85. package/src/lib/interfaces/requests/deleteMessagesRequest.js +3 -0
  86. package/src/lib/interfaces/requests/deleteMessagesRequest.js.map +1 -0
  87. package/src/lib/interfaces/requests/discoverBlockRequest.d.ts +10 -0
  88. package/src/lib/interfaces/requests/discoverBlockRequest.d.ts.map +1 -0
  89. package/src/lib/interfaces/requests/discoverBlockRequest.js +3 -0
  90. package/src/lib/interfaces/requests/discoverBlockRequest.js.map +1 -0
  91. package/src/lib/interfaces/requests/getBlockLocationRequest.d.ts +9 -0
  92. package/src/lib/interfaces/requests/getBlockLocationRequest.d.ts.map +1 -0
  93. package/src/lib/interfaces/requests/getBlockLocationRequest.js +3 -0
  94. package/src/lib/interfaces/requests/getBlockLocationRequest.js.map +1 -0
  95. package/src/lib/interfaces/requests/getMessageRequest.d.ts +12 -0
  96. package/src/lib/interfaces/requests/getMessageRequest.d.ts.map +1 -0
  97. package/src/lib/interfaces/requests/getMessageRequest.js +3 -0
  98. package/src/lib/interfaces/requests/getMessageRequest.js.map +1 -0
  99. package/src/lib/interfaces/requests/getNodeRequest.d.ts +9 -0
  100. package/src/lib/interfaces/requests/getNodeRequest.d.ts.map +1 -0
  101. package/src/lib/interfaces/{membersResponse.js → requests/getNodeRequest.js} +1 -1
  102. package/src/lib/interfaces/requests/getNodeRequest.js.map +1 -0
  103. package/src/lib/interfaces/requests/index.d.ts +12 -0
  104. package/src/lib/interfaces/requests/index.d.ts.map +1 -0
  105. package/src/lib/interfaces/requests/index.js +3 -0
  106. package/src/lib/interfaces/requests/index.js.map +1 -0
  107. package/src/lib/interfaces/requests/messageRequest.d.ts +10 -0
  108. package/src/lib/interfaces/requests/messageRequest.d.ts.map +1 -0
  109. package/src/lib/interfaces/requests/messageRequest.js +3 -0
  110. package/src/lib/interfaces/requests/messageRequest.js.map +1 -0
  111. package/src/lib/interfaces/requests/queryMessagesRequest.d.ts +16 -0
  112. package/src/lib/interfaces/requests/queryMessagesRequest.d.ts.map +1 -0
  113. package/src/lib/interfaces/requests/queryMessagesRequest.js +3 -0
  114. package/src/lib/interfaces/requests/queryMessagesRequest.js.map +1 -0
  115. package/src/lib/interfaces/requests/registerNodeRequest.d.ts +11 -0
  116. package/src/lib/interfaces/requests/registerNodeRequest.d.ts.map +1 -0
  117. package/src/lib/interfaces/requests/registerNodeRequest.js +3 -0
  118. package/src/lib/interfaces/requests/registerNodeRequest.js.map +1 -0
  119. package/src/lib/interfaces/requests/replicateBlockRequest.d.ts +13 -0
  120. package/src/lib/interfaces/requests/replicateBlockRequest.d.ts.map +1 -0
  121. package/src/lib/interfaces/requests/replicateBlockRequest.js +3 -0
  122. package/src/lib/interfaces/requests/replicateBlockRequest.js.map +1 -0
  123. package/src/lib/interfaces/requests/sendMessageRequest.d.ts +24 -0
  124. package/src/lib/interfaces/requests/sendMessageRequest.d.ts.map +1 -0
  125. package/src/lib/interfaces/requests/sendMessageRequest.js +3 -0
  126. package/src/lib/interfaces/requests/sendMessageRequest.js.map +1 -0
  127. package/src/lib/interfaces/requests/storeSCBLRequestBody.d.ts +9 -0
  128. package/src/lib/interfaces/requests/storeSCBLRequestBody.d.ts.map +1 -0
  129. package/src/lib/interfaces/requests/storeSCBLRequestBody.js +3 -0
  130. package/src/lib/interfaces/requests/storeSCBLRequestBody.js.map +1 -0
  131. package/src/lib/interfaces/requests/syncRequestBody.d.ts +10 -0
  132. package/src/lib/interfaces/requests/syncRequestBody.d.ts.map +1 -0
  133. package/src/lib/interfaces/requests/syncRequestBody.js +3 -0
  134. package/src/lib/interfaces/requests/syncRequestBody.js.map +1 -0
  135. package/src/lib/interfaces/responses/index.d.ts +7 -7
  136. package/src/lib/interfaces/responses/index.d.ts.map +1 -1
  137. package/src/lib/interfaces/responses/index.js +0 -8
  138. package/src/lib/interfaces/responses/index.js.map +1 -1
  139. package/src/lib/interfaces/websocketMessages.d.ts +30 -1
  140. package/src/lib/interfaces/websocketMessages.d.ts.map +1 -1
  141. package/src/lib/middlewares/authentication.d.ts +133 -0
  142. package/src/lib/middlewares/authentication.d.ts.map +1 -0
  143. package/src/lib/middlewares/authentication.js +224 -0
  144. package/src/lib/middlewares/authentication.js.map +1 -0
  145. package/src/lib/middlewares/index.d.ts +2 -0
  146. package/src/lib/middlewares/index.d.ts.map +1 -1
  147. package/src/lib/middlewares/index.js +15 -1
  148. package/src/lib/middlewares/index.js.map +1 -1
  149. package/src/lib/middlewares/request-id.d.ts +18 -0
  150. package/src/lib/middlewares/request-id.d.ts.map +1 -0
  151. package/src/lib/middlewares/request-id.js +30 -0
  152. package/src/lib/middlewares/request-id.js.map +1 -0
  153. package/src/lib/openapi/index.d.ts +8 -0
  154. package/src/lib/openapi/index.d.ts.map +1 -0
  155. package/src/lib/openapi/index.js +21 -0
  156. package/src/lib/openapi/index.js.map +1 -0
  157. package/src/lib/openapi/schemas.d.ts +15 -0
  158. package/src/lib/openapi/schemas.d.ts.map +1 -0
  159. package/src/lib/openapi/schemas.js +610 -0
  160. package/src/lib/openapi/schemas.js.map +1 -0
  161. package/src/lib/routers/api.d.ts +62 -0
  162. package/src/lib/routers/api.d.ts.map +1 -1
  163. package/src/lib/routers/api.js +85 -0
  164. package/src/lib/routers/api.js.map +1 -1
  165. package/src/lib/services/diskQuorumService.d.ts +7 -6
  166. package/src/lib/services/diskQuorumService.d.ts.map +1 -1
  167. package/src/lib/services/diskQuorumService.js.map +1 -1
  168. package/src/lib/services/email.d.ts +2 -1
  169. package/src/lib/services/email.d.ts.map +1 -1
  170. package/src/lib/services/email.js.map +1 -1
  171. package/src/lib/services/eventNotificationSystem.d.ts +88 -6
  172. package/src/lib/services/eventNotificationSystem.d.ts.map +1 -1
  173. package/src/lib/services/eventNotificationSystem.js +132 -17
  174. package/src/lib/services/eventNotificationSystem.js.map +1 -1
  175. package/src/lib/services/fec.js +1 -1
  176. package/src/lib/services/fec.js.map +1 -1
  177. package/src/lib/services/index.d.ts +1 -0
  178. package/src/lib/services/index.d.ts.map +1 -1
  179. package/src/lib/services/index.js +1 -0
  180. package/src/lib/services/index.js.map +1 -1
  181. package/src/lib/services/messagePassingService.d.ts +95 -5
  182. package/src/lib/services/messagePassingService.d.ts.map +1 -1
  183. package/src/lib/services/messagePassingService.js +187 -28
  184. package/src/lib/services/messagePassingService.js.map +1 -1
  185. package/src/lib/services/webSocketMessageServer.d.ts +18 -23
  186. package/src/lib/services/webSocketMessageServer.d.ts.map +1 -1
  187. package/src/lib/services/webSocketMessageServer.js +30 -46
  188. package/src/lib/services/webSocketMessageServer.js.map +1 -1
  189. package/src/lib/services/webSocketPeerProvider.d.ts +49 -0
  190. package/src/lib/services/webSocketPeerProvider.d.ts.map +1 -0
  191. package/src/lib/services/webSocketPeerProvider.js +133 -0
  192. package/src/lib/services/webSocketPeerProvider.js.map +1 -0
  193. package/src/lib/services/websocketHandler.d.ts +11 -8
  194. package/src/lib/services/websocketHandler.d.ts.map +1 -1
  195. package/src/lib/services/websocketHandler.js +33 -40
  196. package/src/lib/services/websocketHandler.js.map +1 -1
  197. package/src/lib/stores/diskMessageMetadataStore.d.ts +2 -2
  198. package/src/lib/stores/diskMessageMetadataStore.d.ts.map +1 -1
  199. package/src/lib/stores/diskMessageMetadataStore.js +1 -1
  200. package/src/lib/stores/diskMessageMetadataStore.js.map +1 -1
  201. package/src/lib/types/backend-id.d.ts +2 -1
  202. package/src/lib/types/backend-id.d.ts.map +1 -1
  203. package/src/lib/utils/errorResponse.d.ts +227 -2
  204. package/src/lib/utils/errorResponse.d.ts.map +1 -1
  205. package/src/lib/utils/errorResponse.js +292 -3
  206. package/src/lib/utils/errorResponse.js.map +1 -1
  207. package/src/lib/i18n/index.d.ts +0 -7
  208. package/src/lib/i18n/index.d.ts.map +0 -1
  209. package/src/lib/i18n/index.js +0 -29
  210. package/src/lib/i18n/index.js.map +0 -1
  211. package/src/lib/i18n/strings/index.d.ts +0 -6
  212. package/src/lib/i18n/strings/index.d.ts.map +0 -1
  213. package/src/lib/i18n/strings/index.js +0 -17
  214. package/src/lib/i18n/strings/index.js.map +0 -1
  215. package/src/lib/interfaces/membersResponse.d.ts +0 -12
  216. package/src/lib/interfaces/membersResponse.d.ts.map +0 -1
  217. package/src/lib/interfaces/membersResponse.js.map +0 -1
@@ -9,8 +9,22 @@
9
9
  * @see Requirements 6.1, 6.2, 6.3, 6.4, 6.5, 6.6
10
10
  */
11
11
  Object.defineProperty(exports, "__esModule", { value: true });
12
- exports.GossipService = void 0;
12
+ exports.GossipService = exports.InvalidGossipConfigError = void 0;
13
+ const brightchain_lib_1 = require("@brightchain/brightchain-lib");
13
14
  // Note: DEFAULT_GOSSIP_CONFIG should be imported directly from @brightchain/brightchain-lib by consumers
15
+ /**
16
+ * Error thrown when gossip configuration is invalid.
17
+ * Non-positive fanout or TTL values will trigger this error at service initialization.
18
+ *
19
+ * @see Requirements 10.3, 10.4
20
+ */
21
+ class InvalidGossipConfigError extends Error {
22
+ constructor(message) {
23
+ super(message);
24
+ this.name = 'InvalidGossipConfigError';
25
+ }
26
+ }
27
+ exports.InvalidGossipConfigError = InvalidGossipConfigError;
14
28
  /**
15
29
  * Default gossip configuration values (local copy for use in this module).
16
30
  */
@@ -19,6 +33,10 @@ const defaultGossipConfig = {
19
33
  defaultTtl: 3,
20
34
  batchIntervalMs: 1000,
21
35
  maxBatchSize: 100,
36
+ messagePriority: {
37
+ normal: { fanout: 5, ttl: 5 },
38
+ high: { fanout: 7, ttl: 7 },
39
+ },
22
40
  };
23
41
  /**
24
42
  * Gossip Service Implementation
@@ -34,18 +52,40 @@ class GossipService {
34
52
  *
35
53
  * @param peerProvider - Provider for peer management operations
36
54
  * @param config - Gossip configuration (uses defaults if not provided)
55
+ * @param localUserIds - Set of local user IDs on this node (defaults to empty set)
56
+ * @param eciesService - Optional ECIES service for encrypting sensitive batches
57
+ * @param localPrivateKey - Optional local node private key (Buffer) for identifying the sender
58
+ * @throws {InvalidGossipConfigError} If configuration contains non-positive fanout or TTL values
59
+ * @see Requirements 10.3, 10.4
37
60
  */
38
- constructor(peerProvider, config = defaultGossipConfig) {
61
+ constructor(peerProvider, config = defaultGossipConfig, localUserIds, eciesService, localPrivateKey) {
39
62
  this.peerProvider = peerProvider;
40
63
  this.config = config;
64
+ this.eciesService = eciesService;
65
+ this.localPrivateKey = localPrivateKey;
41
66
  /**
42
67
  * Pending announcements waiting to be batched and sent.
43
68
  */
44
69
  this.pendingAnnouncements = [];
45
70
  /**
46
- * Registered announcement handlers.
71
+ * Registered announcement handlers (for non-message, non-ack announcements).
47
72
  */
48
73
  this.handlers = new Set();
74
+ /**
75
+ * Registered message delivery handlers.
76
+ * Called when a BlockAnnouncement with messageDelivery metadata is received
77
+ * and recipientIds match local users.
78
+ *
79
+ * @see Requirements 3.4, 3.5
80
+ */
81
+ this.messageDeliveryHandlers = new Set();
82
+ /**
83
+ * Registered delivery ack handlers.
84
+ * Called when a BlockAnnouncement of type 'ack' is received.
85
+ *
86
+ * @see Requirements 4.4
87
+ */
88
+ this.deliveryAckHandlers = new Set();
49
89
  /**
50
90
  * Batch timer handle.
51
91
  */
@@ -54,6 +94,10 @@ class GossipService {
54
94
  * Whether the service is running.
55
95
  */
56
96
  this.running = false;
97
+ this.localUserIds = localUserIds ?? new Set();
98
+ if (!(0, brightchain_lib_1.validateGossipConfig)(config)) {
99
+ throw new InvalidGossipConfigError('Invalid gossip configuration: all fanout and TTL values must be positive integers');
100
+ }
57
101
  }
58
102
  /**
59
103
  * Announce a new block to the network.
@@ -89,13 +133,76 @@ class GossipService {
89
133
  }
90
134
  /**
91
135
  * Handle an incoming block announcement from a peer.
92
- * Notifies handlers and optionally forwards with decremented TTL.
136
+ *
137
+ * Dispatches announcements based on their type and metadata:
138
+ * - 'ack' type: dispatches to delivery ack handlers only (Req 4.4)
139
+ * - 'add' with messageDelivery and matching local recipients: triggers message delivery
140
+ * handlers and auto-sends ack if ackRequired (Req 3.4, 3.5)
141
+ * - 'add' with messageDelivery but no matching local recipients: forwards normally (Req 3.6)
142
+ * - Plain 'add'/'remove' without messageDelivery: notifies general handlers and forwards (backward compat)
93
143
  *
94
144
  * @param announcement - The received announcement
95
- * @see Requirements 6.2, 6.4
145
+ * @see Requirements 3.4, 3.5, 3.6, 4.4
96
146
  */
97
147
  async handleAnnouncement(announcement) {
98
- // Notify all registered handlers
148
+ // Case 1: Ack announcements — dispatch to delivery ack handlers only
149
+ if (announcement.type === 'ack') {
150
+ for (const handler of this.deliveryAckHandlers) {
151
+ try {
152
+ handler(announcement);
153
+ }
154
+ catch {
155
+ // Ignore handler errors to prevent one handler from affecting others
156
+ }
157
+ }
158
+ // Forward ack with decremented TTL
159
+ if (announcement.ttl > 0) {
160
+ const forwardedAnnouncement = {
161
+ ...announcement,
162
+ ttl: announcement.ttl - 1,
163
+ };
164
+ this.queueAnnouncement(forwardedAnnouncement);
165
+ }
166
+ return;
167
+ }
168
+ // Case 2: Message delivery announcements
169
+ if (announcement.messageDelivery) {
170
+ const matchingLocalRecipients = announcement.messageDelivery.recipientIds.filter((id) => this.localUserIds.has(id));
171
+ if (matchingLocalRecipients.length > 0) {
172
+ // Req 3.4: recipientIds match local users — trigger message delivery handlers
173
+ for (const handler of this.messageDeliveryHandlers) {
174
+ try {
175
+ handler(announcement);
176
+ }
177
+ catch {
178
+ // Ignore handler errors to prevent one handler from affecting others
179
+ }
180
+ }
181
+ // Req 3.5: If ackRequired, automatically send delivery ack for each local recipient
182
+ if (announcement.messageDelivery.ackRequired) {
183
+ for (const recipientId of matchingLocalRecipients) {
184
+ await this.sendDeliveryAck({
185
+ messageId: announcement.messageDelivery.messageId,
186
+ recipientId,
187
+ status: 'delivered',
188
+ originalSenderNode: announcement.nodeId,
189
+ });
190
+ }
191
+ }
192
+ // Do NOT forward — this node is a recipient
193
+ return;
194
+ }
195
+ // Req 3.6: recipientIds don't match any local users — forward normally
196
+ if (announcement.ttl > 0) {
197
+ const forwardedAnnouncement = {
198
+ ...announcement,
199
+ ttl: announcement.ttl - 1,
200
+ };
201
+ this.queueAnnouncement(forwardedAnnouncement);
202
+ }
203
+ return;
204
+ }
205
+ // Case 3: Plain block announcements (no messageDelivery, not ack) — backward compatible
99
206
  for (const handler of this.handlers) {
100
207
  try {
101
208
  handler(announcement);
@@ -141,8 +248,13 @@ class GossipService {
141
248
  }
142
249
  /**
143
250
  * Immediately flush all pending announcements.
251
+ * Groups announcements by their required fanout (based on message priority)
252
+ * and sends each group to the appropriate number of peers.
144
253
  *
145
- * @see Requirements 6.6
254
+ * - Announcements with messageDelivery use priority-based fanout (Req 3.1, 3.2)
255
+ * - Announcements without messageDelivery use default fanout (Req 3.3)
256
+ *
257
+ * @see Requirements 3.1, 3.2, 3.3, 6.6
146
258
  */
147
259
  async flushAnnouncements() {
148
260
  if (this.pendingAnnouncements.length === 0) {
@@ -155,19 +267,40 @@ class GossipService {
155
267
  this.pendingAnnouncements = [];
156
268
  return;
157
269
  }
158
- // Select random peers for fanout
159
- const selectedPeers = this.selectRandomPeers(connectedPeers, this.config.fanout);
160
- // Split announcements into batches
161
- const batches = this.splitIntoBatches(this.pendingAnnouncements, this.config.maxBatchSize);
270
+ // Group announcements by their required fanout
271
+ const fanoutGroups = new Map();
272
+ for (const announcement of this.pendingAnnouncements) {
273
+ let fanout;
274
+ if (announcement.messageDelivery) {
275
+ // Use priority-based fanout for message announcements
276
+ const priorityConfig = this.config.messagePriority[announcement.messageDelivery.priority];
277
+ fanout = priorityConfig.fanout;
278
+ }
279
+ else {
280
+ // Use default fanout for non-message announcements (Req 3.3)
281
+ fanout = this.config.fanout;
282
+ }
283
+ const group = fanoutGroups.get(fanout);
284
+ if (group) {
285
+ group.push(announcement);
286
+ }
287
+ else {
288
+ fanoutGroups.set(fanout, [announcement]);
289
+ }
290
+ }
162
291
  // Clear pending before sending to avoid duplicates on retry
163
292
  this.pendingAnnouncements = [];
164
- // Send batches to selected peers
293
+ // Send each fanout group to the appropriate number of peers
165
294
  const sendPromises = [];
166
- for (const peerId of selectedPeers) {
167
- for (const batch of batches) {
168
- sendPromises.push(this.peerProvider.sendAnnouncementBatch(peerId, batch).catch(() => {
169
- // Ignore send errors - best effort delivery
170
- }));
295
+ for (const [fanout, announcements] of fanoutGroups) {
296
+ const selectedPeers = this.selectRandomPeers(connectedPeers, fanout);
297
+ const batches = this.splitIntoBatches(announcements, this.config.maxBatchSize);
298
+ for (const peerId of selectedPeers) {
299
+ for (const batch of batches) {
300
+ sendPromises.push(this.sendBatchToPeer(peerId, batch).catch(() => {
301
+ // Ignore send errors - best effort delivery
302
+ }));
303
+ }
171
304
  }
172
305
  }
173
306
  await Promise.all(sendPromises);
@@ -258,12 +391,159 @@ class GossipService {
258
391
  }
259
392
  return batches;
260
393
  }
394
+ /**
395
+ * Check if a batch contains sensitive metadata (messageDelivery or deliveryAck).
396
+ *
397
+ * @param announcements - The announcements to check
398
+ * @returns true if any announcement has messageDelivery or deliveryAck
399
+ * @see Requirements 4.1, 4.2
400
+ */
401
+ batchContainsSensitiveMetadata(announcements) {
402
+ return announcements.some((a) => a.messageDelivery !== undefined || a.deliveryAck !== undefined);
403
+ }
404
+ /**
405
+ * Encrypt a batch of announcements for a specific peer using ECIES.
406
+ * Serializes announcements to JSON, encrypts with the peer's public key,
407
+ * and returns a base64-encoded ciphertext string.
408
+ *
409
+ * @param announcements - The announcements to encrypt
410
+ * @param peerPublicKey - The peer's ECIES public key
411
+ * @returns Base64-encoded ECIES ciphertext
412
+ * @see Requirements 4.1, 4.3
413
+ */
414
+ async encryptBatchForPeer(announcements, peerPublicKey) {
415
+ if (!this.eciesService) {
416
+ throw new Error('ECIESService is required for encryption');
417
+ }
418
+ const json = JSON.stringify(announcements.map((a) => ({
419
+ type: a.type,
420
+ blockId: a.blockId,
421
+ nodeId: a.nodeId,
422
+ ttl: a.ttl,
423
+ ...(a.messageDelivery ? { messageDelivery: a.messageDelivery } : {}),
424
+ ...(a.deliveryAck ? { deliveryAck: a.deliveryAck } : {}),
425
+ })));
426
+ const plaintext = Buffer.from(json, 'utf-8');
427
+ const ciphertext = await this.eciesService.encryptWithLength(peerPublicKey, plaintext);
428
+ return Buffer.from(ciphertext).toString('base64');
429
+ }
430
+ /**
431
+ * Send a batch to a peer, encrypting if the batch is sensitive and the peer has a public key.
432
+ *
433
+ * - Sensitive batch + peer key available → encrypt and send with encryptedPayload
434
+ * - Sensitive batch + no peer key → send plaintext, log warning (Req 6.1, 6.2)
435
+ * - Non-sensitive batch → send plaintext
436
+ *
437
+ * @param peerId - The peer to send to
438
+ * @param batch - The announcements to send
439
+ * @see Requirements 4.1, 4.2, 6.1, 6.2
440
+ */
441
+ async sendBatchToPeer(peerId, batch) {
442
+ const isSensitive = this.batchContainsSensitiveMetadata(batch);
443
+ if (isSensitive && this.eciesService) {
444
+ const peerKey = await this.peerProvider.getPeerPublicKey(peerId);
445
+ if (peerKey) {
446
+ // Encrypt and send with encrypted payload
447
+ const encryptedPayload = await this.encryptBatchForPeer(batch, peerKey);
448
+ await this.peerProvider.sendAnnouncementBatch(peerId, [], {
449
+ encryptedPayload,
450
+ senderNodeId: this.peerProvider.getLocalNodeId(),
451
+ });
452
+ return;
453
+ }
454
+ // Sensitive but no peer key — fallback to plaintext with warning
455
+ console.warn(`[GossipService] Sending sensitive batch in plaintext to peer ${peerId}: no public key registered`);
456
+ }
457
+ // Non-sensitive or fallback: send plaintext
458
+ await this.peerProvider.sendAnnouncementBatch(peerId, batch);
459
+ }
261
460
  /**
262
461
  * Clear all pending announcements (for testing).
263
462
  */
264
463
  clearPending() {
265
464
  this.pendingAnnouncements = [];
266
465
  }
466
+ /**
467
+ * Announce message blocks to the network with message delivery metadata.
468
+ * Creates a BlockAnnouncement for each blockId with priority-based TTL
469
+ * from config and queues them for batch sending.
470
+ *
471
+ * @param blockIds - The block IDs containing the message content
472
+ * @param metadata - Message delivery metadata including recipients, priority, and CBL block ID
473
+ * @see Requirements 3.1, 3.2, 3.3
474
+ */
475
+ async announceMessage(blockIds, metadata) {
476
+ // Determine TTL based on priority (Req 3.1: normal → 5, Req 3.2: high → 7)
477
+ const priorityConfig = this.config.messagePriority[metadata.priority];
478
+ const ttl = priorityConfig.ttl;
479
+ // Create a BlockAnnouncement for each blockId
480
+ for (const blockId of blockIds) {
481
+ const announcement = {
482
+ type: 'add',
483
+ blockId,
484
+ nodeId: this.peerProvider.getLocalNodeId(),
485
+ timestamp: new Date(),
486
+ ttl,
487
+ messageDelivery: metadata,
488
+ };
489
+ this.queueAnnouncement(announcement);
490
+ }
491
+ }
492
+ /**
493
+ * Send a delivery acknowledgment back through the gossip network.
494
+ * Stub implementation — will be fully implemented in task 4.3.
495
+ *
496
+ * @param _ack - Delivery acknowledgment metadata
497
+ * @see Requirements 4.1
498
+ */
499
+ async sendDeliveryAck(ack) {
500
+ const announcement = {
501
+ type: 'ack',
502
+ blockId: ack.messageId,
503
+ nodeId: this.peerProvider.getLocalNodeId(),
504
+ timestamp: new Date(),
505
+ ttl: this.config.defaultTtl,
506
+ deliveryAck: ack,
507
+ };
508
+ this.queueAnnouncement(announcement);
509
+ }
510
+ /**
511
+ * Register a handler for message delivery events.
512
+ * The handler is called when a BlockAnnouncement with messageDelivery
513
+ * metadata is received and recipientIds match local users.
514
+ *
515
+ * @param handler - Function to call when a message delivery announcement is received
516
+ * @see Requirements 3.4, 3.5
517
+ */
518
+ onMessageDelivery(handler) {
519
+ this.messageDeliveryHandlers.add(handler);
520
+ }
521
+ /**
522
+ * Remove a message delivery event handler.
523
+ *
524
+ * @param handler - The handler to remove
525
+ */
526
+ offMessageDelivery(handler) {
527
+ this.messageDeliveryHandlers.delete(handler);
528
+ }
529
+ /**
530
+ * Register a handler for delivery acknowledgment events.
531
+ * The handler is called when a BlockAnnouncement of type 'ack' is received.
532
+ *
533
+ * @param handler - Function to call when a delivery ack announcement is received
534
+ * @see Requirements 4.4
535
+ */
536
+ onDeliveryAck(handler) {
537
+ this.deliveryAckHandlers.add(handler);
538
+ }
539
+ /**
540
+ * Remove a delivery acknowledgment event handler.
541
+ *
542
+ * @param handler - The handler to remove
543
+ */
544
+ offDeliveryAck(handler) {
545
+ this.deliveryAckHandlers.delete(handler);
546
+ }
267
547
  }
268
548
  exports.GossipService = GossipService;
269
549
  //# sourceMappingURL=gossipService.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"gossipService.js","sourceRoot":"","sources":["../../../../../brightchain-api-lib/src/lib/availability/gossipService.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"gossipService.js","sourceRoot":"","sources":["../../../../../brightchain-api-lib/src/lib/availability/gossipService.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"blocks.d.ts","sourceRoot":"","sources":["../../../../../../brightchain-api-lib/src/lib/controllers/api/blocks.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAC7D,OAAO,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAC7D,OAAO,EACL,gBAAgB,EAChB,iBAAiB,EACjB,aAAa,EAEd,MAAM,qCAAqC,CAAC;AAC7C,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AAQvE,OAAO,EACL,sBAAsB,EACtB,oBAAoB,EACpB,yBAAyB,EACzB,iBAAiB,EACjB,mBAAmB,EACpB,MAAM,iCAAiC,CAAC;AAGzC,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAQ1D,OAAO,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAGzC;;;GAGG;AACH,oBAAY,cAAc;IACxB,eAAe,oBAAoB;IACnC,uBAAuB,4BAA4B;IACnD,mBAAmB,wBAAwB;IAC3C,0BAA0B,+BAA+B;IACzD,oBAAoB,yBAAyB;IAC7C,gBAAgB,qBAAqB;IACrC,YAAY,iBAAiB;IAC7B,cAAc,mBAAmB;CAClC;AAED,KAAK,gBAAgB,GACjB,mBAAmB,GACnB,iBAAiB,GACjB,yBAAyB,GACzB,oBAAoB,GACpB,sBAAsB,GACtB,gBAAgB,CAAC;AAErB,UAAU,cAAe,SAAQ,aAAa;IAC5C,UAAU,EAAE,iBAAiB,CAAC,mBAAmB,GAAG,gBAAgB,CAAC,CAAC;IACtE,QAAQ,EAAE,iBAAiB,CAAC,iBAAiB,GAAG,gBAAgB,CAAC,CAAC;IAClE,gBAAgB,EAAE,iBAAiB,CACjC,yBAAyB,GAAG,gBAAgB,CAC7C,CAAC;IACF,WAAW,EAAE,iBAAiB,CAAC,oBAAoB,GAAG,gBAAgB,CAAC,CAAC;IACxE,aAAa,EAAE,iBAAiB,CAAC,sBAAsB,GAAG,gBAAgB,CAAC,CAAC;CAC7E;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuDG;AACH,qBAAa,gBAAgB,CAC3B,GAAG,SAAS,UAAU,GAAG,oBAAoB,CAC7C,SAAQ,cAAc,CACtB,GAAG,EACH,gBAAgB,EAChB,cAAc,EACd,gBAAgB,CACjB;IACC,OAAO,CAAC,aAAa,CAAgB;gBAEzB,WAAW,EAAE,uBAAuB,CAAC,GAAG,CAAC;IAOrD,SAAS,CAAC,oBAAoB,IAAI,IAAI;IAsCtC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAqCG;IACH,OAAO,CAAC,gBAAgB,CA+DtB;IAEF;;;;;;;;;;;;;;;;;;;;;;;;OAwBG;IACH,OAAO,CAAC,cAAc,CA4BpB;IAEF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA+BG;IACH,OAAO,CAAC,sBAAsB,CA6B5B;IAEF;;;;;;;;;;;;;;;;;;;;;;;OAuBG;IACH,OAAO,CAAC,iBAAiB,CAyBvB;IAEF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA6BG;IACH,OAAO,CAAC,mBAAmB,CAoCzB;CACH"}
1
+ {"version":3,"file":"blocks.d.ts","sourceRoot":"","sources":["../../../../../../brightchain-api-lib/src/lib/controllers/api/blocks.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAC7D,OAAO,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAC7D,OAAO,EACL,gBAAgB,EAChB,iBAAiB,EAEjB,aAAa,EAEd,MAAM,qCAAqC,CAAC;AAC7C,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AAQvE,OAAO,EACL,sBAAsB,EACtB,oBAAoB,EACpB,yBAAyB,EACzB,iBAAiB,EACjB,mBAAmB,EACpB,MAAM,iCAAiC,CAAC;AAGzC,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAQ1D,OAAO,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAGzC;;;GAGG;AACH,oBAAY,cAAc;IACxB,eAAe,oBAAoB;IACnC,uBAAuB,4BAA4B;IACnD,mBAAmB,wBAAwB;IAC3C,0BAA0B,+BAA+B;IACzD,oBAAoB,yBAAyB;IAC7C,gBAAgB,qBAAqB;IACrC,YAAY,iBAAiB;IAC7B,cAAc,mBAAmB;CAClC;AAED,KAAK,gBAAgB,GACjB,mBAAmB,GACnB,iBAAiB,GACjB,yBAAyB,GACzB,oBAAoB,GACpB,sBAAsB,GACtB,gBAAgB,CAAC;AAErB,UAAU,cAAe,SAAQ,aAAa;IAC5C,UAAU,EAAE,iBAAiB,CAAC,mBAAmB,GAAG,gBAAgB,CAAC,CAAC;IACtE,QAAQ,EAAE,iBAAiB,CAAC,iBAAiB,GAAG,gBAAgB,CAAC,CAAC;IAClE,gBAAgB,EAAE,iBAAiB,CACjC,yBAAyB,GAAG,gBAAgB,CAC7C,CAAC;IACF,WAAW,EAAE,iBAAiB,CAAC,oBAAoB,GAAG,gBAAgB,CAAC,CAAC;IACxE,aAAa,EAAE,iBAAiB,CAAC,sBAAsB,GAAG,gBAAgB,CAAC,CAAC;CAC7E;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuDG;AACH,qBAAa,gBAAgB,CAC3B,GAAG,SAAS,UAAU,GAAG,oBAAoB,CAC7C,SAAQ,cAAc,CACtB,GAAG,EACH,gBAAgB,EAChB,cAAc,EACd,gBAAgB,CACjB;IACC,OAAO,CAAC,aAAa,CAAgB;gBAEzB,WAAW,EAAE,uBAAuB,CAAC,GAAG,CAAC;IAOrD,SAAS,CAAC,oBAAoB,IAAI,IAAI;IAyGtC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAqCG;IACH,OAAO,CAAC,gBAAgB,CA+DtB;IAEF;;;;;;;;;;;;;;;;;;;;;;;;OAwBG;IACH,OAAO,CAAC,cAAc,CA4BpB;IAEF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA+BG;IACH,OAAO,CAAC,sBAAsB,CA6B5B;IAEF;;;;;;;;;;;;;;;;;;;;;;;OAuBG;IACH,OAAO,CAAC,iBAAiB,CAyBvB;IAEF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA6BG;IACH,OAAO,CAAC,mBAAmB,CAoCzB;CACH"}
@@ -379,28 +379,90 @@ class BlocksController extends base_1.BaseController {
379
379
  useAuthentication: true,
380
380
  useCryptoAuthentication: false,
381
381
  handlerKey: 'storeBlock',
382
+ openapi: {
383
+ summary: 'Store a block',
384
+ description: 'Store a new block with optional durability settings.',
385
+ tags: ['Blocks'],
386
+ requestBody: {
387
+ schema: 'StoreBlockRequest',
388
+ example: {
389
+ data: 'SGVsbG8gV29ybGQ=',
390
+ options: { durabilityLevel: 'standard' },
391
+ },
392
+ },
393
+ responses: {
394
+ 200: { schema: 'StoreBlockResponse', description: 'Block stored' },
395
+ },
396
+ },
382
397
  }),
383
398
  (0, node_express_suite_1.routeConfig)('get', '/:blockId', {
384
399
  handlerKey: 'getBlock',
385
400
  useAuthentication: true,
386
401
  useCryptoAuthentication: false,
402
+ openapi: {
403
+ summary: 'Get block by ID',
404
+ description: 'Retrieve a block by its ID.',
405
+ tags: ['Blocks'],
406
+ responses: {
407
+ 200: { schema: 'GetBlockResponse', description: 'Block retrieved' },
408
+ 404: { schema: 'ErrorResponse', description: 'Block not found' },
409
+ },
410
+ },
387
411
  }),
388
412
  (0, node_express_suite_1.routeConfig)('get', '/:blockId/metadata', {
389
413
  handlerKey: 'getBlockMetadata',
390
414
  useAuthentication: true,
391
415
  useCryptoAuthentication: false,
416
+ openapi: {
417
+ summary: 'Get block metadata',
418
+ description: 'Get metadata for a block without retrieving the data.',
419
+ tags: ['Blocks'],
420
+ responses: {
421
+ 200: {
422
+ schema: 'GetBlockMetadataResponse',
423
+ description: 'Metadata retrieved',
424
+ },
425
+ 404: { schema: 'ErrorResponse', description: 'Block not found' },
426
+ },
427
+ },
392
428
  }),
393
429
  (0, node_express_suite_1.routeConfig)('delete', '/:blockId', {
394
430
  handlerKey: 'deleteBlock',
395
431
  useAuthentication: true,
396
432
  useCryptoAuthentication: false,
433
+ openapi: {
434
+ summary: 'Delete block',
435
+ description: 'Delete a block and its parity blocks.',
436
+ tags: ['Blocks'],
437
+ responses: {
438
+ 200: { description: 'Block deleted' },
439
+ 404: { schema: 'ErrorResponse', description: 'Block not found' },
440
+ },
441
+ },
397
442
  }),
398
443
  (0, node_express_suite_1.routeConfig)('post', '/brighten', {
399
444
  handlerKey: 'brightenBlock',
400
445
  useAuthentication: true,
401
446
  useCryptoAuthentication: false,
447
+ openapi: {
448
+ summary: 'Brighten a block',
449
+ description: 'XOR a block with random blocks for Owner-Free storage.',
450
+ tags: ['Blocks'],
451
+ requestBody: {
452
+ schema: 'BrightenBlockRequest',
453
+ example: { blockId: 'abc123...', randomBlockCount: 3 },
454
+ },
455
+ responses: {
456
+ 200: {
457
+ schema: 'BrightenBlockResponse',
458
+ description: 'Block brightened',
459
+ },
460
+ },
461
+ },
402
462
  }),
403
463
  ];
464
+ // Register with OpenAPI registry
465
+ node_express_suite_1.ControllerRegistry.register('/blocks', 'BlocksController', this.routeDefinitions);
404
466
  this.handlers = {
405
467
  storeBlock: this.handleStoreBlock.bind(this),
406
468
  getBlock: this.handleGetBlock.bind(this),
@@ -1 +1 @@
1
- {"version":3,"file":"blocks.js","sourceRoot":"","sources":["../../../../../../brightchain-api-lib/src/lib/controllers/api/blocks.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"blocks.js","sourceRoot":"","sources":["../../../../../../brightchain-api-lib/src/lib/controllers/api/blocks.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,67 @@
1
+ import { CoreLanguageCode } from '@digitaldefiance/i18n-lib';
2
+ import { PlatformID } from '@digitaldefiance/node-ecies-lib';
3
+ import { ApiErrorResponse, ApiRequestHandler, IApiMessageResponse, TypedHandlers } from '@digitaldefiance/node-express-suite';
4
+ import { IBrightChainApplication } from '../../interfaces/application';
5
+ import '../../openapi/schemas';
6
+ import { DefaultBackendIdType } from '../../shared-types';
7
+ import { BaseController } from '../base';
8
+ /**
9
+ * OpenAPI specification response
10
+ */
11
+ export interface IOpenAPIResponse extends IApiMessageResponse {
12
+ openapi: string;
13
+ info: {
14
+ title: string;
15
+ version: string;
16
+ description: string;
17
+ };
18
+ servers: Array<{
19
+ url: string;
20
+ description: string;
21
+ }>;
22
+ paths: Record<string, any>;
23
+ components: {
24
+ schemas: Record<string, any>;
25
+ securitySchemes: Record<string, any>;
26
+ };
27
+ [key: string]: unknown;
28
+ }
29
+ type DocsApiResponse = IOpenAPIResponse | ApiErrorResponse;
30
+ interface DocsHandlers extends TypedHandlers {
31
+ getDocs: ApiRequestHandler<IOpenAPIResponse | ApiErrorResponse>;
32
+ }
33
+ /**
34
+ * Controller for API documentation endpoint.
35
+ *
36
+ * Provides the OpenAPI specification for the BrightChain API.
37
+ * The specification is built dynamically from registered controllers
38
+ * using their route definitions and OpenAPI metadata.
39
+ *
40
+ * ## Endpoints
41
+ *
42
+ * ### GET /api/docs
43
+ * Returns the OpenAPI specification in JSON format.
44
+ *
45
+ * **Response:**
46
+ * - OpenAPI 3.0.3 specification with all endpoints
47
+ * - Request/response schemas for each endpoint
48
+ * - Authentication requirements per endpoint
49
+ * - Example requests and responses
50
+ *
51
+ * @requirements 10.1, 10.2, 10.3, 10.4
52
+ */
53
+ export declare class DocsController<TID extends PlatformID = DefaultBackendIdType> extends BaseController<TID, DocsApiResponse, DocsHandlers, CoreLanguageCode> {
54
+ private static readonly API_VERSION;
55
+ private readonly builder;
56
+ constructor(application: IBrightChainApplication<TID>);
57
+ protected initRouteDefinitions(): void;
58
+ /**
59
+ * GET /api/docs
60
+ * Returns the OpenAPI specification in JSON format.
61
+ *
62
+ * @requirements 10.1, 10.2, 10.3, 10.4
63
+ */
64
+ private handleGetDocs;
65
+ }
66
+ export {};
67
+ //# sourceMappingURL=docs.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"docs.d.ts","sourceRoot":"","sources":["../../../../../../brightchain-api-lib/src/lib/controllers/api/docs.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAC7D,OAAO,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAC7D,OAAO,EACL,gBAAgB,EAChB,iBAAiB,EAEjB,mBAAmB,EAGnB,aAAa,EAEd,MAAM,qCAAqC,CAAC;AAC7C,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AAEvE,OAAO,uBAAuB,CAAC;AAC/B,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAEzC;;GAEG;AACH,MAAM,WAAW,gBAAiB,SAAQ,mBAAmB;IAC3D,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE;QACJ,KAAK,EAAE,MAAM,CAAC;QACd,OAAO,EAAE,MAAM,CAAC;QAChB,WAAW,EAAE,MAAM,CAAC;KACrB,CAAC;IACF,OAAO,EAAE,KAAK,CAAC;QACb,GAAG,EAAE,MAAM,CAAC;QACZ,WAAW,EAAE,MAAM,CAAC;KACrB,CAAC,CAAC;IACH,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC3B,UAAU,EAAE;QACV,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;QAC7B,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;KACtC,CAAC;IACF,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,KAAK,eAAe,GAAG,gBAAgB,GAAG,gBAAgB,CAAC;AAE3D,UAAU,YAAa,SAAQ,aAAa;IAC1C,OAAO,EAAE,iBAAiB,CAAC,gBAAgB,GAAG,gBAAgB,CAAC,CAAC;CACjE;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,qBAAa,cAAc,CACzB,GAAG,SAAS,UAAU,GAAG,oBAAoB,CAC7C,SAAQ,cAAc,CAAC,GAAG,EAAE,eAAe,EAAE,YAAY,EAAE,gBAAgB,CAAC;IAC5E,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAY;IAC/C,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAiB;gBAE7B,WAAW,EAAE,uBAAuB,CAAC,GAAG,CAAC;IAYrD,SAAS,CAAC,oBAAoB,IAAI,IAAI;IAgCtC;;;;;OAKG;YACW,aAAa;CAiB5B"}