@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,375 @@
1
+ "use strict";
2
+ /**
3
+ * @fileoverview Heartbeat Monitor Implementation
4
+ *
5
+ * Implements peer connectivity monitoring through periodic heartbeat messages.
6
+ * Detects network partitions when all peers become unreachable and
7
+ * triggers reconnection events when peers become available again.
8
+ *
9
+ * @see Requirements 7.1, 7.2, 7.5, 7.6
10
+ */
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.HeartbeatMonitor = exports.DEFAULT_HEARTBEAT_CONFIG = void 0;
13
+ // Re-export DEFAULT_HEARTBEAT_CONFIG from brightchain-lib for convenience
14
+ var brightchain_lib_1 = require("@brightchain/brightchain-lib");
15
+ Object.defineProperty(exports, "DEFAULT_HEARTBEAT_CONFIG", { enumerable: true, get: function () { return brightchain_lib_1.DEFAULT_HEARTBEAT_CONFIG; } });
16
+ /**
17
+ * Default heartbeat configuration values (local copy for use in this module).
18
+ */
19
+ const defaultHeartbeatConfig = {
20
+ intervalMs: 5000,
21
+ timeoutMs: 2000,
22
+ missedThreshold: 3,
23
+ };
24
+ /**
25
+ * Heartbeat Monitor Implementation
26
+ *
27
+ * Monitors peer connectivity using periodic heartbeat messages.
28
+ * Detects network partitions when all peers become unreachable and
29
+ * triggers reconnection events when peers become available again.
30
+ *
31
+ * @see Requirements 7.1, 7.2, 7.5, 7.6
32
+ */
33
+ class HeartbeatMonitor {
34
+ /**
35
+ * Create a new HeartbeatMonitor.
36
+ *
37
+ * @param transport - Transport for sending heartbeat pings
38
+ * @param config - Heartbeat configuration (uses defaults if not provided)
39
+ */
40
+ constructor(transport, config = defaultHeartbeatConfig) {
41
+ this.transport = transport;
42
+ this.config = config;
43
+ /**
44
+ * Map of peer ID to heartbeat state.
45
+ */
46
+ this.peerStates = new Map();
47
+ /**
48
+ * Registered connectivity event handlers.
49
+ */
50
+ this.handlers = new Set();
51
+ /**
52
+ * Heartbeat interval timer handle.
53
+ */
54
+ this.heartbeatTimer = null;
55
+ /**
56
+ * Whether the monitor is currently running.
57
+ */
58
+ this.running = false;
59
+ /**
60
+ * Whether we are currently in a partition state (all peers unreachable).
61
+ */
62
+ this.inPartition = false;
63
+ }
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() {
71
+ if (this.running) {
72
+ return;
73
+ }
74
+ this.running = true;
75
+ this.heartbeatTimer = setInterval(() => {
76
+ this.sendHeartbeats().catch(() => {
77
+ // Ignore heartbeat errors - they're handled per-peer
78
+ });
79
+ }, this.config.intervalMs);
80
+ // Send initial heartbeats immediately
81
+ this.sendHeartbeats().catch(() => {
82
+ // Ignore initial heartbeat errors
83
+ });
84
+ }
85
+ /**
86
+ * Stop the heartbeat monitor.
87
+ * Stops sending heartbeats and clears all tracking state.
88
+ */
89
+ stop() {
90
+ if (!this.running) {
91
+ return;
92
+ }
93
+ this.running = false;
94
+ if (this.heartbeatTimer) {
95
+ clearInterval(this.heartbeatTimer);
96
+ this.heartbeatTimer = null;
97
+ }
98
+ }
99
+ /**
100
+ * Check if the monitor is currently running.
101
+ *
102
+ * @returns True if the monitor is active
103
+ */
104
+ isRunning() {
105
+ return this.running;
106
+ }
107
+ /**
108
+ * Check if a specific peer is currently reachable.
109
+ *
110
+ * @param peerId - The peer ID to check
111
+ * @returns True if the peer is reachable (responding to heartbeats)
112
+ * @see Requirements 7.5
113
+ */
114
+ isPeerReachable(peerId) {
115
+ const state = this.peerStates.get(peerId);
116
+ return state?.reachable ?? false;
117
+ }
118
+ /**
119
+ * Get all peers that are currently reachable.
120
+ *
121
+ * @returns Array of peer IDs that are responding to heartbeats
122
+ * @see Requirements 7.5
123
+ */
124
+ getReachablePeers() {
125
+ const reachable = [];
126
+ for (const [peerId, state] of this.peerStates) {
127
+ if (state.reachable) {
128
+ reachable.push(peerId);
129
+ }
130
+ }
131
+ return reachable;
132
+ }
133
+ /**
134
+ * Get all peers that are currently unreachable.
135
+ *
136
+ * @returns Array of peer IDs that have exceeded the missed threshold
137
+ * @see Requirements 7.5
138
+ */
139
+ getUnreachablePeers() {
140
+ const unreachable = [];
141
+ for (const [peerId, state] of this.peerStates) {
142
+ if (!state.reachable) {
143
+ unreachable.push(peerId);
144
+ }
145
+ }
146
+ return unreachable;
147
+ }
148
+ /**
149
+ * Get the number of consecutive missed heartbeats for a peer.
150
+ *
151
+ * @param peerId - The peer ID to check
152
+ * @returns Number of missed heartbeats, or 0 if peer is unknown
153
+ */
154
+ getMissedCount(peerId) {
155
+ return this.peerStates.get(peerId)?.missedCount ?? 0;
156
+ }
157
+ /**
158
+ * Add a peer to be monitored.
159
+ *
160
+ * @param peerId - The peer ID to start monitoring
161
+ */
162
+ addPeer(peerId) {
163
+ if (!this.peerStates.has(peerId)) {
164
+ this.peerStates.set(peerId, {
165
+ missedCount: 0,
166
+ reachable: true, // Assume reachable until proven otherwise
167
+ });
168
+ }
169
+ }
170
+ /**
171
+ * Remove a peer from monitoring.
172
+ *
173
+ * @param peerId - The peer ID to stop monitoring
174
+ */
175
+ removePeer(peerId) {
176
+ this.peerStates.delete(peerId);
177
+ }
178
+ /**
179
+ * Get all peers being monitored.
180
+ *
181
+ * @returns Array of all peer IDs being monitored
182
+ */
183
+ getMonitoredPeers() {
184
+ return Array.from(this.peerStates.keys());
185
+ }
186
+ /**
187
+ * Subscribe to connectivity change events.
188
+ *
189
+ * @param handler - Function to call when connectivity changes
190
+ * @see Requirements 7.2, 7.5, 7.7
191
+ */
192
+ onConnectivityChange(handler) {
193
+ this.handlers.add(handler);
194
+ }
195
+ /**
196
+ * Remove a connectivity change handler.
197
+ *
198
+ * @param handler - The handler to remove
199
+ */
200
+ offConnectivityChange(handler) {
201
+ this.handlers.delete(handler);
202
+ }
203
+ /**
204
+ * Record a successful heartbeat response from a peer.
205
+ * Called when a pong is received in response to a ping.
206
+ *
207
+ * @param peerId - The peer that responded
208
+ * @param latencyMs - Round-trip latency in milliseconds
209
+ */
210
+ recordHeartbeatResponse(peerId, latencyMs) {
211
+ let state = this.peerStates.get(peerId);
212
+ if (!state) {
213
+ state = {
214
+ missedCount: 0,
215
+ reachable: true,
216
+ };
217
+ this.peerStates.set(peerId, state);
218
+ }
219
+ const wasUnreachable = !state.reachable;
220
+ state.missedCount = 0;
221
+ state.reachable = true;
222
+ state.lastLatencyMs = latencyMs;
223
+ state.lastSuccessAt = new Date();
224
+ // Emit peer_connected if peer was previously unreachable
225
+ if (wasUnreachable) {
226
+ this.emitEvent({
227
+ type: 'peer_connected',
228
+ peerId,
229
+ timestamp: new Date(),
230
+ });
231
+ // Check if we're exiting partition mode
232
+ this.checkPartitionExit();
233
+ }
234
+ }
235
+ /**
236
+ * Get the last recorded latency for a peer.
237
+ *
238
+ * @param peerId - The peer ID to check
239
+ * @returns Last recorded latency in milliseconds, or undefined if unknown
240
+ */
241
+ getLastLatency(peerId) {
242
+ return this.peerStates.get(peerId)?.lastLatencyMs;
243
+ }
244
+ /**
245
+ * Get the current configuration.
246
+ *
247
+ * @returns The heartbeat configuration
248
+ */
249
+ getConfig() {
250
+ return { ...this.config };
251
+ }
252
+ /**
253
+ * Send heartbeats to all monitored peers.
254
+ * @private
255
+ */
256
+ async sendHeartbeats() {
257
+ const peers = this.getMonitoredPeers();
258
+ if (peers.length === 0) {
259
+ return;
260
+ }
261
+ const heartbeatPromises = peers.map((peerId) => this.sendHeartbeatToPeer(peerId));
262
+ await Promise.all(heartbeatPromises);
263
+ }
264
+ /**
265
+ * Send a heartbeat to a specific peer and handle the response.
266
+ * @private
267
+ */
268
+ async sendHeartbeatToPeer(peerId) {
269
+ try {
270
+ const latencyMs = await this.transport.sendPing(peerId);
271
+ this.recordHeartbeatResponse(peerId, latencyMs);
272
+ }
273
+ catch {
274
+ // Heartbeat failed - record missed
275
+ this.recordMissedHeartbeat(peerId);
276
+ }
277
+ }
278
+ /**
279
+ * Record a missed heartbeat for a peer.
280
+ * @private
281
+ */
282
+ recordMissedHeartbeat(peerId) {
283
+ let state = this.peerStates.get(peerId);
284
+ if (!state) {
285
+ state = {
286
+ missedCount: 0,
287
+ reachable: true,
288
+ };
289
+ this.peerStates.set(peerId, state);
290
+ }
291
+ state.missedCount++;
292
+ // Check if peer has exceeded missed threshold
293
+ if (state.reachable && state.missedCount >= this.config.missedThreshold) {
294
+ state.reachable = false;
295
+ this.emitEvent({
296
+ type: 'peer_disconnected',
297
+ peerId,
298
+ timestamp: new Date(),
299
+ });
300
+ // Check if all peers are now unreachable (partition)
301
+ this.checkPartitionEntry();
302
+ }
303
+ }
304
+ /**
305
+ * Check if we should enter partition mode (all peers unreachable).
306
+ * @private
307
+ */
308
+ checkPartitionEntry() {
309
+ if (this.inPartition) {
310
+ return; // Already in partition
311
+ }
312
+ const monitoredPeers = this.getMonitoredPeers();
313
+ if (monitoredPeers.length === 0) {
314
+ return; // No peers to monitor
315
+ }
316
+ const reachablePeers = this.getReachablePeers();
317
+ if (reachablePeers.length === 0) {
318
+ // All peers are unreachable - enter partition mode
319
+ this.inPartition = true;
320
+ this.emitEvent({
321
+ type: 'all_disconnected',
322
+ timestamp: new Date(),
323
+ });
324
+ }
325
+ }
326
+ /**
327
+ * Check if we should exit partition mode (at least one peer reachable).
328
+ * @private
329
+ */
330
+ checkPartitionExit() {
331
+ if (!this.inPartition) {
332
+ return; // Not in partition
333
+ }
334
+ const reachablePeers = this.getReachablePeers();
335
+ if (reachablePeers.length > 0) {
336
+ // At least one peer is reachable - exit partition mode
337
+ this.inPartition = false;
338
+ this.emitEvent({
339
+ type: 'some_reconnected',
340
+ timestamp: new Date(),
341
+ });
342
+ }
343
+ }
344
+ /**
345
+ * Emit a connectivity event to all handlers.
346
+ * @private
347
+ */
348
+ emitEvent(event) {
349
+ for (const handler of this.handlers) {
350
+ try {
351
+ handler(event);
352
+ }
353
+ catch {
354
+ // Ignore handler errors to prevent one handler from affecting others
355
+ }
356
+ }
357
+ }
358
+ /**
359
+ * Check if currently in partition mode.
360
+ *
361
+ * @returns True if all peers are unreachable
362
+ */
363
+ isInPartition() {
364
+ return this.inPartition;
365
+ }
366
+ /**
367
+ * Clear all peer states (for testing).
368
+ */
369
+ clearPeers() {
370
+ this.peerStates.clear();
371
+ this.inPartition = false;
372
+ }
373
+ }
374
+ exports.HeartbeatMonitor = HeartbeatMonitor;
375
+ //# sourceMappingURL=heartbeatMonitor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"heartbeatMonitor.js","sourceRoot":"","sources":["../../../../../brightchain-api-lib/src/lib/availability/heartbeatMonitor.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * @fileoverview Availability module exports
3
+ *
4
+ * This module provides implementations for block availability tracking,
5
+ * discovery, and network partition handling.
6
+ */
7
+ export * from './availabilityMetrics';
8
+ export * from './availabilityService';
9
+ export * from './blockRegistry';
10
+ export * from './configValidation';
11
+ export * from './discoveryProtocol';
12
+ export * from './gossipService';
13
+ export * from './heartbeatMonitor';
14
+ export * from './reconciliationService';
15
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../brightchain-api-lib/src/lib/availability/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,cAAc,uBAAuB,CAAC;AACtC,cAAc,uBAAuB,CAAC;AACtC,cAAc,iBAAiB,CAAC;AAChC,cAAc,oBAAoB,CAAC;AACnC,cAAc,qBAAqB,CAAC;AACpC,cAAc,iBAAiB,CAAC;AAChC,cAAc,oBAAoB,CAAC;AACnC,cAAc,yBAAyB,CAAC"}
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ /**
3
+ * @fileoverview Availability module exports
4
+ *
5
+ * This module provides implementations for block availability tracking,
6
+ * discovery, and network partition handling.
7
+ */
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ const tslib_1 = require("tslib");
10
+ tslib_1.__exportStar(require("./availabilityMetrics"), exports);
11
+ tslib_1.__exportStar(require("./availabilityService"), exports);
12
+ tslib_1.__exportStar(require("./blockRegistry"), exports);
13
+ tslib_1.__exportStar(require("./configValidation"), exports);
14
+ tslib_1.__exportStar(require("./discoveryProtocol"), exports);
15
+ tslib_1.__exportStar(require("./gossipService"), exports);
16
+ tslib_1.__exportStar(require("./heartbeatMonitor"), exports);
17
+ tslib_1.__exportStar(require("./reconciliationService"), exports);
18
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../brightchain-api-lib/src/lib/availability/index.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;AAEH,gEAAsC;AACtC,gEAAsC;AACtC,0DAAgC;AAChC,6DAAmC;AACnC,8DAAoC;AACpC,0DAAgC;AAChC,6DAAmC;AACnC,kEAAwC"}
@@ -0,0 +1,237 @@
1
+ /**
2
+ * @fileoverview Reconciliation Service Implementation
3
+ *
4
+ * Implements state synchronization after network reconnection.
5
+ * Handles manifest exchange, pending sync queue processing,
6
+ * orphan resolution, and conflict resolution using last-write-wins.
7
+ *
8
+ * @see Requirements 9.1, 9.2, 9.3, 9.4, 9.5, 9.6, 9.7, 9.8
9
+ */
10
+ import { BlockManifest, IReconciliationService, PendingSyncItem, ReconciliationConfig, ReconciliationEventHandler, ReconciliationResult, SyncVectorEntry } from '@brightchain/brightchain-lib';
11
+ /**
12
+ * Interface for peer manifest operations.
13
+ * Abstracts network communication for reconciliation.
14
+ */
15
+ export interface IManifestProvider {
16
+ /**
17
+ * Get the local node ID.
18
+ */
19
+ getLocalNodeId(): string;
20
+ /**
21
+ * Get the local manifest.
22
+ */
23
+ getLocalManifest(): BlockManifest;
24
+ /**
25
+ * Get manifest from a peer.
26
+ *
27
+ * @param peerId - The peer to get manifest from
28
+ * @param sinceTimestamp - Optional timestamp to get changes since
29
+ * @param timeoutMs - Timeout in milliseconds
30
+ */
31
+ getPeerManifest(peerId: string, sinceTimestamp?: Date, timeoutMs?: number): Promise<BlockManifest>;
32
+ /**
33
+ * Update location metadata for a block.
34
+ *
35
+ * @param blockId - The block ID to update
36
+ * @param nodeId - The node ID that has the block
37
+ * @param timestamp - When the block was seen
38
+ */
39
+ updateBlockLocation(blockId: string, nodeId: string, timestamp: Date): Promise<void>;
40
+ /**
41
+ * Get the current availability state of a block.
42
+ *
43
+ * @param blockId - The block ID to check
44
+ * @returns 'local' | 'remote' | 'cached' | 'orphaned' | 'unknown'
45
+ */
46
+ getBlockAvailabilityState(blockId: string): Promise<'local' | 'remote' | 'cached' | 'orphaned' | 'unknown'>;
47
+ /**
48
+ * Update block availability state.
49
+ *
50
+ * @param blockId - The block ID to update
51
+ * @param state - The new state
52
+ */
53
+ updateBlockAvailabilityState(blockId: string, state: 'local' | 'remote' | 'cached' | 'orphaned' | 'unknown'): Promise<void>;
54
+ /**
55
+ * Get all orphaned block IDs.
56
+ */
57
+ getOrphanedBlockIds(): Promise<string[]>;
58
+ /**
59
+ * Send a pending sync item to a peer.
60
+ *
61
+ * @param peerId - The peer to send to
62
+ * @param item - The sync item to send
63
+ */
64
+ sendSyncItem(peerId: string, item: PendingSyncItem): Promise<void>;
65
+ /**
66
+ * Get connected peer IDs.
67
+ */
68
+ getConnectedPeerIds(): string[];
69
+ /**
70
+ * Get the timestamp of a block's last modification.
71
+ *
72
+ * @param blockId - The block ID to check
73
+ * @param nodeId - The node to check
74
+ */
75
+ getBlockTimestamp(blockId: string, nodeId: string): Promise<Date | null>;
76
+ }
77
+ /**
78
+ * Reconciliation Service Implementation
79
+ *
80
+ * Handles state synchronization after network reconnection.
81
+ * Implements manifest exchange, pending sync queue processing,
82
+ * orphan resolution, and conflict resolution.
83
+ *
84
+ * @see Requirements 9.1, 9.2, 9.3, 9.4, 9.5, 9.6, 9.7, 9.8
85
+ */
86
+ export declare class ReconciliationService implements IReconciliationService {
87
+ private readonly manifestProvider;
88
+ private readonly config;
89
+ /**
90
+ * Sync vectors for each peer.
91
+ */
92
+ private readonly syncVectors;
93
+ /**
94
+ * Pending sync queue.
95
+ */
96
+ private pendingSyncQueue;
97
+ /**
98
+ * Event handlers.
99
+ */
100
+ private readonly eventHandlers;
101
+ /**
102
+ * Base path for persistence.
103
+ */
104
+ private readonly basePath;
105
+ /**
106
+ * Create a new ReconciliationService.
107
+ *
108
+ * @param manifestProvider - Provider for manifest operations
109
+ * @param basePath - Base path for persistence files
110
+ * @param config - Reconciliation configuration
111
+ */
112
+ constructor(manifestProvider: IManifestProvider, basePath: string, config?: ReconciliationConfig);
113
+ /**
114
+ * Start reconciliation with reconnected peers.
115
+ *
116
+ * @param peerIds - Array of peer IDs to reconcile with
117
+ * @returns Promise resolving to reconciliation result
118
+ * @see Requirements 9.1, 9.2, 9.3, 9.4, 9.5, 9.6, 9.7
119
+ */
120
+ reconcile(peerIds: string[]): Promise<ReconciliationResult>;
121
+ /**
122
+ * Reconcile with a single peer.
123
+ */
124
+ private reconcileWithPeer;
125
+ /**
126
+ * Resolve orphaned blocks by checking if any reconnected peers have them.
127
+ */
128
+ private resolveOrphanedBlocks;
129
+ /**
130
+ * Get the sync vector entry for a specific peer.
131
+ *
132
+ * @param peerId - The peer ID to get sync vector for
133
+ * @returns The sync vector entry or null if not found
134
+ */
135
+ getSyncVector(peerId: string): SyncVectorEntry | null;
136
+ /**
137
+ * Get all sync vector entries.
138
+ *
139
+ * @returns Map of peer IDs to sync vector entries
140
+ */
141
+ getAllSyncVectors(): Map<string, SyncVectorEntry>;
142
+ /**
143
+ * Update the sync vector for a peer after successful synchronization.
144
+ *
145
+ * @param peerId - The peer ID to update
146
+ * @param timestamp - The timestamp of the sync
147
+ * @param manifestChecksum - The checksum of the peer's manifest
148
+ */
149
+ updateSyncVector(peerId: string, timestamp: Date, manifestChecksum: string): void;
150
+ /**
151
+ * Initialize sync vector for a new peer.
152
+ *
153
+ * @param peerId - The peer ID to initialize
154
+ */
155
+ initializeSyncVector(peerId: string): void;
156
+ /**
157
+ * Get the pending sync queue.
158
+ *
159
+ * @returns Array of pending sync items
160
+ */
161
+ getPendingSyncQueue(): PendingSyncItem[];
162
+ /**
163
+ * Add an item to the pending sync queue.
164
+ *
165
+ * @param item - The item to add to the queue
166
+ */
167
+ addToPendingSyncQueue(item: PendingSyncItem): void;
168
+ /**
169
+ * Process the pending sync queue.
170
+ *
171
+ * @returns Promise that resolves when queue is processed
172
+ */
173
+ processPendingSyncQueue(): Promise<void>;
174
+ /**
175
+ * Clear the pending sync queue.
176
+ */
177
+ clearPendingSyncQueue(): void;
178
+ /**
179
+ * Persist sync vectors to disk.
180
+ *
181
+ * @returns Promise that resolves when persistence is complete
182
+ */
183
+ persistSyncVectors(): Promise<void>;
184
+ /**
185
+ * Load sync vectors from disk.
186
+ *
187
+ * @returns Promise that resolves when loading is complete
188
+ */
189
+ loadSyncVectors(): Promise<void>;
190
+ /**
191
+ * Persist pending sync queue to disk.
192
+ *
193
+ * @returns Promise that resolves when persistence is complete
194
+ */
195
+ persistPendingSyncQueue(): Promise<void>;
196
+ /**
197
+ * Load pending sync queue from disk.
198
+ *
199
+ * @returns Promise that resolves when loading is complete
200
+ */
201
+ loadPendingSyncQueue(): Promise<void>;
202
+ /**
203
+ * Subscribe to reconciliation events.
204
+ *
205
+ * @param handler - Function to call when events occur
206
+ */
207
+ onEvent(handler: ReconciliationEventHandler): void;
208
+ /**
209
+ * Remove a reconciliation event handler.
210
+ *
211
+ * @param handler - The handler to remove
212
+ */
213
+ offEvent(handler: ReconciliationEventHandler): void;
214
+ /**
215
+ * Get the current configuration.
216
+ *
217
+ * @returns The reconciliation configuration
218
+ */
219
+ getConfig(): ReconciliationConfig;
220
+ /**
221
+ * Emit an event to all handlers.
222
+ */
223
+ private emitEvent;
224
+ /**
225
+ * Ensure the directory for a file path exists.
226
+ */
227
+ private ensureDirectoryExists;
228
+ /**
229
+ * Split an array into chunks.
230
+ */
231
+ private chunkArray;
232
+ /**
233
+ * Clear all state (for testing).
234
+ */
235
+ clear(): void;
236
+ }
237
+ //# sourceMappingURL=reconciliationService.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reconciliationService.d.ts","sourceRoot":"","sources":["../../../../../brightchain-api-lib/src/lib/availability/reconciliationService.ts"],"names":[],"mappings":"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"}