@brightchain/brightchain-api-lib 0.0.1

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 (586) hide show
  1. package/brightchain-api-lib/README.md +101 -0
  2. package/package.json +53 -0
  3. package/src/index.d.ts +88 -0
  4. package/src/index.d.ts.map +1 -0
  5. package/src/index.js +101 -0
  6. package/src/index.js.map +1 -0
  7. package/src/lib/__tests__/fixtures/mock-backend-brightchain-member.d.ts +71 -0
  8. package/src/lib/__tests__/fixtures/mock-backend-brightchain-member.d.ts.map +1 -0
  9. package/src/lib/__tests__/fixtures/mock-backend-brightchain-member.js +119 -0
  10. package/src/lib/__tests__/fixtures/mock-backend-brightchain-member.js.map +1 -0
  11. package/src/lib/__tests__/fixtures/mocked-model.d.ts +90 -0
  12. package/src/lib/__tests__/fixtures/mocked-model.d.ts.map +1 -0
  13. package/src/lib/__tests__/fixtures/mocked-model.js +101 -0
  14. package/src/lib/__tests__/fixtures/mocked-model.js.map +1 -0
  15. package/src/lib/__tests__/helpers/application.mock.d.ts +5 -0
  16. package/src/lib/__tests__/helpers/application.mock.d.ts.map +1 -0
  17. package/src/lib/__tests__/helpers/application.mock.js +52 -0
  18. package/src/lib/__tests__/helpers/application.mock.js.map +1 -0
  19. package/src/lib/__tests__/helpers/model-mocks.mock.d.ts +43 -0
  20. package/src/lib/__tests__/helpers/model-mocks.mock.d.ts.map +1 -0
  21. package/src/lib/__tests__/helpers/model-mocks.mock.js +67 -0
  22. package/src/lib/__tests__/helpers/model-mocks.mock.js.map +1 -0
  23. package/src/lib/appConstants.d.ts +87 -0
  24. package/src/lib/appConstants.d.ts.map +1 -0
  25. package/src/lib/appConstants.js +25 -0
  26. package/src/lib/appConstants.js.map +1 -0
  27. package/src/lib/application-base.d.ts +39 -0
  28. package/src/lib/application-base.d.ts.map +1 -0
  29. package/src/lib/application-base.js +84 -0
  30. package/src/lib/application-base.js.map +1 -0
  31. package/src/lib/application.d.ts +14 -0
  32. package/src/lib/application.d.ts.map +1 -0
  33. package/src/lib/application.js +105 -0
  34. package/src/lib/application.js.map +1 -0
  35. package/src/lib/availability/availabilityMetrics.d.ts +241 -0
  36. package/src/lib/availability/availabilityMetrics.d.ts.map +1 -0
  37. package/src/lib/availability/availabilityMetrics.js +425 -0
  38. package/src/lib/availability/availabilityMetrics.js.map +1 -0
  39. package/src/lib/availability/availabilityService.d.ts +250 -0
  40. package/src/lib/availability/availabilityService.d.ts.map +1 -0
  41. package/src/lib/availability/availabilityService.js +593 -0
  42. package/src/lib/availability/availabilityService.js.map +1 -0
  43. package/src/lib/availability/blockRegistry.d.ts +141 -0
  44. package/src/lib/availability/blockRegistry.d.ts.map +1 -0
  45. package/src/lib/availability/blockRegistry.js +257 -0
  46. package/src/lib/availability/blockRegistry.js.map +1 -0
  47. package/src/lib/availability/configValidation.d.ts +72 -0
  48. package/src/lib/availability/configValidation.d.ts.map +1 -0
  49. package/src/lib/availability/configValidation.js +261 -0
  50. package/src/lib/availability/configValidation.js.map +1 -0
  51. package/src/lib/availability/discoveryProtocol.d.ts +160 -0
  52. package/src/lib/availability/discoveryProtocol.d.ts.map +1 -0
  53. package/src/lib/availability/discoveryProtocol.js +304 -0
  54. package/src/lib/availability/discoveryProtocol.js.map +1 -0
  55. package/src/lib/availability/gossipService.d.ts +158 -0
  56. package/src/lib/availability/gossipService.d.ts.map +1 -0
  57. package/src/lib/availability/gossipService.js +271 -0
  58. package/src/lib/availability/gossipService.js.map +1 -0
  59. package/src/lib/availability/heartbeatMonitor.d.ts +204 -0
  60. package/src/lib/availability/heartbeatMonitor.d.ts.map +1 -0
  61. package/src/lib/availability/heartbeatMonitor.js +375 -0
  62. package/src/lib/availability/heartbeatMonitor.js.map +1 -0
  63. package/src/lib/availability/index.d.ts +15 -0
  64. package/src/lib/availability/index.d.ts.map +1 -0
  65. package/src/lib/availability/index.js +18 -0
  66. package/src/lib/availability/index.js.map +1 -0
  67. package/src/lib/availability/reconciliationService.d.ts +237 -0
  68. package/src/lib/availability/reconciliationService.d.ts.map +1 -0
  69. package/src/lib/availability/reconciliationService.js +513 -0
  70. package/src/lib/availability/reconciliationService.js.map +1 -0
  71. package/src/lib/blocks/handle.d.ts +45 -0
  72. package/src/lib/blocks/handle.d.ts.map +1 -0
  73. package/src/lib/blocks/handle.js +221 -0
  74. package/src/lib/blocks/handle.js.map +1 -0
  75. package/src/lib/constants.d.ts +50 -0
  76. package/src/lib/constants.d.ts.map +1 -0
  77. package/src/lib/constants.js +58 -0
  78. package/src/lib/constants.js.map +1 -0
  79. package/src/lib/controllers/base.d.ts +50 -0
  80. package/src/lib/controllers/base.d.ts.map +1 -0
  81. package/src/lib/controllers/base.js +235 -0
  82. package/src/lib/controllers/base.js.map +1 -0
  83. package/src/lib/controllers/user.d.ts +9 -0
  84. package/src/lib/controllers/user.d.ts.map +1 -0
  85. package/src/lib/controllers/user.js +21 -0
  86. package/src/lib/controllers/user.js.map +1 -0
  87. package/src/lib/datastore/block-document-store-factory.d.ts +19 -0
  88. package/src/lib/datastore/block-document-store-factory.d.ts.map +1 -0
  89. package/src/lib/datastore/block-document-store-factory.js +29 -0
  90. package/src/lib/datastore/block-document-store-factory.js.map +1 -0
  91. package/src/lib/datastore/block-document-store.d.ts +185 -0
  92. package/src/lib/datastore/block-document-store.d.ts.map +1 -0
  93. package/src/lib/datastore/block-document-store.js +590 -0
  94. package/src/lib/datastore/block-document-store.js.map +1 -0
  95. package/src/lib/datastore/document-model-adapter.d.ts +48 -0
  96. package/src/lib/datastore/document-model-adapter.d.ts.map +1 -0
  97. package/src/lib/datastore/document-model-adapter.js +178 -0
  98. package/src/lib/datastore/document-model-adapter.js.map +1 -0
  99. package/src/lib/datastore/document-store.d.ts +64 -0
  100. package/src/lib/datastore/document-store.d.ts.map +1 -0
  101. package/src/lib/datastore/document-store.js +3 -0
  102. package/src/lib/datastore/document-store.js.map +1 -0
  103. package/src/lib/datastore/memory-document-store.d.ts +6 -0
  104. package/src/lib/datastore/memory-document-store.d.ts.map +1 -0
  105. package/src/lib/datastore/memory-document-store.js +196 -0
  106. package/src/lib/datastore/memory-document-store.js.map +1 -0
  107. package/src/lib/documents/base.d.ts +5 -0
  108. package/src/lib/documents/base.d.ts.map +1 -0
  109. package/src/lib/documents/base.js +3 -0
  110. package/src/lib/documents/base.js.map +1 -0
  111. package/src/lib/documents/email-token.d.ts +8 -0
  112. package/src/lib/documents/email-token.d.ts.map +1 -0
  113. package/src/lib/documents/email-token.js +3 -0
  114. package/src/lib/documents/email-token.js.map +1 -0
  115. package/src/lib/documents/index.d.ts +7 -0
  116. package/src/lib/documents/index.d.ts.map +1 -0
  117. package/src/lib/documents/index.js +3 -0
  118. package/src/lib/documents/index.js.map +1 -0
  119. package/src/lib/documents/mnemonic.d.ts +8 -0
  120. package/src/lib/documents/mnemonic.d.ts.map +1 -0
  121. package/src/lib/documents/mnemonic.js +3 -0
  122. package/src/lib/documents/mnemonic.js.map +1 -0
  123. package/src/lib/documents/role.d.ts +8 -0
  124. package/src/lib/documents/role.d.ts.map +1 -0
  125. package/src/lib/documents/role.js +3 -0
  126. package/src/lib/documents/role.js.map +1 -0
  127. package/src/lib/documents/used-direct-login-token.d.ts +5 -0
  128. package/src/lib/documents/used-direct-login-token.d.ts.map +1 -0
  129. package/src/lib/documents/used-direct-login-token.js +3 -0
  130. package/src/lib/documents/used-direct-login-token.js.map +1 -0
  131. package/src/lib/documents/user-role.d.ts +8 -0
  132. package/src/lib/documents/user-role.d.ts.map +1 -0
  133. package/src/lib/documents/user-role.js +3 -0
  134. package/src/lib/documents/user-role.js.map +1 -0
  135. package/src/lib/documents/user.d.ts +13 -0
  136. package/src/lib/documents/user.d.ts.map +1 -0
  137. package/src/lib/documents/user.js +3 -0
  138. package/src/lib/documents/user.js.map +1 -0
  139. package/src/lib/enumerations/model-name.d.ts +30 -0
  140. package/src/lib/enumerations/model-name.d.ts.map +1 -0
  141. package/src/lib/enumerations/model-name.js +34 -0
  142. package/src/lib/enumerations/model-name.js.map +1 -0
  143. package/src/lib/enumerations/schema-collection.d.ts +30 -0
  144. package/src/lib/enumerations/schema-collection.d.ts.map +1 -0
  145. package/src/lib/enumerations/schema-collection.js +34 -0
  146. package/src/lib/enumerations/schema-collection.js.map +1 -0
  147. package/src/lib/enumerations/symmetric-error-type.d.ts +5 -0
  148. package/src/lib/enumerations/symmetric-error-type.d.ts.map +1 -0
  149. package/src/lib/enumerations/symmetric-error-type.js +9 -0
  150. package/src/lib/enumerations/symmetric-error-type.js.map +1 -0
  151. package/src/lib/environment.d.ts +23 -0
  152. package/src/lib/environment.d.ts.map +1 -0
  153. package/src/lib/environment.js +75 -0
  154. package/src/lib/environment.js.map +1 -0
  155. package/src/lib/errors/admin-role-not-found.d.ts +6 -0
  156. package/src/lib/errors/admin-role-not-found.d.ts.map +1 -0
  157. package/src/lib/errors/admin-role-not-found.js +14 -0
  158. package/src/lib/errors/admin-role-not-found.js.map +1 -0
  159. package/src/lib/errors/email-already-verified.d.ts +5 -0
  160. package/src/lib/errors/email-already-verified.d.ts.map +1 -0
  161. package/src/lib/errors/email-already-verified.js +11 -0
  162. package/src/lib/errors/email-already-verified.js.map +1 -0
  163. package/src/lib/errors/email-token-failed-to-send.d.ts +7 -0
  164. package/src/lib/errors/email-token-failed-to-send.d.ts.map +1 -0
  165. package/src/lib/errors/email-token-failed-to-send.js +14 -0
  166. package/src/lib/errors/email-token-failed-to-send.js.map +1 -0
  167. package/src/lib/errors/express-validation.d.ts +7 -0
  168. package/src/lib/errors/express-validation.d.ts.map +1 -0
  169. package/src/lib/errors/express-validation.js +14 -0
  170. package/src/lib/errors/express-validation.js.map +1 -0
  171. package/src/lib/errors/invalid-backup-code-version.d.ts +5 -0
  172. package/src/lib/errors/invalid-backup-code-version.d.ts.map +1 -0
  173. package/src/lib/errors/invalid-backup-code-version.js +12 -0
  174. package/src/lib/errors/invalid-backup-code-version.js.map +1 -0
  175. package/src/lib/errors/invalid-challenge-response.d.ts +5 -0
  176. package/src/lib/errors/invalid-challenge-response.d.ts.map +1 -0
  177. package/src/lib/errors/invalid-challenge-response.js +14 -0
  178. package/src/lib/errors/invalid-challenge-response.js.map +1 -0
  179. package/src/lib/errors/invalid-expired-token.d.ts +5 -0
  180. package/src/lib/errors/invalid-expired-token.d.ts.map +1 -0
  181. package/src/lib/errors/invalid-expired-token.js +13 -0
  182. package/src/lib/errors/invalid-expired-token.js.map +1 -0
  183. package/src/lib/errors/invalid-jwt-token.d.ts +5 -0
  184. package/src/lib/errors/invalid-jwt-token.d.ts.map +1 -0
  185. package/src/lib/errors/invalid-jwt-token.js +12 -0
  186. package/src/lib/errors/invalid-jwt-token.js.map +1 -0
  187. package/src/lib/errors/last-admin-error.d.ts +7 -0
  188. package/src/lib/errors/last-admin-error.d.ts.map +1 -0
  189. package/src/lib/errors/last-admin-error.js +16 -0
  190. package/src/lib/errors/last-admin-error.js.map +1 -0
  191. package/src/lib/errors/login-challenge-expired.d.ts +5 -0
  192. package/src/lib/errors/login-challenge-expired.d.ts.map +1 -0
  193. package/src/lib/errors/login-challenge-expired.js +14 -0
  194. package/src/lib/errors/login-challenge-expired.js.map +1 -0
  195. package/src/lib/errors/member-role-not-found.d.ts +7 -0
  196. package/src/lib/errors/member-role-not-found.d.ts.map +1 -0
  197. package/src/lib/errors/member-role-not-found.js +14 -0
  198. package/src/lib/errors/member-role-not-found.js.map +1 -0
  199. package/src/lib/errors/missing-validated-data.d.ts +8 -0
  200. package/src/lib/errors/missing-validated-data.d.ts.map +1 -0
  201. package/src/lib/errors/missing-validated-data.js +32 -0
  202. package/src/lib/errors/missing-validated-data.js.map +1 -0
  203. package/src/lib/errors/mnemonic-or-password-required.d.ts +5 -0
  204. package/src/lib/errors/mnemonic-or-password-required.d.ts.map +1 -0
  205. package/src/lib/errors/mnemonic-or-password-required.js +14 -0
  206. package/src/lib/errors/mnemonic-or-password-required.js.map +1 -0
  207. package/src/lib/errors/restricted.d.ts +5 -0
  208. package/src/lib/errors/restricted.d.ts.map +1 -0
  209. package/src/lib/errors/restricted.js +15 -0
  210. package/src/lib/errors/restricted.js.map +1 -0
  211. package/src/lib/errors/symmetric.d.ts +9 -0
  212. package/src/lib/errors/symmetric.d.ts.map +1 -0
  213. package/src/lib/errors/symmetric.js +24 -0
  214. package/src/lib/errors/symmetric.js.map +1 -0
  215. package/src/lib/errors/token-expired.d.ts +5 -0
  216. package/src/lib/errors/token-expired.d.ts.map +1 -0
  217. package/src/lib/errors/token-expired.js +12 -0
  218. package/src/lib/errors/token-expired.js.map +1 -0
  219. package/src/lib/errors/token-not-found.d.ts +8 -0
  220. package/src/lib/errors/token-not-found.d.ts.map +1 -0
  221. package/src/lib/errors/token-not-found.js +19 -0
  222. package/src/lib/errors/token-not-found.js.map +1 -0
  223. package/src/lib/errors/translatable-error-local.d.ts +7 -0
  224. package/src/lib/errors/translatable-error-local.d.ts.map +1 -0
  225. package/src/lib/errors/translatable-error-local.js +17 -0
  226. package/src/lib/errors/translatable-error-local.js.map +1 -0
  227. package/src/lib/errors/typed-error-local.d.ts +10 -0
  228. package/src/lib/errors/typed-error-local.d.ts.map +1 -0
  229. package/src/lib/errors/typed-error-local.js +24 -0
  230. package/src/lib/errors/typed-error-local.js.map +1 -0
  231. package/src/lib/factories/blockStoreFactory.d.ts +14 -0
  232. package/src/lib/factories/blockStoreFactory.d.ts.map +1 -0
  233. package/src/lib/factories/blockStoreFactory.js +18 -0
  234. package/src/lib/factories/blockStoreFactory.js.map +1 -0
  235. package/src/lib/interfaces/api-constants.d.ts +51 -0
  236. package/src/lib/interfaces/api-constants.d.ts.map +1 -0
  237. package/src/lib/interfaces/api-constants.js +13 -0
  238. package/src/lib/interfaces/api-constants.js.map +1 -0
  239. package/src/lib/interfaces/api-express-validation-error-response.d.ts +7 -0
  240. package/src/lib/interfaces/api-express-validation-error-response.d.ts.map +1 -0
  241. package/src/lib/interfaces/api-express-validation-error-response.js +3 -0
  242. package/src/lib/interfaces/api-express-validation-error-response.js.map +1 -0
  243. package/src/lib/interfaces/api-mongo-validation-error-response.d.ts +6 -0
  244. package/src/lib/interfaces/api-mongo-validation-error-response.d.ts.map +1 -0
  245. package/src/lib/interfaces/api-mongo-validation-error-response.js +3 -0
  246. package/src/lib/interfaces/api-mongo-validation-error-response.js.map +1 -0
  247. package/src/lib/interfaces/application.d.ts +10 -0
  248. package/src/lib/interfaces/application.d.ts.map +1 -0
  249. package/src/lib/interfaces/application.js +3 -0
  250. package/src/lib/interfaces/application.js.map +1 -0
  251. package/src/lib/interfaces/authenticated-cipher.d.ts +10 -0
  252. package/src/lib/interfaces/authenticated-cipher.d.ts.map +1 -0
  253. package/src/lib/interfaces/authenticated-cipher.js +3 -0
  254. package/src/lib/interfaces/authenticated-cipher.js.map +1 -0
  255. package/src/lib/interfaces/authenticated-decipher.d.ts +9 -0
  256. package/src/lib/interfaces/authenticated-decipher.d.ts.map +1 -0
  257. package/src/lib/interfaces/authenticated-decipher.js +3 -0
  258. package/src/lib/interfaces/authenticated-decipher.js.map +1 -0
  259. package/src/lib/interfaces/backend-objects/email-token.d.ts +4 -0
  260. package/src/lib/interfaces/backend-objects/email-token.d.ts.map +1 -0
  261. package/src/lib/interfaces/backend-objects/email-token.js +3 -0
  262. package/src/lib/interfaces/backend-objects/email-token.js.map +1 -0
  263. package/src/lib/interfaces/backend-objects/request-user.d.ts +5 -0
  264. package/src/lib/interfaces/backend-objects/request-user.d.ts.map +1 -0
  265. package/src/lib/interfaces/backend-objects/request-user.js +3 -0
  266. package/src/lib/interfaces/backend-objects/request-user.js.map +1 -0
  267. package/src/lib/interfaces/backend-objects/role.d.ts +4 -0
  268. package/src/lib/interfaces/backend-objects/role.d.ts.map +1 -0
  269. package/src/lib/interfaces/backend-objects/role.js +3 -0
  270. package/src/lib/interfaces/backend-objects/role.js.map +1 -0
  271. package/src/lib/interfaces/backend-objects/user.d.ts +5 -0
  272. package/src/lib/interfaces/backend-objects/user.d.ts.map +1 -0
  273. package/src/lib/interfaces/backend-objects/user.js +3 -0
  274. package/src/lib/interfaces/backend-objects/user.js.map +1 -0
  275. package/src/lib/interfaces/bases/mnemonic.d.ts +4 -0
  276. package/src/lib/interfaces/bases/mnemonic.d.ts.map +1 -0
  277. package/src/lib/interfaces/bases/mnemonic.js +3 -0
  278. package/src/lib/interfaces/bases/mnemonic.js.map +1 -0
  279. package/src/lib/interfaces/bases/role.d.ts +4 -0
  280. package/src/lib/interfaces/bases/role.d.ts.map +1 -0
  281. package/src/lib/interfaces/bases/role.js +3 -0
  282. package/src/lib/interfaces/bases/role.js.map +1 -0
  283. package/src/lib/interfaces/bases/user-role.d.ts +4 -0
  284. package/src/lib/interfaces/bases/user-role.d.ts.map +1 -0
  285. package/src/lib/interfaces/bases/user-role.js +3 -0
  286. package/src/lib/interfaces/bases/user-role.js.map +1 -0
  287. package/src/lib/interfaces/bases/user.d.ts +5 -0
  288. package/src/lib/interfaces/bases/user.d.ts.map +1 -0
  289. package/src/lib/interfaces/bases/user.js +3 -0
  290. package/src/lib/interfaces/bases/user.js.map +1 -0
  291. package/src/lib/interfaces/checksum-config.d.ts +5 -0
  292. package/src/lib/interfaces/checksum-config.d.ts.map +1 -0
  293. package/src/lib/interfaces/checksum-config.js +3 -0
  294. package/src/lib/interfaces/checksum-config.js.map +1 -0
  295. package/src/lib/interfaces/discriminator-collections.d.ts +5 -0
  296. package/src/lib/interfaces/discriminator-collections.d.ts.map +1 -0
  297. package/src/lib/interfaces/discriminator-collections.js +3 -0
  298. package/src/lib/interfaces/discriminator-collections.js.map +1 -0
  299. package/src/lib/interfaces/ecies-consts.d.ts +88 -0
  300. package/src/lib/interfaces/ecies-consts.d.ts.map +1 -0
  301. package/src/lib/interfaces/ecies-consts.js +3 -0
  302. package/src/lib/interfaces/ecies-consts.js.map +1 -0
  303. package/src/lib/interfaces/environment-aws.d.ts +7 -0
  304. package/src/lib/interfaces/environment-aws.d.ts.map +1 -0
  305. package/src/lib/interfaces/environment-aws.js +3 -0
  306. package/src/lib/interfaces/environment-aws.js.map +1 -0
  307. package/src/lib/interfaces/environment-mongo.d.ts +76 -0
  308. package/src/lib/interfaces/environment-mongo.d.ts.map +1 -0
  309. package/src/lib/interfaces/environment-mongo.js +3 -0
  310. package/src/lib/interfaces/environment-mongo.js.map +1 -0
  311. package/src/lib/interfaces/environment.d.ts +28 -0
  312. package/src/lib/interfaces/environment.d.ts.map +1 -0
  313. package/src/lib/interfaces/environment.js +3 -0
  314. package/src/lib/interfaces/environment.js.map +1 -0
  315. package/src/lib/interfaces/jwt-sign-response.d.ts +12 -0
  316. package/src/lib/interfaces/jwt-sign-response.d.ts.map +1 -0
  317. package/src/lib/interfaces/jwt-sign-response.js +3 -0
  318. package/src/lib/interfaces/jwt-sign-response.js.map +1 -0
  319. package/src/lib/interfaces/member/member-with-mnemonic.d.ts +6 -0
  320. package/src/lib/interfaces/member/member-with-mnemonic.d.ts.map +1 -0
  321. package/src/lib/interfaces/member/member-with-mnemonic.js +3 -0
  322. package/src/lib/interfaces/member/member-with-mnemonic.js.map +1 -0
  323. package/src/lib/interfaces/member/operational.d.ts +36 -0
  324. package/src/lib/interfaces/member/operational.d.ts.map +1 -0
  325. package/src/lib/interfaces/member/operational.js +3 -0
  326. package/src/lib/interfaces/member/operational.js.map +1 -0
  327. package/src/lib/interfaces/mongo-errors.d.ts +9 -0
  328. package/src/lib/interfaces/mongo-errors.d.ts.map +1 -0
  329. package/src/lib/interfaces/mongo-errors.js +3 -0
  330. package/src/lib/interfaces/mongo-errors.js.map +1 -0
  331. package/src/lib/interfaces/multi-encrypted-message.d.ts +8 -0
  332. package/src/lib/interfaces/multi-encrypted-message.d.ts.map +1 -0
  333. package/src/lib/interfaces/multi-encrypted-message.js +3 -0
  334. package/src/lib/interfaces/multi-encrypted-message.js.map +1 -0
  335. package/src/lib/interfaces/multi-encrypted-parsed-header.d.ts +24 -0
  336. package/src/lib/interfaces/multi-encrypted-parsed-header.d.ts.map +1 -0
  337. package/src/lib/interfaces/multi-encrypted-parsed-header.js +3 -0
  338. package/src/lib/interfaces/multi-encrypted-parsed-header.js.map +1 -0
  339. package/src/lib/interfaces/pbkdf2-result.d.ts +6 -0
  340. package/src/lib/interfaces/pbkdf2-result.d.ts.map +1 -0
  341. package/src/lib/interfaces/pbkdf2-result.js +3 -0
  342. package/src/lib/interfaces/pbkdf2-result.js.map +1 -0
  343. package/src/lib/interfaces/request-user.d.ts +51 -0
  344. package/src/lib/interfaces/request-user.d.ts.map +1 -0
  345. package/src/lib/interfaces/request-user.js +3 -0
  346. package/src/lib/interfaces/request-user.js.map +1 -0
  347. package/src/lib/interfaces/responses/api-backup-codes-response.d.ts +11 -0
  348. package/src/lib/interfaces/responses/api-backup-codes-response.d.ts.map +1 -0
  349. package/src/lib/interfaces/responses/api-backup-codes-response.js +3 -0
  350. package/src/lib/interfaces/responses/api-backup-codes-response.js.map +1 -0
  351. package/src/lib/interfaces/responses/api-challenge-response.d.ts +11 -0
  352. package/src/lib/interfaces/responses/api-challenge-response.d.ts.map +1 -0
  353. package/src/lib/interfaces/responses/api-challenge-response.js +3 -0
  354. package/src/lib/interfaces/responses/api-challenge-response.js.map +1 -0
  355. package/src/lib/interfaces/responses/api-code-count-response.d.ts +11 -0
  356. package/src/lib/interfaces/responses/api-code-count-response.d.ts.map +1 -0
  357. package/src/lib/interfaces/responses/api-code-count-response.js +3 -0
  358. package/src/lib/interfaces/responses/api-code-count-response.js.map +1 -0
  359. package/src/lib/interfaces/responses/api-login-response.d.ts +20 -0
  360. package/src/lib/interfaces/responses/api-login-response.d.ts.map +1 -0
  361. package/src/lib/interfaces/responses/api-login-response.js +3 -0
  362. package/src/lib/interfaces/responses/api-login-response.js.map +1 -0
  363. package/src/lib/interfaces/responses/api-mnemonic-response.d.ts +11 -0
  364. package/src/lib/interfaces/responses/api-mnemonic-response.d.ts.map +1 -0
  365. package/src/lib/interfaces/responses/api-mnemonic-response.js +3 -0
  366. package/src/lib/interfaces/responses/api-mnemonic-response.js.map +1 -0
  367. package/src/lib/interfaces/responses/api-registration-response.d.ts +16 -0
  368. package/src/lib/interfaces/responses/api-registration-response.d.ts.map +1 -0
  369. package/src/lib/interfaces/responses/api-registration-response.js +3 -0
  370. package/src/lib/interfaces/responses/api-registration-response.js.map +1 -0
  371. package/src/lib/interfaces/responses/api-request-user-response.d.ts +12 -0
  372. package/src/lib/interfaces/responses/api-request-user-response.d.ts.map +1 -0
  373. package/src/lib/interfaces/responses/api-request-user-response.js +3 -0
  374. package/src/lib/interfaces/responses/api-request-user-response.js.map +1 -0
  375. package/src/lib/interfaces/responses/index.d.ts +9 -0
  376. package/src/lib/interfaces/responses/index.d.ts.map +1 -0
  377. package/src/lib/interfaces/responses/index.js +11 -0
  378. package/src/lib/interfaces/responses/index.js.map +1 -0
  379. package/src/lib/interfaces/schema.d.ts +28 -0
  380. package/src/lib/interfaces/schema.d.ts.map +1 -0
  381. package/src/lib/interfaces/schema.js +3 -0
  382. package/src/lib/interfaces/schema.js.map +1 -0
  383. package/src/lib/interfaces/server-init-result.d.ts +34 -0
  384. package/src/lib/interfaces/server-init-result.d.ts.map +1 -0
  385. package/src/lib/interfaces/server-init-result.js +3 -0
  386. package/src/lib/interfaces/server-init-result.js.map +1 -0
  387. package/src/lib/interfaces/single-encrypted-parsed-header.d.ts +35 -0
  388. package/src/lib/interfaces/single-encrypted-parsed-header.d.ts.map +1 -0
  389. package/src/lib/interfaces/single-encrypted-parsed-header.js +3 -0
  390. package/src/lib/interfaces/single-encrypted-parsed-header.js.map +1 -0
  391. package/src/lib/interfaces/status-code-response.d.ts +7 -0
  392. package/src/lib/interfaces/status-code-response.d.ts.map +1 -0
  393. package/src/lib/interfaces/status-code-response.js +3 -0
  394. package/src/lib/interfaces/status-code-response.js.map +1 -0
  395. package/src/lib/interfaces/symmetric-encryption-results.d.ts +5 -0
  396. package/src/lib/interfaces/symmetric-encryption-results.d.ts.map +1 -0
  397. package/src/lib/interfaces/symmetric-encryption-results.js +3 -0
  398. package/src/lib/interfaces/symmetric-encryption-results.js.map +1 -0
  399. package/src/lib/interfaces/token-user.d.ts +9 -0
  400. package/src/lib/interfaces/token-user.d.ts.map +1 -0
  401. package/src/lib/interfaces/token-user.js +3 -0
  402. package/src/lib/interfaces/token-user.js.map +1 -0
  403. package/src/lib/interfaces/wallet-seed.d.ts +7 -0
  404. package/src/lib/interfaces/wallet-seed.d.ts.map +1 -0
  405. package/src/lib/interfaces/wallet-seed.js +3 -0
  406. package/src/lib/interfaces/wallet-seed.js.map +1 -0
  407. package/src/lib/middlewares/cleanup-crypto.d.ts +7 -0
  408. package/src/lib/middlewares/cleanup-crypto.d.ts.map +1 -0
  409. package/src/lib/middlewares/cleanup-crypto.js +32 -0
  410. package/src/lib/middlewares/cleanup-crypto.js.map +1 -0
  411. package/src/lib/middlewares/index.d.ts +3 -0
  412. package/src/lib/middlewares/index.d.ts.map +1 -0
  413. package/src/lib/middlewares/index.js +10 -0
  414. package/src/lib/middlewares/index.js.map +1 -0
  415. package/src/lib/middlewares.d.ts +19 -0
  416. package/src/lib/middlewares.d.ts.map +1 -0
  417. package/src/lib/middlewares.js +95 -0
  418. package/src/lib/middlewares.js.map +1 -0
  419. package/src/lib/models/email-token.d.ts +47 -0
  420. package/src/lib/models/email-token.d.ts.map +1 -0
  421. package/src/lib/models/email-token.js +11 -0
  422. package/src/lib/models/email-token.js.map +1 -0
  423. package/src/lib/models/mnemonic.d.ts +26 -0
  424. package/src/lib/models/mnemonic.d.ts.map +1 -0
  425. package/src/lib/models/mnemonic.js +11 -0
  426. package/src/lib/models/mnemonic.js.map +1 -0
  427. package/src/lib/models/role.d.ts +23 -0
  428. package/src/lib/models/role.d.ts.map +1 -0
  429. package/src/lib/models/role.js +8 -0
  430. package/src/lib/models/role.js.map +1 -0
  431. package/src/lib/models/used-direct-login-token.d.ts +29 -0
  432. package/src/lib/models/used-direct-login-token.d.ts.map +1 -0
  433. package/src/lib/models/used-direct-login-token.js +11 -0
  434. package/src/lib/models/used-direct-login-token.js.map +1 -0
  435. package/src/lib/models/user-role.d.ts +59 -0
  436. package/src/lib/models/user-role.d.ts.map +1 -0
  437. package/src/lib/models/user-role.js +11 -0
  438. package/src/lib/models/user-role.js.map +1 -0
  439. package/src/lib/models/user.d.ts +132 -0
  440. package/src/lib/models/user.d.ts.map +1 -0
  441. package/src/lib/models/user.js +8 -0
  442. package/src/lib/models/user.js.map +1 -0
  443. package/src/lib/routers/api.d.ts +21 -0
  444. package/src/lib/routers/api.d.ts.map +1 -0
  445. package/src/lib/routers/api.js +41 -0
  446. package/src/lib/routers/api.js.map +1 -0
  447. package/src/lib/routers/app.d.ts +22 -0
  448. package/src/lib/routers/app.d.ts.map +1 -0
  449. package/src/lib/routers/app.js +131 -0
  450. package/src/lib/routers/app.js.map +1 -0
  451. package/src/lib/routers/base.d.ts +8 -0
  452. package/src/lib/routers/base.d.ts.map +1 -0
  453. package/src/lib/routers/base.js +12 -0
  454. package/src/lib/routers/base.js.map +1 -0
  455. package/src/lib/routers/messageRouter.d.ts +4 -0
  456. package/src/lib/routers/messageRouter.d.ts.map +1 -0
  457. package/src/lib/routers/messageRouter.js +81 -0
  458. package/src/lib/routers/messageRouter.js.map +1 -0
  459. package/src/lib/schemas/email-token.d.ts +44 -0
  460. package/src/lib/schemas/email-token.d.ts.map +1 -0
  461. package/src/lib/schemas/email-token.js +29 -0
  462. package/src/lib/schemas/email-token.js.map +1 -0
  463. package/src/lib/schemas/mnemonic.d.ts +22 -0
  464. package/src/lib/schemas/mnemonic.d.ts.map +1 -0
  465. package/src/lib/schemas/mnemonic.js +21 -0
  466. package/src/lib/schemas/mnemonic.js.map +1 -0
  467. package/src/lib/schemas/role.d.ts +21 -0
  468. package/src/lib/schemas/role.d.ts.map +1 -0
  469. package/src/lib/schemas/role.js +36 -0
  470. package/src/lib/schemas/role.js.map +1 -0
  471. package/src/lib/schemas/schema.d.ts +3 -0
  472. package/src/lib/schemas/schema.d.ts.map +1 -0
  473. package/src/lib/schemas/schema.js +74 -0
  474. package/src/lib/schemas/schema.js.map +1 -0
  475. package/src/lib/schemas/used-direct-login-token.d.ts +25 -0
  476. package/src/lib/schemas/used-direct-login-token.d.ts.map +1 -0
  477. package/src/lib/schemas/used-direct-login-token.js +14 -0
  478. package/src/lib/schemas/used-direct-login-token.js.map +1 -0
  479. package/src/lib/schemas/user-role.d.ts +55 -0
  480. package/src/lib/schemas/user-role.d.ts.map +1 -0
  481. package/src/lib/schemas/user-role.js +22 -0
  482. package/src/lib/schemas/user-role.js.map +1 -0
  483. package/src/lib/schemas/user.d.ts +129 -0
  484. package/src/lib/schemas/user.d.ts.map +1 -0
  485. package/src/lib/schemas/user.js +84 -0
  486. package/src/lib/schemas/user.js.map +1 -0
  487. package/src/lib/services/diskQuorumService.d.ts +55 -0
  488. package/src/lib/services/diskQuorumService.d.ts.map +1 -0
  489. package/src/lib/services/diskQuorumService.js +247 -0
  490. package/src/lib/services/diskQuorumService.js.map +1 -0
  491. package/src/lib/services/email.d.ts +27 -0
  492. package/src/lib/services/email.d.ts.map +1 -0
  493. package/src/lib/services/email.js +81 -0
  494. package/src/lib/services/email.js.map +1 -0
  495. package/src/lib/services/eventNotificationSystem.d.ts +46 -0
  496. package/src/lib/services/eventNotificationSystem.d.ts.map +1 -0
  497. package/src/lib/services/eventNotificationSystem.js +83 -0
  498. package/src/lib/services/eventNotificationSystem.js.map +1 -0
  499. package/src/lib/services/fec.d.ts +87 -0
  500. package/src/lib/services/fec.d.ts.map +1 -0
  501. package/src/lib/services/fec.js +256 -0
  502. package/src/lib/services/fec.js.map +1 -0
  503. package/src/lib/services/fecServiceFactory.d.ts +89 -0
  504. package/src/lib/services/fecServiceFactory.d.ts.map +1 -0
  505. package/src/lib/services/fecServiceFactory.js +154 -0
  506. package/src/lib/services/fecServiceFactory.js.map +1 -0
  507. package/src/lib/services/fecUsageExample.d.ts +33 -0
  508. package/src/lib/services/fecUsageExample.d.ts.map +1 -0
  509. package/src/lib/services/fecUsageExample.js +79 -0
  510. package/src/lib/services/fecUsageExample.js.map +1 -0
  511. package/src/lib/services/keyWrapping.d.ts +61 -0
  512. package/src/lib/services/keyWrapping.d.ts.map +1 -0
  513. package/src/lib/services/keyWrapping.js +297 -0
  514. package/src/lib/services/keyWrapping.js.map +1 -0
  515. package/src/lib/services/messageEventsWebSocketHandler.d.ts +15 -0
  516. package/src/lib/services/messageEventsWebSocketHandler.d.ts.map +1 -0
  517. package/src/lib/services/messageEventsWebSocketHandler.js +59 -0
  518. package/src/lib/services/messageEventsWebSocketHandler.js.map +1 -0
  519. package/src/lib/services/messagePassingService.d.ts +31 -0
  520. package/src/lib/services/messagePassingService.d.ts.map +1 -0
  521. package/src/lib/services/messagePassingService.js +88 -0
  522. package/src/lib/services/messagePassingService.js.map +1 -0
  523. package/src/lib/services/nativeRsFecService.d.ts +79 -0
  524. package/src/lib/services/nativeRsFecService.d.ts.map +1 -0
  525. package/src/lib/services/nativeRsFecService.js +295 -0
  526. package/src/lib/services/nativeRsFecService.js.map +1 -0
  527. package/src/lib/services/pbkdf2.d.ts +6 -0
  528. package/src/lib/services/pbkdf2.d.ts.map +1 -0
  529. package/src/lib/services/pbkdf2.js +31 -0
  530. package/src/lib/services/pbkdf2.js.map +1 -0
  531. package/src/lib/services/user.d.ts +10 -0
  532. package/src/lib/services/user.d.ts.map +1 -0
  533. package/src/lib/services/user.js +11 -0
  534. package/src/lib/services/user.js.map +1 -0
  535. package/src/lib/services/webSocketMessageServer.d.ts +53 -0
  536. package/src/lib/services/webSocketMessageServer.d.ts.map +1 -0
  537. package/src/lib/services/webSocketMessageServer.js +159 -0
  538. package/src/lib/services/webSocketMessageServer.js.map +1 -0
  539. package/src/lib/shared-types.d.ts +82 -0
  540. package/src/lib/shared-types.d.ts.map +1 -0
  541. package/src/lib/shared-types.js +6 -0
  542. package/src/lib/shared-types.js.map +1 -0
  543. package/src/lib/stores/availabilityAwareBlockStore.d.ts +287 -0
  544. package/src/lib/stores/availabilityAwareBlockStore.d.ts.map +1 -0
  545. package/src/lib/stores/availabilityAwareBlockStore.js +458 -0
  546. package/src/lib/stores/availabilityAwareBlockStore.js.map +1 -0
  547. package/src/lib/stores/diskBlockAsyncStore.d.ts +212 -0
  548. package/src/lib/stores/diskBlockAsyncStore.d.ts.map +1 -0
  549. package/src/lib/stores/diskBlockAsyncStore.js +803 -0
  550. package/src/lib/stores/diskBlockAsyncStore.js.map +1 -0
  551. package/src/lib/stores/diskBlockMetadataStore.d.ts +125 -0
  552. package/src/lib/stores/diskBlockMetadataStore.d.ts.map +1 -0
  553. package/src/lib/stores/diskBlockMetadataStore.js +347 -0
  554. package/src/lib/stores/diskBlockMetadataStore.js.map +1 -0
  555. package/src/lib/stores/diskBlockStore.d.ts +41 -0
  556. package/src/lib/stores/diskBlockStore.d.ts.map +1 -0
  557. package/src/lib/stores/diskBlockStore.js +87 -0
  558. package/src/lib/stores/diskBlockStore.js.map +1 -0
  559. package/src/lib/stores/diskBlockSyncStore.d.ts +12 -0
  560. package/src/lib/stores/diskBlockSyncStore.d.ts.map +1 -0
  561. package/src/lib/stores/diskBlockSyncStore.js +55 -0
  562. package/src/lib/stores/diskBlockSyncStore.js.map +1 -0
  563. package/src/lib/stores/diskCblStore.d.ts +30 -0
  564. package/src/lib/stores/diskCblStore.d.ts.map +1 -0
  565. package/src/lib/stores/diskCblStore.js +139 -0
  566. package/src/lib/stores/diskCblStore.js.map +1 -0
  567. package/src/lib/stores/diskMessageMetadataStore.d.ts +17 -0
  568. package/src/lib/stores/diskMessageMetadataStore.d.ts.map +1 -0
  569. package/src/lib/stores/diskMessageMetadataStore.js +214 -0
  570. package/src/lib/stores/diskMessageMetadataStore.js.map +1 -0
  571. package/src/lib/transforms/checksumTransform.d.ts +8 -0
  572. package/src/lib/transforms/checksumTransform.d.ts.map +1 -0
  573. package/src/lib/transforms/checksumTransform.js +22 -0
  574. package/src/lib/transforms/checksumTransform.js.map +1 -0
  575. package/src/lib/transforms/memoryWritableStream.d.ts +8 -0
  576. package/src/lib/transforms/memoryWritableStream.d.ts.map +1 -0
  577. package/src/lib/transforms/memoryWritableStream.js +20 -0
  578. package/src/lib/transforms/memoryWritableStream.js.map +1 -0
  579. package/src/lib/transforms/xorMultipleTransform.d.ts +12 -0
  580. package/src/lib/transforms/xorMultipleTransform.d.ts.map +1 -0
  581. package/src/lib/transforms/xorMultipleTransform.js +52 -0
  582. package/src/lib/transforms/xorMultipleTransform.js.map +1 -0
  583. package/src/lib/utils/type-converters.d.ts +10 -0
  584. package/src/lib/utils/type-converters.d.ts.map +1 -0
  585. package/src/lib/utils/type-converters.js +42 -0
  586. package/src/lib/utils/type-converters.js.map +1 -0
