@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,458 @@
1
+ "use strict";
2
+ /**
3
+ * @fileoverview Availability-Aware Block Store Wrapper
4
+ *
5
+ * Wraps an existing IBlockStore implementation to add availability tracking.
6
+ * Provides hooks for registry updates, gossip announcements, access metadata
7
+ * updates, and partition mode operation restrictions.
8
+ *
9
+ * @see Requirements 12.1, 12.2, 12.3, 12.4, 12.5, 12.6, 8.1, 8.2, 8.3, 8.4, 8.5, 8.6
10
+ */
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.AvailabilityAwareBlockStore = exports.DEFAULT_AVAILABILITY_AWARE_BLOCK_STORE_CONFIG = exports.PartitionModeError = void 0;
13
+ const brightchain_lib_1 = require("@brightchain/brightchain-lib");
14
+ /**
15
+ * Error thrown when an operation is attempted during partition mode
16
+ * that requires network access.
17
+ */
18
+ class PartitionModeError extends Error {
19
+ constructor(message) {
20
+ super(message);
21
+ this.name = 'PartitionModeError';
22
+ }
23
+ }
24
+ exports.PartitionModeError = PartitionModeError;
25
+ /**
26
+ * Default configuration values.
27
+ */
28
+ exports.DEFAULT_AVAILABILITY_AWARE_BLOCK_STORE_CONFIG = {
29
+ localNodeId: '',
30
+ autoAnnounce: true,
31
+ trackAccess: true,
32
+ };
33
+ /**
34
+ * AvailabilityAwareBlockStore
35
+ *
36
+ * Wraps an existing IBlockStore to add availability tracking.
37
+ * Implements the same IBlockStore interface for transparent usage.
38
+ *
39
+ * Features:
40
+ * - Automatic registry updates on store/delete operations
41
+ * - Gossip announcements for new blocks and removals
42
+ * - Access metadata tracking on reads
43
+ * - Partition mode operation restrictions
44
+ * - Pending sync queue for operations during partition mode
45
+ *
46
+ * @see Requirements 12.1, 12.2, 12.3, 12.4, 12.5, 12.6, 8.1, 8.2, 8.3, 8.4, 8.5, 8.6
47
+ */
48
+ class AvailabilityAwareBlockStore {
49
+ /**
50
+ * Create a new AvailabilityAwareBlockStore.
51
+ *
52
+ * @param innerStore - The underlying block store to wrap
53
+ * @param registry - Block registry for local block tracking
54
+ * @param availabilityService - Service for availability state management
55
+ * @param gossipService - Service for block announcements
56
+ * @param reconciliationService - Service for pending sync queue
57
+ * @param config - Configuration options
58
+ */
59
+ constructor(innerStore, registry, availabilityService, gossipService, reconciliationService, config) {
60
+ this.innerStore = innerStore;
61
+ this.registry = registry;
62
+ this.availabilityService = availabilityService;
63
+ this.gossipService = gossipService;
64
+ this.reconciliationService = reconciliationService;
65
+ this.config = {
66
+ ...exports.DEFAULT_AVAILABILITY_AWARE_BLOCK_STORE_CONFIG,
67
+ ...config,
68
+ };
69
+ }
70
+ /**
71
+ * Get the block size for this store.
72
+ */
73
+ get blockSize() {
74
+ return this.innerStore.blockSize;
75
+ }
76
+ // === Core Block Operations ===
77
+ /**
78
+ * Check if a block exists.
79
+ *
80
+ * @param key - The block's checksum or ID
81
+ * @returns Promise resolving to true if the block exists
82
+ */
83
+ async has(key) {
84
+ return this.innerStore.has(key);
85
+ }
86
+ /**
87
+ * Get a block's data.
88
+ * Updates access metadata if tracking is enabled.
89
+ *
90
+ * @param key - The block's checksum
91
+ * @returns Promise resolving to the block data
92
+ * @throws StoreError if block not found
93
+ * @see Requirements 12.4
94
+ */
95
+ async getData(key) {
96
+ const blockId = this.keyToHex(key);
97
+ // Check availability state for remote blocks during partition mode
98
+ if (this.availabilityService.isInPartitionMode()) {
99
+ const state = await this.availabilityService.getAvailabilityState(blockId);
100
+ if (state === brightchain_lib_1.AvailabilityState.Remote) {
101
+ throw new PartitionModeError(`Cannot access remote block ${blockId} during partition mode`);
102
+ }
103
+ }
104
+ // Delegate to inner store
105
+ const block = await this.innerStore.getData(key);
106
+ // Update access metadata if tracking is enabled
107
+ if (this.config.trackAccess) {
108
+ await this.updateAccessMetadata(blockId);
109
+ }
110
+ return block;
111
+ }
112
+ /**
113
+ * Store a block's data with optional durability settings.
114
+ * Updates registry, availability state, and announces via gossip.
115
+ *
116
+ * @param block - The block to store
117
+ * @param options - Optional storage options
118
+ * @see Requirements 12.2, 8.1, 8.3, 8.5
119
+ */
120
+ async setData(block, options) {
121
+ const blockId = this.keyToHex(block.idChecksum);
122
+ // Store in inner store first
123
+ await this.innerStore.setData(block, options);
124
+ // Update registry
125
+ this.registry.addLocal(blockId);
126
+ // Update availability state to Local
127
+ await this.availabilityService.setAvailabilityState(blockId, brightchain_lib_1.AvailabilityState.Local);
128
+ // Update location metadata
129
+ const locationRecord = {
130
+ nodeId: this.config.localNodeId,
131
+ lastSeen: new Date(),
132
+ isAuthoritative: true,
133
+ };
134
+ await this.availabilityService.updateLocation(blockId, locationRecord);
135
+ // Handle partition mode - add to pending sync queue
136
+ if (this.availabilityService.isInPartitionMode()) {
137
+ const syncItem = {
138
+ type: 'store',
139
+ blockId,
140
+ timestamp: new Date(),
141
+ data: block.data,
142
+ };
143
+ this.reconciliationService.addToPendingSyncQueue(syncItem);
144
+ }
145
+ else if (this.config.autoAnnounce) {
146
+ // Announce to network via gossip
147
+ await this.gossipService.announceBlock(blockId);
148
+ }
149
+ }
150
+ /**
151
+ * Delete a block's data.
152
+ * Updates registry, availability state, and announces removal via gossip.
153
+ *
154
+ * @param key - The block's checksum
155
+ * @see Requirements 12.3, 8.3, 8.5
156
+ */
157
+ async deleteData(key) {
158
+ const blockId = this.keyToHex(key);
159
+ // Delete from inner store first
160
+ await this.innerStore.deleteData(key);
161
+ // Update registry
162
+ this.registry.removeLocal(blockId);
163
+ // Remove local location
164
+ await this.availabilityService.removeLocation(blockId, this.config.localNodeId);
165
+ // Handle partition mode - add to pending sync queue
166
+ if (this.availabilityService.isInPartitionMode()) {
167
+ const syncItem = {
168
+ type: 'delete',
169
+ blockId,
170
+ timestamp: new Date(),
171
+ };
172
+ this.reconciliationService.addToPendingSyncQueue(syncItem);
173
+ }
174
+ else if (this.config.autoAnnounce) {
175
+ // Announce removal to network via gossip
176
+ await this.gossipService.announceRemoval(blockId);
177
+ }
178
+ }
179
+ /**
180
+ * Get random block checksums from the store.
181
+ *
182
+ * @param count - Maximum number of blocks to return
183
+ * @returns Array of random block checksums
184
+ */
185
+ async getRandomBlocks(count) {
186
+ return this.innerStore.getRandomBlocks(count);
187
+ }
188
+ /**
189
+ * Get a handle to a block.
190
+ *
191
+ * @param checksum - The block's checksum or ID
192
+ * @returns Block handle
193
+ */
194
+ get(checksum) {
195
+ return this.innerStore.get(checksum);
196
+ }
197
+ /**
198
+ * Store raw data with a key.
199
+ *
200
+ * @param key - The key to store the data under
201
+ * @param data - The raw data to store
202
+ * @param options - Optional storage options
203
+ */
204
+ async put(key, data, options) {
205
+ const keyChecksum = typeof key === 'string' ? brightchain_lib_1.Checksum.fromHex(key) : key;
206
+ const blockId = this.keyToHex(keyChecksum);
207
+ // Delegate to inner store
208
+ await this.innerStore.put(key, data, options);
209
+ // Update registry
210
+ this.registry.addLocal(blockId);
211
+ // Update availability state to Local
212
+ await this.availabilityService.setAvailabilityState(blockId, brightchain_lib_1.AvailabilityState.Local);
213
+ // Update location metadata
214
+ const locationRecord = {
215
+ nodeId: this.config.localNodeId,
216
+ lastSeen: new Date(),
217
+ isAuthoritative: true,
218
+ };
219
+ await this.availabilityService.updateLocation(blockId, locationRecord);
220
+ // Handle partition mode
221
+ if (this.availabilityService.isInPartitionMode()) {
222
+ const syncItem = {
223
+ type: 'store',
224
+ blockId,
225
+ timestamp: new Date(),
226
+ data: new Uint8Array(data),
227
+ };
228
+ this.reconciliationService.addToPendingSyncQueue(syncItem);
229
+ }
230
+ else if (this.config.autoAnnounce) {
231
+ await this.gossipService.announceBlock(blockId);
232
+ }
233
+ }
234
+ /**
235
+ * Delete a block.
236
+ *
237
+ * @param key - The block's checksum or ID
238
+ */
239
+ async delete(key) {
240
+ const keyChecksum = typeof key === 'string' ? brightchain_lib_1.Checksum.fromHex(key) : key;
241
+ await this.deleteData(keyChecksum);
242
+ }
243
+ // === Metadata Operations ===
244
+ /**
245
+ * Get metadata for a block.
246
+ *
247
+ * @param key - The block's checksum or ID
248
+ * @returns The block's metadata, or null if not found
249
+ */
250
+ async getMetadata(key) {
251
+ return this.innerStore.getMetadata(key);
252
+ }
253
+ /**
254
+ * Update metadata for a block.
255
+ *
256
+ * @param key - The block's checksum or ID
257
+ * @param updates - Partial metadata updates to apply
258
+ */
259
+ async updateMetadata(key, updates) {
260
+ return this.innerStore.updateMetadata(key, updates);
261
+ }
262
+ // === FEC/Durability Operations ===
263
+ /**
264
+ * Generate parity blocks for a data block.
265
+ *
266
+ * @param key - The data block's checksum
267
+ * @param parityCount - Number of parity blocks to generate
268
+ * @returns Array of parity block checksums
269
+ */
270
+ async generateParityBlocks(key, parityCount) {
271
+ return this.innerStore.generateParityBlocks(key, parityCount);
272
+ }
273
+ /**
274
+ * Get parity block checksums for a data block.
275
+ *
276
+ * @param key - The data block's checksum or ID
277
+ * @returns Array of parity block checksums
278
+ */
279
+ async getParityBlocks(key) {
280
+ return this.innerStore.getParityBlocks(key);
281
+ }
282
+ /**
283
+ * Attempt to recover a corrupted or missing block.
284
+ *
285
+ * @param key - The block's checksum or ID
286
+ * @returns Recovery result
287
+ */
288
+ async recoverBlock(key) {
289
+ return this.innerStore.recoverBlock(key);
290
+ }
291
+ /**
292
+ * Verify block integrity against its parity data.
293
+ *
294
+ * @param key - The block's checksum or ID
295
+ * @returns True if the block data matches its parity data
296
+ */
297
+ async verifyBlockIntegrity(key) {
298
+ return this.innerStore.verifyBlockIntegrity(key);
299
+ }
300
+ // === Replication Operations ===
301
+ /**
302
+ * Get blocks that are pending replication.
303
+ *
304
+ * @returns Array of block checksums pending replication
305
+ */
306
+ async getBlocksPendingReplication() {
307
+ return this.innerStore.getBlocksPendingReplication();
308
+ }
309
+ /**
310
+ * Get blocks that are under-replicated.
311
+ *
312
+ * @returns Array of block checksums that need additional replicas
313
+ */
314
+ async getUnderReplicatedBlocks() {
315
+ return this.innerStore.getUnderReplicatedBlocks();
316
+ }
317
+ /**
318
+ * Record that a block has been replicated to a node.
319
+ *
320
+ * @param key - The block's checksum or ID
321
+ * @param nodeId - The ID of the node that now holds a replica
322
+ */
323
+ async recordReplication(key, nodeId) {
324
+ const blockId = this.keyToHex(key);
325
+ // Record in inner store
326
+ await this.innerStore.recordReplication(key, nodeId);
327
+ // Update location metadata
328
+ const locationRecord = {
329
+ nodeId,
330
+ lastSeen: new Date(),
331
+ isAuthoritative: false,
332
+ };
333
+ await this.availabilityService.updateLocation(blockId, locationRecord);
334
+ }
335
+ /**
336
+ * Record that a replica node is no longer available.
337
+ *
338
+ * @param key - The block's checksum or ID
339
+ * @param nodeId - The ID of the node that lost the replica
340
+ */
341
+ async recordReplicaLoss(key, nodeId) {
342
+ const blockId = this.keyToHex(key);
343
+ // Record in inner store
344
+ await this.innerStore.recordReplicaLoss(key, nodeId);
345
+ // Remove location
346
+ await this.availabilityService.removeLocation(blockId, nodeId);
347
+ }
348
+ // === XOR Brightening Operations ===
349
+ /**
350
+ * Brighten a block by XORing it with random blocks.
351
+ *
352
+ * @param key - The source block's checksum or ID
353
+ * @param randomBlockCount - Number of random blocks to XOR with
354
+ * @returns Result containing the brightened block ID and random block IDs
355
+ */
356
+ async brightenBlock(key, randomBlockCount) {
357
+ const result = await this.innerStore.brightenBlock(key, randomBlockCount);
358
+ // Update registry and availability for the brightened block
359
+ this.registry.addLocal(result.brightenedBlockId);
360
+ await this.availabilityService.setAvailabilityState(result.brightenedBlockId, brightchain_lib_1.AvailabilityState.Local);
361
+ const locationRecord = {
362
+ nodeId: this.config.localNodeId,
363
+ lastSeen: new Date(),
364
+ isAuthoritative: true,
365
+ };
366
+ await this.availabilityService.updateLocation(result.brightenedBlockId, locationRecord);
367
+ // Announce if not in partition mode
368
+ if (!this.availabilityService.isInPartitionMode() &&
369
+ this.config.autoAnnounce) {
370
+ await this.gossipService.announceBlock(result.brightenedBlockId);
371
+ }
372
+ return result;
373
+ }
374
+ // === Helper Methods ===
375
+ /**
376
+ * Convert a key to hex string format.
377
+ */
378
+ keyToHex(key) {
379
+ return typeof key === 'string' ? key : key.toHex();
380
+ }
381
+ /**
382
+ * Update access metadata for a block.
383
+ */
384
+ async updateAccessMetadata(blockId) {
385
+ try {
386
+ // Update location record with new lastSeen timestamp
387
+ const locationRecord = {
388
+ nodeId: this.config.localNodeId,
389
+ lastSeen: new Date(),
390
+ isAuthoritative: true,
391
+ };
392
+ await this.availabilityService.updateLocation(blockId, locationRecord);
393
+ }
394
+ catch {
395
+ // Ignore errors updating access metadata
396
+ }
397
+ }
398
+ // === Partition Mode Helpers ===
399
+ /**
400
+ * Check if the store is in partition mode.
401
+ *
402
+ * @returns True if in partition mode
403
+ */
404
+ isInPartitionMode() {
405
+ return this.availabilityService.isInPartitionMode();
406
+ }
407
+ /**
408
+ * Get the underlying block store.
409
+ * Use with caution - bypasses availability tracking.
410
+ *
411
+ * @returns The inner block store
412
+ */
413
+ getInnerStore() {
414
+ return this.innerStore;
415
+ }
416
+ /**
417
+ * Get the block registry.
418
+ *
419
+ * @returns The block registry
420
+ */
421
+ getRegistry() {
422
+ return this.registry;
423
+ }
424
+ /**
425
+ * Get the availability service.
426
+ *
427
+ * @returns The availability service
428
+ */
429
+ getAvailabilityService() {
430
+ return this.availabilityService;
431
+ }
432
+ /**
433
+ * Get the gossip service.
434
+ *
435
+ * @returns The gossip service
436
+ */
437
+ getGossipService() {
438
+ return this.gossipService;
439
+ }
440
+ /**
441
+ * Get the reconciliation service.
442
+ *
443
+ * @returns The reconciliation service
444
+ */
445
+ getReconciliationService() {
446
+ return this.reconciliationService;
447
+ }
448
+ /**
449
+ * Get the configuration.
450
+ *
451
+ * @returns The configuration
452
+ */
453
+ getConfig() {
454
+ return { ...this.config };
455
+ }
456
+ }
457
+ exports.AvailabilityAwareBlockStore = AvailabilityAwareBlockStore;
458
+ //# sourceMappingURL=availabilityAwareBlockStore.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"availabilityAwareBlockStore.js","sourceRoot":"","sources":["../../../../../brightchain-api-lib/src/lib/stores/availabilityAwareBlockStore.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,212 @@
1
+ import { BaseBlock, BlockHandle, BlockSize, BlockStoreOptions, BrightenResult, Checksum, IBaseBlockMetadata, IBlockMetadata, IBlockStore, IFecService, RawDataBlock, RecoveryResult } from '@brightchain/brightchain-lib';
2
+ import { DiskBlockMetadataStore } from './diskBlockMetadataStore';
3
+ import { DiskBlockStore } from './diskBlockStore';
4
+ /**
5
+ * DiskBlockAsyncStore provides asynchronous operations for storing and retrieving blocks from disk.
6
+ * It supports raw block storage and XOR operations with stream-based data handling.
7
+ * Blocks are stored as raw data without metadata - their meaning is derived from CBLs.
8
+ *
9
+ * This implementation supports:
10
+ * - Core block operations (store, retrieve, delete)
11
+ * - Metadata management for tracking block lifecycle and access patterns
12
+ * - FEC (Forward Error Correction) operations using Reed-Solomon encoding
13
+ * - Replication tracking for distributed storage
14
+ */
15
+ export declare class DiskBlockAsyncStore extends DiskBlockStore implements IBlockStore {
16
+ /**
17
+ * Metadata store for tracking block lifecycle and access patterns.
18
+ */
19
+ private readonly metadataStore;
20
+ /**
21
+ * Optional FEC service for parity generation and recovery.
22
+ * If not provided, FEC operations will return errors or no-ops.
23
+ */
24
+ private fecService;
25
+ constructor(config: {
26
+ storePath: string;
27
+ blockSize: BlockSize;
28
+ });
29
+ /**
30
+ * Set the FEC service for parity generation and recovery.
31
+ * @param fecService - The FEC service to use
32
+ */
33
+ setFecService(fecService: IFecService | null): void;
34
+ /**
35
+ * Get the FEC service if available.
36
+ * @returns The FEC service or null if not available
37
+ */
38
+ getFecService(): IFecService | null;
39
+ /**
40
+ * Get the metadata store.
41
+ * @returns The metadata store
42
+ */
43
+ getMetadataStore(): DiskBlockMetadataStore;
44
+ /**
45
+ * Convert a key to hex string format.
46
+ * @param key - The key as Checksum or string
47
+ * @returns The key as hex string
48
+ */
49
+ private keyToHex;
50
+ /**
51
+ * Convert a hex string to Checksum.
52
+ * @param hex - The hex string
53
+ * @returns The Checksum
54
+ */
55
+ private hexToChecksum;
56
+ /**
57
+ * Get the file path for a parity block.
58
+ * Parity files are stored alongside block files with .p{index} extension.
59
+ * @param blockId - The data block's checksum
60
+ * @param parityIndex - The parity block index (0-based)
61
+ * @returns The parity file path
62
+ */
63
+ private parityPath;
64
+ /**
65
+ * Check if a block exists
66
+ */
67
+ has(key: Checksum | string): Promise<boolean>;
68
+ /**
69
+ * Get a handle to a block
70
+ */
71
+ get<T extends BaseBlock>(key: Checksum | string): BlockHandle<T>;
72
+ /**
73
+ * Get a block's data
74
+ */
75
+ getData(key: Checksum): Promise<RawDataBlock>;
76
+ /**
77
+ * Delete a block's data (and associated parity blocks and metadata)
78
+ * @param key - The block's checksum
79
+ */
80
+ deleteData(key: Checksum): Promise<void>;
81
+ /**
82
+ * Store a block's data with optional durability settings
83
+ */
84
+ setData(block: RawDataBlock, options?: BlockStoreOptions): Promise<void>;
85
+ /**
86
+ * XOR multiple blocks together
87
+ */
88
+ xor<T extends BaseBlock>(blocks: BlockHandle<T>[], destBlockMetadata: IBaseBlockMetadata): Promise<RawDataBlock>;
89
+ /**
90
+ * Handle read stream ends
91
+ */
92
+ private handleReadStreamEnds;
93
+ /**
94
+ * Clean up streams
95
+ */
96
+ private cleanupStreams;
97
+ /**
98
+ * Get random block checksums from the store
99
+ * @param count - Maximum number of blocks to return
100
+ * @returns Array of random block checksums
101
+ */
102
+ getRandomBlocks(count: number): Promise<Checksum[]>;
103
+ /**
104
+ * Store raw data with a key (convenience method)
105
+ * Creates a RawDataBlock and stores it
106
+ */
107
+ put(key: Checksum | string, data: Uint8Array, options?: BlockStoreOptions): Promise<void>;
108
+ /**
109
+ * Delete a block (convenience method, alias for deleteData)
110
+ */
111
+ delete(key: Checksum | string): Promise<void>;
112
+ /**
113
+ * Get metadata for a block
114
+ * @param key - The block's checksum or ID
115
+ * @returns The block's metadata, or null if not found
116
+ */
117
+ getMetadata(key: Checksum | string): Promise<IBlockMetadata | null>;
118
+ /**
119
+ * Update metadata for a block
120
+ * @param key - The block's checksum or ID
121
+ * @param updates - Partial metadata updates to apply
122
+ */
123
+ updateMetadata(key: Checksum | string, updates: Partial<IBlockMetadata>): Promise<void>;
124
+ /**
125
+ * Generate parity blocks for a data block using Reed-Solomon encoding.
126
+ * Parity blocks are stored as separate files: {blockId}.p0, {blockId}.p1, etc.
127
+ * @param key - The data block's checksum
128
+ * @param parityCount - Number of parity blocks to generate
129
+ * @returns Array of parity block checksums (as synthetic IDs)
130
+ * @throws FecError if FEC service is not available or encoding fails
131
+ */
132
+ generateParityBlocks(key: Checksum | string, parityCount: number): Promise<Checksum[]>;
133
+ /**
134
+ * Get parity block checksums for a data block.
135
+ * @param key - The data block's checksum or ID
136
+ * @returns Array of parity block checksums
137
+ */
138
+ getParityBlocks(key: Checksum | string): Promise<Checksum[]>;
139
+ /**
140
+ * Load parity data from disk for a block.
141
+ * @param key - The data block's checksum
142
+ * @returns Array of parity data objects
143
+ */
144
+ private loadParityData;
145
+ /**
146
+ * Attempt to recover a corrupted or missing block using parity data.
147
+ * @param key - The block's checksum or ID
148
+ * @returns Recovery result with the recovered block or error
149
+ */
150
+ recoverBlock(key: Checksum | string): Promise<RecoveryResult>;
151
+ /**
152
+ * Verify block integrity against its parity data.
153
+ * @param key - The block's checksum or ID
154
+ * @returns True if the block data matches its parity data
155
+ */
156
+ verifyBlockIntegrity(key: Checksum | string): Promise<boolean>;
157
+ /**
158
+ * Get blocks that are pending replication (status = Pending).
159
+ * @returns Array of block checksums pending replication
160
+ */
161
+ getBlocksPendingReplication(): Promise<Checksum[]>;
162
+ /**
163
+ * Get blocks that are under-replicated (status = UnderReplicated).
164
+ * @returns Array of block checksums that need additional replicas
165
+ */
166
+ getUnderReplicatedBlocks(): Promise<Checksum[]>;
167
+ /**
168
+ * Record that a block has been replicated to a node.
169
+ * @param key - The block's checksum or ID
170
+ * @param nodeId - The ID of the node that now holds a replica
171
+ */
172
+ recordReplication(key: Checksum | string, nodeId: string): Promise<void>;
173
+ /**
174
+ * Record that a replica node is no longer available.
175
+ * @param key - The block's checksum or ID
176
+ * @param nodeId - The ID of the node that lost the replica
177
+ */
178
+ recordReplicaLoss(key: Checksum | string, nodeId: string): Promise<void>;
179
+ /**
180
+ * Find all blocks that have expired (expiresAt is in the past).
181
+ * @returns Array of metadata for expired blocks
182
+ */
183
+ findExpired(): Promise<IBlockMetadata[]>;
184
+ /**
185
+ * Clean up expired blocks.
186
+ * This method identifies expired blocks and deletes them along with their
187
+ * parity blocks and metadata.
188
+ *
189
+ * @param cblChecker - Optional function to check if a block is referenced by a CBL.
190
+ * If provided, blocks referenced by active CBLs will not be deleted.
191
+ * @returns Object containing deleted block IDs and any errors encountered
192
+ */
193
+ cleanupExpiredBlocks(cblChecker?: (blockId: string) => Promise<boolean>): Promise<{
194
+ deletedBlockIds: string[];
195
+ errors: Array<{
196
+ blockId: string;
197
+ error: string;
198
+ }>;
199
+ }>;
200
+ /**
201
+ * Brighten a block by XORing it with random blocks from the store.
202
+ * This is used to implement Owner-Free storage patterns where the
203
+ * original data cannot be reconstructed without all the random blocks.
204
+ *
205
+ * @param key - The source block's checksum or ID
206
+ * @param randomBlockCount - Number of random blocks to XOR with
207
+ * @returns Result containing the brightened block ID and the random block IDs used
208
+ * @throws StoreError if the source block is not found or insufficient random blocks are available
209
+ */
210
+ brightenBlock(key: Checksum | string, randomBlockCount: number): Promise<BrightenResult>;
211
+ }
212
+ //# sourceMappingURL=diskBlockAsyncStore.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"diskBlockAsyncStore.d.ts","sourceRoot":"","sources":["../../../../../brightchain-api-lib/src/lib/stores/diskBlockAsyncStore.ts"],"names":[],"mappings":"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"}