@@ -0,0 +1,271 @@
1
+ "use strict";
2
+ /**
3
+ * @fileoverview Gossip Service Implementation
4
+ *
5
+ * Implements gossip-based block announcements across the network.
6
+ * Supports announcement batching, TTL decrement on forwarding,
7
+ * and fanout to random peers.
8
+ *
9
+ * @see Requirements 6.1, 6.2, 6.3, 6.4, 6.5, 6.6
10
+ */
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.GossipService = exports.DEFAULT_GOSSIP_CONFIG = void 0;
13
+ // Re-export DEFAULT_GOSSIP_CONFIG from brightchain-lib for convenience
14
+ var brightchain_lib_1 = require("@brightchain/brightchain-lib");
15
+ Object.defineProperty(exports, "DEFAULT_GOSSIP_CONFIG", { enumerable: true, get: function () { return brightchain_lib_1.DEFAULT_GOSSIP_CONFIG; } });
16
+ /**
17
+ * Default gossip configuration values (local copy for use in this module).
18
+ */
19
+ const defaultGossipConfig = {
20
+ fanout: 3,
21
+ defaultTtl: 3,
22
+ batchIntervalMs: 1000,
23
+ maxBatchSize: 100,
24
+ };
25
+ /**
26
+ * Gossip Service Implementation
27
+ *
28
+ * Handles gossip-based block announcements across the network.
29
+ * Implements batching, TTL management, and random peer selection.
30
+ *
31
+ * @see Requirements 6.1, 6.2, 6.3, 6.4, 6.5, 6.6
32
+ */
33
+ class GossipService {
34
+ /**
35
+ * Create a new GossipService.
36
+ *
37
+ * @param peerProvider - Provider for peer management operations
38
+ * @param config - Gossip configuration (uses defaults if not provided)
39
+ */
40
+ constructor(peerProvider, config = defaultGossipConfig) {
41
+ this.peerProvider = peerProvider;
42
+ this.config = config;
43
+ /**
44
+ * Pending announcements waiting to be batched and sent.
45
+ */
46
+ this.pendingAnnouncements = [];
47
+ /**
48
+ * Registered announcement handlers.
49
+ */
50
+ this.handlers = new Set();
51
+ /**
52
+ * Batch timer handle.
53
+ */
54
+ this.batchTimer = null;
55
+ /**
56
+ * Whether the service is running.
57
+ */
58
+ this.running = false;
59
+ }
60
+ /**
61
+ * Announce a new block to the network.
62
+ *
63
+ * @param blockId - The block ID to announce
64
+ * @see Requirements 6.1
65
+ */
66
+ async announceBlock(blockId) {
67
+ const announcement = {
68
+ type: 'add',
69
+ blockId,
70
+ nodeId: this.peerProvider.getLocalNodeId(),
71
+ timestamp: new Date(),
72
+ ttl: this.config.defaultTtl,
73
+ };
74
+ this.queueAnnouncement(announcement);
75
+ }
76
+ /**
77
+ * Announce block removal to the network.
78
+ *
79
+ * @param blockId - The block ID being removed
80
+ * @see Requirements 6.5
81
+ */
82
+ async announceRemoval(blockId) {
83
+ const announcement = {
84
+ type: 'remove',
85
+ blockId,
86
+ nodeId: this.peerProvider.getLocalNodeId(),
87
+ timestamp: new Date(),
88
+ ttl: this.config.defaultTtl,
89
+ };
90
+ this.queueAnnouncement(announcement);
91
+ }
92
+ /**
93
+ * Handle an incoming block announcement from a peer.
94
+ * Notifies handlers and optionally forwards with decremented TTL.
95
+ *
96
+ * @param announcement - The received announcement
97
+ * @see Requirements 6.2, 6.4
98
+ */
99
+ async handleAnnouncement(announcement) {
100
+ // Notify all registered handlers
101
+ for (const handler of this.handlers) {
102
+ try {
103
+ handler(announcement);
104
+ }
105
+ catch {
106
+ // Ignore handler errors to prevent one handler from affecting others
107
+ }
108
+ }
109
+ // Forward with decremented TTL if TTL > 0
110
+ if (announcement.ttl > 0) {
111
+ const forwardedAnnouncement = {
112
+ ...announcement,
113
+ ttl: announcement.ttl - 1,
114
+ };
115
+ this.queueAnnouncement(forwardedAnnouncement);
116
+ }
117
+ }
118
+ /**
119
+ * Subscribe to announcement events.
120
+ *
121
+ * @param handler - Function to call when an announcement is received
122
+ * @see Requirements 6.2
123
+ */
124
+ onAnnouncement(handler) {
125
+ this.handlers.add(handler);
126
+ }
127
+ /**
128
+ * Remove an announcement handler.
129
+ *
130
+ * @param handler - The handler to remove
131
+ */
132
+ offAnnouncement(handler) {
133
+ this.handlers.delete(handler);
134
+ }
135
+ /**
136
+ * Get pending announcements that have not yet been sent.
137
+ *
138
+ * @returns Array of pending announcements
139
+ * @see Requirements 6.6
140
+ */
141
+ getPendingAnnouncements() {
142
+ return [...this.pendingAnnouncements];
143
+ }
144
+ /**
145
+ * Immediately flush all pending announcements.
146
+ *
147
+ * @see Requirements 6.6
148
+ */
149
+ async flushAnnouncements() {
150
+ if (this.pendingAnnouncements.length === 0) {
151
+ return;
152
+ }
153
+ // Get connected peers
154
+ const connectedPeers = this.peerProvider.getConnectedPeerIds();
155
+ if (connectedPeers.length === 0) {
156
+ // No peers to send to, clear pending
157
+ this.pendingAnnouncements = [];
158
+ return;
159
+ }
160
+ // Select random peers for fanout
161
+ const selectedPeers = this.selectRandomPeers(connectedPeers, this.config.fanout);
162
+ // Split announcements into batches
163
+ const batches = this.splitIntoBatches(this.pendingAnnouncements, this.config.maxBatchSize);
164
+ // Clear pending before sending to avoid duplicates on retry
165
+ this.pendingAnnouncements = [];
166
+ // Send batches to selected peers
167
+ const sendPromises = [];
168
+ for (const peerId of selectedPeers) {
169
+ for (const batch of batches) {
170
+ sendPromises.push(this.peerProvider.sendAnnouncementBatch(peerId, batch).catch(() => {
171
+ // Ignore send errors - best effort delivery
172
+ }));
173
+ }
174
+ }
175
+ await Promise.all(sendPromises);
176
+ }
177
+ /**
178
+ * Start the gossip service.
179
+ */
180
+ start() {
181
+ if (this.running) {
182
+ return;
183
+ }
184
+ this.running = true;
185
+ this.batchTimer = setInterval(() => {
186
+ this.flushAnnouncements().catch(() => {
187
+ // Ignore flush errors
188
+ });
189
+ }, this.config.batchIntervalMs);
190
+ }
191
+ /**
192
+ * Stop the gossip service.
193
+ */
194
+ async stop() {
195
+ if (!this.running) {
196
+ return;
197
+ }
198
+ this.running = false;
199
+ if (this.batchTimer) {
200
+ clearInterval(this.batchTimer);
201
+ this.batchTimer = null;
202
+ }
203
+ // Flush any remaining announcements
204
+ await this.flushAnnouncements();
205
+ }
206
+ /**
207
+ * Get the current configuration.
208
+ *
209
+ * @returns The gossip configuration
210
+ */
211
+ getConfig() {
212
+ return { ...this.config };
213
+ }
214
+ /**
215
+ * Queue an announcement for batching.
216
+ *
217
+ * @param announcement - The announcement to queue
218
+ */
219
+ queueAnnouncement(announcement) {
220
+ this.pendingAnnouncements.push(announcement);
221
+ // If we've reached max batch size, flush immediately
222
+ if (this.pendingAnnouncements.length >= this.config.maxBatchSize) {
223
+ this.flushAnnouncements().catch(() => {
224
+ // Ignore flush errors
225
+ });
226
+ }
227
+ }
228
+ /**
229
+ * Select random peers from the available peers.
230
+ *
231
+ * @param peers - Available peer IDs
232
+ * @param count - Number of peers to select
233
+ * @returns Selected peer IDs
234
+ * @see Requirements 6.3
235
+ */
236
+ selectRandomPeers(peers, count) {
237
+ if (peers.length <= count) {
238
+ return [...peers];
239
+ }
240
+ // Fisher-Yates shuffle and take first `count` elements
241
+ const shuffled = [...peers];
242
+ for (let i = shuffled.length - 1; i > 0; i--) {
243
+ const j = Math.floor(Math.random() * (i + 1));
244
+ [shuffled[i], shuffled[j]] = [shuffled[j], shuffled[i]];
245
+ }
246
+ return shuffled.slice(0, count);
247
+ }
248
+ /**
249
+ * Split announcements into batches of maximum size.
250
+ *
251
+ * @param announcements - Announcements to split
252
+ * @param maxSize - Maximum batch size
253
+ * @returns Array of batches
254
+ * @see Requirements 6.6
255
+ */
256
+ splitIntoBatches(announcements, maxSize) {
257
+ const batches = [];
258
+ for (let i = 0; i < announcements.length; i += maxSize) {
259
+ batches.push(announcements.slice(i, i + maxSize));
260
+ }
261
+ return batches;
262
+ }
263
+ /**
264
+ * Clear all pending announcements (for testing).
265
+ */
266
+ clearPending() {
267
+ this.pendingAnnouncements = [];
268
+ }
269
+ }
270
+ exports.GossipService = GossipService;
271
+ //# sourceMappingURL=gossipService.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gossipService.js","sourceRoot":"","sources":["../../../../../brightchain-api-lib/src/lib/availability/gossipService.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,204 @@
1
+ /**
2
+ * @fileoverview Heartbeat Monitor Implementation
3
+ *
4
+ * Implements peer connectivity monitoring through periodic heartbeat messages.
5
+ * Detects network partitions when all peers become unreachable and
6
+ * triggers reconnection events when peers become available again.
7
+ *
8
+ * @see Requirements 7.1, 7.2, 7.5, 7.6
9
+ */
10
+ import { ConnectivityEventHandler, HeartbeatConfig, IHeartbeatMonitor } from '@brightchain/brightchain-lib';
11
+ export { DEFAULT_HEARTBEAT_CONFIG } from '@brightchain/brightchain-lib';
12
+ /**
13
+ * Interface for heartbeat transport operations.
14
+ * Abstracts the underlying transport mechanism (WebSocket, etc.).
15
+ */
16
+ export interface IHeartbeatTransport {
17
+ /**
18
+ * Send a ping to a peer.
19
+ *
20
+ * @param peerId - The peer to ping
21
+ * @returns Promise that resolves with latency in ms, or rejects on timeout/error
22
+ */
23
+ sendPing(peerId: string): Promise<number>;
24
+ }
25
+ /**
26
+ * Heartbeat Monitor Implementation
27
+ *
28
+ * Monitors peer connectivity using periodic heartbeat messages.
29
+ * Detects network partitions when all peers become unreachable and
30
+ * triggers reconnection events when peers become available again.
31
+ *
32
+ * @see Requirements 7.1, 7.2, 7.5, 7.6
33
+ */
34
+ export declare class HeartbeatMonitor implements IHeartbeatMonitor {
35
+ private readonly transport;
36
+ private readonly config;
37
+ /**
38
+ * Map of peer ID to heartbeat state.
39
+ */
40
+ private peerStates;
41
+ /**
42
+ * Registered connectivity event handlers.
43
+ */
44
+ private handlers;
45
+ /**
46
+ * Heartbeat interval timer handle.
47
+ */
48
+ private heartbeatTimer;
49
+ /**
50
+ * Whether the monitor is currently running.
51
+ */
52
+ private running;
53
+ /**
54
+ * Whether we are currently in a partition state (all peers unreachable).
55
+ */
56
+ private inPartition;
57
+ /**
58
+ * Create a new HeartbeatMonitor.
59
+ *
60
+ * @param transport - Transport for sending heartbeat pings
61
+ * @param config - Heartbeat configuration (uses defaults if not provided)
62
+ */
63
+ constructor(transport: IHeartbeatTransport, config?: HeartbeatConfig);
64
+ /**
65
+ * Start the heartbeat monitor.
66
+ * Begins sending periodic heartbeat pings to all known peers.
67
+ *
68
+ * @see Requirements 7.1
69
+ */
70
+ start(): void;
71
+ /**
72
+ * Stop the heartbeat monitor.
73
+ * Stops sending heartbeats and clears all tracking state.
74
+ */
75
+ stop(): void;
76
+ /**
77
+ * Check if the monitor is currently running.
78
+ *
79
+ * @returns True if the monitor is active
80
+ */
81
+ isRunning(): boolean;
82
+ /**
83
+ * Check if a specific peer is currently reachable.
84
+ *
85
+ * @param peerId - The peer ID to check
86
+ * @returns True if the peer is reachable (responding to heartbeats)
87
+ * @see Requirements 7.5
88
+ */
89
+ isPeerReachable(peerId: string): boolean;
90
+ /**
91
+ * Get all peers that are currently reachable.
92
+ *
93
+ * @returns Array of peer IDs that are responding to heartbeats
94
+ * @see Requirements 7.5
95
+ */
96
+ getReachablePeers(): string[];
97
+ /**
98
+ * Get all peers that are currently unreachable.
99
+ *
100
+ * @returns Array of peer IDs that have exceeded the missed threshold
101
+ * @see Requirements 7.5
102
+ */
103
+ getUnreachablePeers(): string[];
104
+ /**
105
+ * Get the number of consecutive missed heartbeats for a peer.
106
+ *
107
+ * @param peerId - The peer ID to check
108
+ * @returns Number of missed heartbeats, or 0 if peer is unknown
109
+ */
110
+ getMissedCount(peerId: string): number;
111
+ /**
112
+ * Add a peer to be monitored.
113
+ *
114
+ * @param peerId - The peer ID to start monitoring
115
+ */
116
+ addPeer(peerId: string): void;
117
+ /**
118
+ * Remove a peer from monitoring.
119
+ *
120
+ * @param peerId - The peer ID to stop monitoring
121
+ */
122
+ removePeer(peerId: string): void;
123
+ /**
124
+ * Get all peers being monitored.
125
+ *
126
+ * @returns Array of all peer IDs being monitored
127
+ */
128
+ getMonitoredPeers(): string[];
129
+ /**
130
+ * Subscribe to connectivity change events.
131
+ *
132
+ * @param handler - Function to call when connectivity changes
133
+ * @see Requirements 7.2, 7.5, 7.7
134
+ */
135
+ onConnectivityChange(handler: ConnectivityEventHandler): void;
136
+ /**
137
+ * Remove a connectivity change handler.
138
+ *
139
+ * @param handler - The handler to remove
140
+ */
141
+ offConnectivityChange(handler: ConnectivityEventHandler): void;
142
+ /**
143
+ * Record a successful heartbeat response from a peer.
144
+ * Called when a pong is received in response to a ping.
145
+ *
146
+ * @param peerId - The peer that responded
147
+ * @param latencyMs - Round-trip latency in milliseconds
148
+ */
149
+ recordHeartbeatResponse(peerId: string, latencyMs: number): void;
150
+ /**
151
+ * Get the last recorded latency for a peer.
152
+ *
153
+ * @param peerId - The peer ID to check
154
+ * @returns Last recorded latency in milliseconds, or undefined if unknown
155
+ */
156
+ getLastLatency(peerId: string): number | undefined;
157
+ /**
158
+ * Get the current configuration.
159
+ *
160
+ * @returns The heartbeat configuration
161
+ */
162
+ getConfig(): HeartbeatConfig;
163
+ /**
164
+ * Send heartbeats to all monitored peers.
165
+ * @private
166
+ */
167
+ private sendHeartbeats;
168
+ /**
169
+ * Send a heartbeat to a specific peer and handle the response.
170
+ * @private
171
+ */
172
+ private sendHeartbeatToPeer;
173
+ /**
174
+ * Record a missed heartbeat for a peer.
175
+ * @private
176
+ */
177
+ private recordMissedHeartbeat;
178
+ /**
179
+ * Check if we should enter partition mode (all peers unreachable).
180
+ * @private
181
+ */
182
+ private checkPartitionEntry;
183
+ /**
184
+ * Check if we should exit partition mode (at least one peer reachable).
185
+ * @private
186
+ */
187
+ private checkPartitionExit;
188
+ /**
189
+ * Emit a connectivity event to all handlers.
190
+ * @private
191
+ */
192
+ private emitEvent;
193
+ /**
194
+ * Check if currently in partition mode.
195
+ *
196
+ * @returns True if all peers are unreachable
197
+ */
198
+ isInPartition(): boolean;
199
+ /**
200
+ * Clear all peer states (for testing).
201
+ */
202
+ clearPeers(): void;
203
+ }
204
+ //# sourceMappingURL=heartbeatMonitor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"heartbeatMonitor.d.ts","sourceRoot":"","sources":["../../../../../brightchain-api-lib/src/lib/availability/heartbeatMonitor.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAEL,wBAAwB,EACxB,eAAe,EACf,iBAAiB,EAClB,MAAM,8BAA8B,CAAC;AAGtC,OAAO,EAAE,wBAAwB,EAAE,MAAM,8BAA8B,CAAC;AAWxE;;;GAGG;AACH,MAAM,WAAW,mBAAmB;IAClC;;;;;OAKG;IACH,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;CAC3C;AA2BD;;;;;;;;GAQG;AACH,qBAAa,gBAAiB,YAAW,iBAAiB;IAiCtD,OAAO,CAAC,QAAQ,CAAC,SAAS;IAC1B,OAAO,CAAC,QAAQ,CAAC,MAAM;IAjCzB;;OAEG;IACH,OAAO,CAAC,UAAU,CAA8C;IAEhE;;OAEG;IACH,OAAO,CAAC,QAAQ,CAA4C;IAE5D;;OAEG;IACH,OAAO,CAAC,cAAc,CAA+C;IAErE;;OAEG;IACH,OAAO,CAAC,OAAO,CAAS;IAExB;;OAEG;IACH,OAAO,CAAC,WAAW,CAAS;IAE5B;;;;;OAKG;gBAEgB,SAAS,EAAE,mBAAmB,EAC9B,MAAM,GAAE,eAAwC;IAGnE;;;;;OAKG;IACH,KAAK,IAAI,IAAI;IAkBb;;;OAGG;IACH,IAAI,IAAI,IAAI;IAaZ;;;;OAIG;IACH,SAAS,IAAI,OAAO;IAIpB;;;;;;OAMG;IACH,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO;IAKxC;;;;;OAKG;IACH,iBAAiB,IAAI,MAAM,EAAE;IAU7B;;;;;OAKG;IACH,mBAAmB,IAAI,MAAM,EAAE;IAU/B;;;;;OAKG;IACH,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM;IAItC;;;;OAIG;IACH,OAAO,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAS7B;;;;OAIG;IACH,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAIhC;;;;OAIG;IACH,iBAAiB,IAAI,MAAM,EAAE;IAI7B;;;;;OAKG;IACH,oBAAoB,CAAC,OAAO,EAAE,wBAAwB,GAAG,IAAI;IAI7D;;;;OAIG;IACH,qBAAqB,CAAC,OAAO,EAAE,wBAAwB,GAAG,IAAI;IAI9D;;;;;;OAMG;IACH,uBAAuB,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI;IA8BhE;;;;;OAKG;IACH,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAIlD;;;;OAIG;IACH,SAAS,IAAI,eAAe;IAI5B;;;OAGG;YACW,cAAc;IAa5B;;;OAGG;YACW,mBAAmB;IAUjC;;;OAGG;IACH,OAAO,CAAC,qBAAqB;IA2B7B;;;OAGG;IACH,OAAO,CAAC,mBAAmB;IAsB3B;;;OAGG;IACH,OAAO,CAAC,kBAAkB;IAiB1B;;;OAGG;IACH,OAAO,CAAC,SAAS;IAUjB;;;;OAIG;IACH,aAAa,IAAI,OAAO;IAIxB;;OAEG;IACH,UAAU,IAAI,IAAI;CAInB"}