@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,297 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.KeyWrappingService = void 0;
4
+ const ecies_lib_1 = require("@digitaldefiance/ecies-lib");
5
+ const i18n_lib_1 = require("@digitaldefiance/i18n-lib");
6
+ const node_ecies_lib_1 = require("@digitaldefiance/node-ecies-lib");
7
+ const suite_core_lib_1 = require("@digitaldefiance/suite-core-lib");
8
+ const crypto_1 = require("crypto");
9
+ const appConstants_1 = require("../appConstants");
10
+ const constants_1 = require("../constants");
11
+ const pbkdf2_1 = require("./pbkdf2");
12
+ class KeyWrappingService {
13
+ /**
14
+ * Generates a new master key and wraps it with the user's password
15
+ */
16
+ wrapNewMasterKey(password) {
17
+ const masterKey = new node_ecies_lib_1.SecureBuffer((0, crypto_1.randomBytes)(constants_1.Constants.WRAPPED_KEY.MASTER_KEY_SIZE));
18
+ const wrappedKey = this.wrapMasterKey(masterKey, password);
19
+ return { masterKey, wrappedKey };
20
+ }
21
+ /**
22
+ * Wraps an existing master key with a password-derived key
23
+ */
24
+ wrapMasterKey(masterKey, password) {
25
+ if (appConstants_1.AppConstants.PasswordRegex.test(password.value ?? '') === false) {
26
+ throw new i18n_lib_1.HandleableError(new Error(suite_core_lib_1.SuiteCoreStringKey.Validation_InvalidCredentials));
27
+ }
28
+ const salt = (0, crypto_1.randomBytes)(constants_1.Constants.WRAPPED_KEY.SALT_SIZE);
29
+ const iterations = constants_1.Constants.WRAPPED_KEY.MIN_ITERATIONS;
30
+ // Derive key from password using centralized PBKDF2 service
31
+ const derivedKey = pbkdf2_1.Pbkdf2Service.deriveKeyFromPassword(Buffer.from(password.value ?? ''), salt, iterations, constants_1.Constants.WRAPPED_KEY.SALT_SIZE, 32, // AES-256 key size
32
+ 'sha256');
33
+ const passwordKeySecure = new node_ecies_lib_1.SecureBuffer(derivedKey.hash);
34
+ // Encrypt master key
35
+ const iv = (0, crypto_1.randomBytes)(constants_1.Constants.WRAPPED_KEY.IV_SIZE);
36
+ const cipher = (0, crypto_1.createCipheriv)('aes-256-gcm', passwordKeySecure.value, iv);
37
+ const encrypted = Buffer.concat([
38
+ cipher.update(masterKey.value),
39
+ cipher.final(),
40
+ ]);
41
+ const authTag = cipher.getAuthTag();
42
+ passwordKeySecure.dispose();
43
+ return {
44
+ salt: salt.toString('hex'),
45
+ iv: iv.toString('hex'),
46
+ authTag: authTag.toString('hex'),
47
+ encryptedMasterKey: encrypted.toString('hex'),
48
+ iterations,
49
+ };
50
+ }
51
+ /**
52
+ * Unwraps a master key using the user's password
53
+ */
54
+ unwrapMasterKey(wrappedKey, password) {
55
+ const salt = Buffer.from(wrappedKey.salt, 'hex');
56
+ const iv = Buffer.from(wrappedKey.iv, 'hex');
57
+ const authTag = Buffer.from(wrappedKey.authTag, 'hex');
58
+ const encrypted = Buffer.from(wrappedKey.encryptedMasterKey, 'hex');
59
+ // Derive the same key from password using centralized PBKDF2 service
60
+ const derivedKey = pbkdf2_1.Pbkdf2Service.deriveKeyFromPassword(Buffer.from(password.value ?? ''), salt, wrappedKey.iterations, salt.length, // Use actual salt size
61
+ 32, // AES-256 key size
62
+ 'sha256');
63
+ const passwordKeySecure = new node_ecies_lib_1.SecureBuffer(derivedKey.hash);
64
+ try {
65
+ const decipher = (0, crypto_1.createDecipheriv)('aes-256-gcm', passwordKeySecure.value, iv);
66
+ decipher.setAuthTag(authTag);
67
+ const decrypted = Buffer.concat([
68
+ decipher.update(encrypted),
69
+ decipher.final(),
70
+ ]);
71
+ return new node_ecies_lib_1.SecureBuffer(decrypted);
72
+ }
73
+ catch {
74
+ throw new i18n_lib_1.HandleableError(new Error(suite_core_lib_1.SuiteCoreStringKey.Validation_InvalidCredentials));
75
+ }
76
+ finally {
77
+ passwordKeySecure.dispose();
78
+ }
79
+ }
80
+ /**
81
+ * Async version of unwrapMasterKey that uses libuv threadpool via crypto.pbkdf2
82
+ * to avoid blocking the event loop during password verification.
83
+ */
84
+ async unwrapMasterKeyAsync(wrappedKey, password) {
85
+ const __perfEnabled = process.env['PERF_LOGS'] === '1';
86
+ const _t0 = __perfEnabled ? Date.now() : 0;
87
+ const salt = Buffer.from(wrappedKey.salt, 'hex');
88
+ const iv = Buffer.from(wrappedKey.iv, 'hex');
89
+ const authTag = Buffer.from(wrappedKey.authTag, 'hex');
90
+ const encrypted = Buffer.from(wrappedKey.encryptedMasterKey, 'hex');
91
+ // Accept either a SecureString (preferred) or a raw password string to avoid
92
+ // expensive SecureString construction in the hot login path.
93
+ const pwdBuffer = typeof password === 'string'
94
+ ? Buffer.from(password, 'utf8')
95
+ : Buffer.from(password.value ?? '');
96
+ // Use centralized PBKDF2 service for async key derivation
97
+ const derivedKey = await pbkdf2_1.Pbkdf2Service.deriveKeyFromPasswordAsync(pwdBuffer, salt, wrappedKey.iterations, salt.length, // Use actual salt size
98
+ 32, // AES-256 key size
99
+ 'sha256');
100
+ const passwordKeySecure = new node_ecies_lib_1.SecureBuffer(derivedKey.hash);
101
+ try {
102
+ const decipher = (0, crypto_1.createDecipheriv)('aes-256-gcm', passwordKeySecure.value, iv);
103
+ decipher.setAuthTag(authTag);
104
+ const decrypted = Buffer.concat([
105
+ decipher.update(encrypted),
106
+ decipher.final(),
107
+ ]);
108
+ if (__perfEnabled)
109
+ console.warn('[perf] unwrapMasterKeyAsync pbkdf2 iters=', wrappedKey.iterations, 'dt=', Date.now() - _t0, 'ms');
110
+ return new node_ecies_lib_1.SecureBuffer(decrypted);
111
+ }
112
+ catch {
113
+ throw new i18n_lib_1.HandleableError(new Error(suite_core_lib_1.SuiteCoreStringKey.Validation_InvalidCredentials));
114
+ }
115
+ finally {
116
+ // Best-effort zero the temporary password buffer
117
+ try {
118
+ pwdBuffer.fill(0);
119
+ }
120
+ catch {
121
+ // ignore
122
+ }
123
+ passwordKeySecure.dispose();
124
+ }
125
+ }
126
+ /**
127
+ * Deduplicated async unwrap that coalesces concurrent identical PBKDF2 operations.
128
+ * Keyed by salt + iterations + a short hash of the password. Entry is removed after resolve/reject.
129
+ */
130
+ async unwrapMasterKeyAsyncDedup(wrappedKey, password) {
131
+ // Derive a short cache key; avoid storing raw password by hashing
132
+ const pwdKey = (0, crypto_1.createHash)('sha256')
133
+ .update(password, 'utf8')
134
+ .digest('base64url')
135
+ .slice(0, 24);
136
+ const cacheKey = `${wrappedKey.salt}:${wrappedKey.iterations}:${pwdKey}`;
137
+ let p = KeyWrappingService.inFlightUnwraps.get(cacheKey);
138
+ if (!p) {
139
+ // Compute once, extract raw bytes, dispose the shared SecureBuffer, and cache the bytes
140
+ p = (async () => {
141
+ const mk = await this.unwrapMasterKeyAsync(wrappedKey, password);
142
+ try {
143
+ const copy = Buffer.from(mk.value);
144
+ const b64 = copy.toString('base64');
145
+ // zeroize copy
146
+ copy.fill(0);
147
+ return b64;
148
+ }
149
+ finally {
150
+ mk.dispose();
151
+ }
152
+ })().finally(() => {
153
+ // Best-effort cleanup
154
+ KeyWrappingService.inFlightUnwraps.delete(cacheKey);
155
+ });
156
+ KeyWrappingService.inFlightUnwraps.set(cacheKey, p);
157
+ }
158
+ const b64 = await p;
159
+ // Return a fresh SecureBuffer per caller to avoid cross-disposal races
160
+ const buf = Buffer.from(b64, 'base64');
161
+ const secure = new node_ecies_lib_1.SecureBuffer(Buffer.from(buf));
162
+ buf.fill(0);
163
+ return secure;
164
+ }
165
+ /**
166
+ * Changes password by re-wrapping the master key
167
+ */
168
+ changePassword(wrappedKey, oldPassword, newPassword) {
169
+ // Unwrap with old password
170
+ const masterKey = this.unwrapMasterKey(wrappedKey, oldPassword);
171
+ try {
172
+ // Re-wrap with new password
173
+ return this.wrapMasterKey(masterKey, newPassword);
174
+ }
175
+ finally {
176
+ masterKey.dispose();
177
+ }
178
+ }
179
+ /**
180
+ * Wraps arbitrary secret bytes with a password-derived key (AES-256-GCM)
181
+ */
182
+ wrapSecret(secret, password) {
183
+ if (appConstants_1.AppConstants.PasswordRegex.test(password.value ?? '') === false) {
184
+ throw new i18n_lib_1.HandleableError(new Error(suite_core_lib_1.SuiteCoreStringKey.Validation_InvalidCredentials));
185
+ }
186
+ const salt = (0, crypto_1.randomBytes)(constants_1.Constants.WRAPPED_KEY.SALT_SIZE);
187
+ const iterations = constants_1.Constants.WRAPPED_KEY.MIN_ITERATIONS;
188
+ // Derive key from password using centralized PBKDF2 service
189
+ const derivedKey = pbkdf2_1.Pbkdf2Service.deriveKeyFromPassword(Buffer.from(password.value ?? ''), salt, iterations, constants_1.Constants.WRAPPED_KEY.SALT_SIZE, 32, // AES-256 key size
190
+ 'sha256');
191
+ const passwordKeySecure = new node_ecies_lib_1.SecureBuffer(derivedKey.hash);
192
+ try {
193
+ const iv = (0, crypto_1.randomBytes)(constants_1.Constants.WRAPPED_KEY.IV_SIZE);
194
+ const cipher = (0, crypto_1.createCipheriv)('aes-256-gcm', passwordKeySecure.value, iv);
195
+ const encrypted = Buffer.concat([
196
+ cipher.update(secret.value),
197
+ cipher.final(),
198
+ ]);
199
+ const authTag = cipher.getAuthTag();
200
+ return {
201
+ salt: salt.toString('hex'),
202
+ iv: iv.toString('hex'),
203
+ authTag: authTag.toString('hex'),
204
+ ciphertext: encrypted.toString('hex'),
205
+ iterations,
206
+ };
207
+ }
208
+ finally {
209
+ passwordKeySecure.dispose();
210
+ }
211
+ }
212
+ /**
213
+ * Unwraps a password-wrapped secret (sync)
214
+ */
215
+ unwrapSecret(wrapped, password) {
216
+ const salt = Buffer.from(wrapped.salt, 'hex');
217
+ const iv = Buffer.from(wrapped.iv, 'hex');
218
+ const authTag = Buffer.from(wrapped.authTag, 'hex');
219
+ const encrypted = Buffer.from(wrapped.ciphertext, 'hex');
220
+ // Derive key from password using centralized PBKDF2 service
221
+ const derivedKey = pbkdf2_1.Pbkdf2Service.deriveKeyFromPassword(Buffer.from(password.value ?? ''), salt, wrapped.iterations, salt.length, // Use actual salt size
222
+ 32, // AES-256 key size
223
+ 'sha256');
224
+ const passwordKeySecure = new node_ecies_lib_1.SecureBuffer(derivedKey.hash);
225
+ try {
226
+ const decipher = (0, crypto_1.createDecipheriv)('aes-256-gcm', passwordKeySecure.value, iv);
227
+ decipher.setAuthTag(authTag);
228
+ const decrypted = Buffer.concat([
229
+ decipher.update(encrypted),
230
+ decipher.final(),
231
+ ]);
232
+ return new node_ecies_lib_1.SecureBuffer(decrypted);
233
+ }
234
+ catch {
235
+ throw new i18n_lib_1.HandleableError(new Error(suite_core_lib_1.SuiteCoreStringKey.Validation_InvalidCredentials));
236
+ }
237
+ finally {
238
+ passwordKeySecure.dispose();
239
+ }
240
+ }
241
+ /**
242
+ * Unwraps a password-wrapped secret (async PBKDF2)
243
+ */
244
+ async unwrapSecretAsync(wrapped, password) {
245
+ const salt = Buffer.from(wrapped.salt, 'hex');
246
+ const iv = Buffer.from(wrapped.iv, 'hex');
247
+ const authTag = Buffer.from(wrapped.authTag, 'hex');
248
+ const encrypted = Buffer.from(wrapped.ciphertext, 'hex');
249
+ // Validate password parameter before using it
250
+ if (typeof password === 'string') {
251
+ if (password === undefined || password === null) {
252
+ throw new Error('Password cannot be undefined or null');
253
+ }
254
+ }
255
+ else if (!(password instanceof ecies_lib_1.SecureString)) {
256
+ throw new Error('Password must be provided as string or SecureString');
257
+ }
258
+ const pwdBuffer = typeof password === 'string'
259
+ ? Buffer.from(password, 'utf8')
260
+ : Buffer.from(password.value ?? '');
261
+ // Additional safety check
262
+ if (!pwdBuffer) {
263
+ throw new Error('Failed to create password buffer - password may be invalid');
264
+ }
265
+ // Use centralized PBKDF2 service for async key derivation
266
+ const derivedKey = await pbkdf2_1.Pbkdf2Service.deriveKeyFromPasswordAsync(Buffer.from(pwdBuffer), salt, wrapped.iterations, salt.length, // Use actual salt size
267
+ 32, // AES-256 key size
268
+ 'sha256');
269
+ const passwordKeySecure = new node_ecies_lib_1.SecureBuffer(derivedKey.hash);
270
+ try {
271
+ const decipher = (0, crypto_1.createDecipheriv)('aes-256-gcm', passwordKeySecure.value, iv);
272
+ decipher.setAuthTag(authTag);
273
+ const decrypted = Buffer.concat([
274
+ decipher.update(encrypted),
275
+ decipher.final(),
276
+ ]);
277
+ return new node_ecies_lib_1.SecureBuffer(decrypted);
278
+ }
279
+ catch {
280
+ throw new i18n_lib_1.HandleableError(new Error(suite_core_lib_1.SuiteCoreStringKey.Validation_InvalidCredentials));
281
+ }
282
+ finally {
283
+ try {
284
+ pwdBuffer.fill(0);
285
+ }
286
+ catch {
287
+ // ignore
288
+ }
289
+ passwordKeySecure.dispose();
290
+ }
291
+ }
292
+ }
293
+ exports.KeyWrappingService = KeyWrappingService;
294
+ // In-flight de-duplication map to share PBKDF2 work across concurrent identical requests
295
+ // Store a promise of the raw master key bytes, so each caller can get an independent SecureBuffer
296
+ KeyWrappingService.inFlightUnwraps = new Map();
297
+ //# sourceMappingURL=keyWrapping.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"keyWrapping.js","sourceRoot":"","sources":["../../../../../brightchain-api-lib/src/lib/services/keyWrapping.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ import { WebSocket } from 'ws';
2
+ import { EventNotificationSystem } from './eventNotificationSystem';
3
+ /**
4
+ * WebSocket handler for message event subscriptions
5
+ * Integrates EventNotificationSystem with WebSocket server
6
+ */
7
+ export declare class MessageEventsWebSocketHandler {
8
+ private readonly eventSystem;
9
+ constructor(eventSystem: EventNotificationSystem);
10
+ /**
11
+ * Handle new WebSocket connection for event subscriptions
12
+ */
13
+ handleConnection(ws: WebSocket): void;
14
+ }
15
+ //# sourceMappingURL=messageEventsWebSocketHandler.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"messageEventsWebSocketHandler.d.ts","sourceRoot":"","sources":["../../../../../brightchain-api-lib/src/lib/services/messageEventsWebSocketHandler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,IAAI,CAAC;AAC/B,OAAO,EAAE,uBAAuB,EAAkC,MAAM,2BAA2B,CAAC;AAEpG;;;GAGG;AACH,qBAAa,6BAA6B;IAC5B,OAAO,CAAC,QAAQ,CAAC,WAAW;gBAAX,WAAW,EAAE,uBAAuB;IAEjE;;OAEG;IACH,gBAAgB,CAAC,EAAE,EAAE,SAAS,GAAG,IAAI;CA4CtC"}
@@ -0,0 +1,59 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.MessageEventsWebSocketHandler = void 0;
4
+ /**
5
+ * WebSocket handler for message event subscriptions
6
+ * Integrates EventNotificationSystem with WebSocket server
7
+ */
8
+ class MessageEventsWebSocketHandler {
9
+ constructor(eventSystem) {
10
+ this.eventSystem = eventSystem;
11
+ }
12
+ /**
13
+ * Handle new WebSocket connection for event subscriptions
14
+ */
15
+ handleConnection(ws) {
16
+ // Subscribe with no filter initially
17
+ this.eventSystem.subscribe(ws);
18
+ // Handle incoming messages for filter updates
19
+ ws.on('message', (data) => {
20
+ try {
21
+ const message = JSON.parse(data.toString());
22
+ if (message.type === 'subscribe') {
23
+ const filter = {
24
+ types: message.eventTypes,
25
+ senderId: message.senderId,
26
+ recipientId: message.recipientId,
27
+ };
28
+ // Unsubscribe and resubscribe with new filter
29
+ this.eventSystem.unsubscribe(ws);
30
+ this.eventSystem.subscribe(ws, filter);
31
+ }
32
+ else if (message.type === 'unsubscribe') {
33
+ this.eventSystem.unsubscribe(ws);
34
+ }
35
+ else if (message.type === 'getHistory') {
36
+ const filter = {
37
+ types: message.eventTypes,
38
+ senderId: message.senderId,
39
+ recipientId: message.recipientId,
40
+ };
41
+ const limit = message.limit || 100;
42
+ const history = this.eventSystem.getEventHistory(filter, limit);
43
+ ws.send(JSON.stringify({ type: 'history', events: history }));
44
+ }
45
+ }
46
+ catch (error) {
47
+ ws.send(JSON.stringify({ type: 'error', message: error.message }));
48
+ }
49
+ });
50
+ // Handle disconnect
51
+ ws.on('close', () => {
52
+ this.eventSystem.unsubscribe(ws);
53
+ });
54
+ // Send confirmation
55
+ ws.send(JSON.stringify({ type: 'connected', message: 'Subscribed to message events' }));
56
+ }
57
+ }
58
+ exports.MessageEventsWebSocketHandler = MessageEventsWebSocketHandler;
59
+ //# sourceMappingURL=messageEventsWebSocketHandler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"messageEventsWebSocketHandler.js","sourceRoot":"","sources":["../../../../../brightchain-api-lib/src/lib/services/messageEventsWebSocketHandler.ts"],"names":[],"mappings":";;;AAGA;;;GAGG;AACH,MAAa,6BAA6B;IACxC,YAA6B,WAAoC;QAApC,gBAAW,GAAX,WAAW,CAAyB;IAAG,CAAC;IAErE;;OAEG;IACH,gBAAgB,CAAC,EAAa;QAC5B,qCAAqC;QACrC,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;QAE/B,8CAA8C;QAC9C,EAAE,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,IAAY,EAAE,EAAE;YAChC,IAAI,CAAC;gBACH,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;gBAE5C,IAAI,OAAO,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;oBACjC,MAAM,MAAM,GAAiB;wBAC3B,KAAK,EAAE,OAAO,CAAC,UAAgC;wBAC/C,QAAQ,EAAE,OAAO,CAAC,QAAQ;wBAC1B,WAAW,EAAE,OAAO,CAAC,WAAW;qBACjC,CAAC;oBAEF,8CAA8C;oBAC9C,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;oBACjC,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;gBACzC,CAAC;qBAAM,IAAI,OAAO,CAAC,IAAI,KAAK,aAAa,EAAE,CAAC;oBAC1C,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;gBACnC,CAAC;qBAAM,IAAI,OAAO,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;oBACzC,MAAM,MAAM,GAAiB;wBAC3B,KAAK,EAAE,OAAO,CAAC,UAAgC;wBAC/C,QAAQ,EAAE,OAAO,CAAC,QAAQ;wBAC1B,WAAW,EAAE,OAAO,CAAC,WAAW;qBACjC,CAAC;oBACF,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,GAAG,CAAC;oBACnC,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,eAAe,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;oBAChE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC;gBAChE,CAAC;YACH,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAG,KAAe,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;YAChF,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,oBAAoB;QACpB,EAAE,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE;YAClB,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;QACnC,CAAC,CAAC,CAAC;QAEH,oBAAoB;QACpB,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,8BAA8B,EAAE,CAAC,CAAC,CAAC;IAC1F,CAAC;CACF;AAlDD,sEAkDC"}
@@ -0,0 +1,31 @@
1
+ import { MessageCBLService, IMessageMetadataStore, IMessageCBLOptions as ICreateMessageOptions } from '@brightchain/brightchain-lib';
2
+ import { EventNotificationSystem } from './eventNotificationSystem';
3
+ import { WebSocketMessageServer } from './webSocketMessageServer';
4
+ /**
5
+ * High-level message passing service coordinating storage, routing, and events
6
+ */
7
+ export declare class MessagePassingService {
8
+ private messageCBL;
9
+ private metadataStore;
10
+ private eventSystem;
11
+ private wsServer;
12
+ constructor(messageCBL: MessageCBLService, metadataStore: IMessageMetadataStore, eventSystem: EventNotificationSystem, wsServer: WebSocketMessageServer);
13
+ /**
14
+ * Send a message
15
+ */
16
+ sendMessage(content: Buffer, senderId: string, options: ICreateMessageOptions): Promise<string>;
17
+ /**
18
+ * Get message content
19
+ */
20
+ getMessage(messageId: string): Promise<Buffer | null>;
21
+ /**
22
+ * Query messages
23
+ */
24
+ queryMessages(query: any): Promise<any>;
25
+ /**
26
+ * Delete message
27
+ */
28
+ deleteMessage(messageId: string): Promise<void>;
29
+ private setupHandlers;
30
+ }
31
+ //# sourceMappingURL=messagePassingService.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"messagePassingService.d.ts","sourceRoot":"","sources":["../../../../../brightchain-api-lib/src/lib/services/messagePassingService.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,iBAAiB,EACjB,qBAAqB,EAErB,kBAAkB,IAAI,qBAAqB,EAC5C,MAAM,8BAA8B,CAAC;AACtC,OAAO,EAAE,uBAAuB,EAAoB,MAAM,2BAA2B,CAAC;AACtF,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAElE;;GAEG;AACH,qBAAa,qBAAqB;IAE9B,OAAO,CAAC,UAAU;IAClB,OAAO,CAAC,aAAa;IACrB,OAAO,CAAC,WAAW;IACnB,OAAO,CAAC,QAAQ;gBAHR,UAAU,EAAE,iBAAiB,EAC7B,aAAa,EAAE,qBAAqB,EACpC,WAAW,EAAE,uBAAuB,EACpC,QAAQ,EAAE,sBAAsB;IAK1C;;OAEG;IACG,WAAW,CACf,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,qBAAqB,GAC7B,OAAO,CAAC,MAAM,CAAC;IA8BlB;;OAEG;IACG,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAK3D;;OAEG;IACG,aAAa,CAAC,KAAK,EAAE,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC;IAI7C;;OAEG;IACG,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IASrD,OAAO,CAAC,aAAa;CA+BtB"}
@@ -0,0 +1,88 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.MessagePassingService = void 0;
4
+ const brightchain_lib_1 = require("@brightchain/brightchain-lib");
5
+ const eventNotificationSystem_1 = require("./eventNotificationSystem");
6
+ /**
7
+ * High-level message passing service coordinating storage, routing, and events
8
+ */
9
+ class MessagePassingService {
10
+ constructor(messageCBL, metadataStore, eventSystem, wsServer) {
11
+ this.messageCBL = messageCBL;
12
+ this.metadataStore = metadataStore;
13
+ this.eventSystem = eventSystem;
14
+ this.wsServer = wsServer;
15
+ this.setupHandlers();
16
+ }
17
+ /**
18
+ * Send a message
19
+ */
20
+ async sendMessage(content, senderId, options) {
21
+ const { messageId } = await this.messageCBL.createMessage(new Uint8Array(content), senderId, options);
22
+ const metadata = await this.messageCBL.getMessageMetadata(messageId);
23
+ if (metadata) {
24
+ this.eventSystem.emit(eventNotificationSystem_1.MessageEventType.MESSAGE_STORED, metadata);
25
+ // Route to recipients
26
+ if (options.recipients && options.recipients.length > 0) {
27
+ for (const recipientId of options.recipients) {
28
+ await this.wsServer.sendToNode(recipientId, messageId);
29
+ await this.metadataStore.updateDeliveryStatus(messageId, recipientId, brightchain_lib_1.MessageDeliveryStatus.IN_TRANSIT);
30
+ }
31
+ }
32
+ else {
33
+ // Broadcast
34
+ this.wsServer.broadcast(messageId);
35
+ }
36
+ }
37
+ return messageId;
38
+ }
39
+ /**
40
+ * Get message content
41
+ */
42
+ async getMessage(messageId) {
43
+ const content = await this.messageCBL.getMessageContent(messageId);
44
+ return content ? Buffer.from(content) : null;
45
+ }
46
+ /**
47
+ * Query messages
48
+ */
49
+ async queryMessages(query) {
50
+ return this.metadataStore.queryMessages(query);
51
+ }
52
+ /**
53
+ * Delete message
54
+ */
55
+ async deleteMessage(messageId) {
56
+ const metadata = await this.messageCBL.getMessageMetadata(messageId);
57
+ if (metadata && metadata.cblBlockIds) {
58
+ for (const blockId of metadata.cblBlockIds) {
59
+ await this.messageCBL['blockStore'].deleteBlock(blockId);
60
+ }
61
+ }
62
+ }
63
+ setupHandlers() {
64
+ this.wsServer.onMessage(async (nodeId, messageId) => {
65
+ const metadata = await this.messageCBL.getMessageMetadata(messageId);
66
+ if (metadata) {
67
+ this.eventSystem.emit(eventNotificationSystem_1.MessageEventType.MESSAGE_RECEIVED, metadata);
68
+ await this.wsServer.sendToNode(nodeId, messageId);
69
+ }
70
+ });
71
+ this.wsServer.onAck(async (nodeId, messageId, status) => {
72
+ await this.metadataStore.recordAcknowledgment(messageId, nodeId, new Date());
73
+ await this.metadataStore.updateDeliveryStatus(messageId, nodeId, status);
74
+ const metadata = await this.messageCBL.getMessageMetadata(messageId);
75
+ if (metadata) {
76
+ const allDelivered = metadata.recipients?.every((r) => metadata.deliveryStatus?.get(r) === brightchain_lib_1.MessageDeliveryStatus.DELIVERED);
77
+ if (allDelivered) {
78
+ this.eventSystem.emit(eventNotificationSystem_1.MessageEventType.MESSAGE_DELIVERED, metadata);
79
+ }
80
+ else if (status === brightchain_lib_1.MessageDeliveryStatus.FAILED) {
81
+ this.eventSystem.emit(eventNotificationSystem_1.MessageEventType.MESSAGE_FAILED, metadata);
82
+ }
83
+ }
84
+ });
85
+ }
86
+ }
87
+ exports.MessagePassingService = MessagePassingService;
88
+ //# sourceMappingURL=messagePassingService.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"messagePassingService.js","sourceRoot":"","sources":["../../../../../brightchain-api-lib/src/lib/services/messagePassingService.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,79 @@
1
+ /**
2
+ * @file NativeRsFecService - Native Reed-Solomon FEC implementation
3
+ * @description Provides hardware-accelerated FEC operations using native Rust bindings.
4
+ * This implementation is optimized for Apple Silicon and other supported platforms.
5
+ *
6
+ * @requirements 1.8, 4.5, 4.6
7
+ */
8
+ import { FecRecoveryResult, IFecService, ParityData } from '@brightchain/brightchain-lib';
9
+ /**
10
+ * Native Reed-Solomon FEC Service using @digitaldefiance/node-rs-accelerate.
11
+ *
12
+ * This service provides hardware-accelerated FEC operations for platforms
13
+ * that support native Rust bindings, particularly Apple Silicon.
14
+ *
15
+ * If the native library is not available, isAvailable() will return false
16
+ * and the FecServiceFactory should fall back to WasmFecService.
17
+ */
18
+ export declare class NativeRsFecService implements IFecService {
19
+ private nativeModule;
20
+ private availabilityChecked;
21
+ private isAvailableResult;
22
+ /**
23
+ * Check if the native FEC service is available.
24
+ *
25
+ * This checks for:
26
+ * 1. The @digitaldefiance/node-rs-accelerate package being installed
27
+ * 2. Native bindings being available for the current platform
28
+ * 3. Apple Silicon or other supported hardware
29
+ *
30
+ * @returns Promise resolving to true if native FEC is available
31
+ */
32
+ isAvailable(): Promise<boolean>;
33
+ /**
34
+ * Attempt to load the native Reed-Solomon module.
35
+ * @returns The native module or null if not available
36
+ */
37
+ private loadNativeModule;
38
+ /**
39
+ * Ensure the native module is loaded and available.
40
+ * @throws FecError if native module is not available
41
+ */
42
+ private ensureAvailable;
43
+ /**
44
+ * Create parity data for a block using native Reed-Solomon encoding.
45
+ *
46
+ * @param blockData - The original block data to create parity for
47
+ * @param parityCount - Number of parity shards to generate
48
+ * @returns Promise resolving to array of parity data objects
49
+ * @throws FecError if encoding fails or native module is not available
50
+ */
51
+ createParityData(blockData: Buffer | Uint8Array, parityCount: number): Promise<ParityData[]>;
52
+ /**
53
+ * Recover block data using parity data with native decoding.
54
+ *
55
+ * @param corruptedData - The corrupted block data, or null if completely missing
56
+ * @param parityData - Array of available parity data objects
57
+ * @param originalSize - The original size of the block data in bytes
58
+ * @returns Promise resolving to recovery result with recovered data
59
+ * @throws FecError if recovery fails or native module is not available
60
+ */
61
+ recoverFileData(_corruptedData: Buffer | Uint8Array | null, parityData: ParityData[], originalSize: number): Promise<FecRecoveryResult>;
62
+ /**
63
+ * Verify block integrity against its parity data using native operations.
64
+ *
65
+ * @param blockData - The block data to verify
66
+ * @param parityData - The stored parity data to verify against
67
+ * @returns Promise resolving to true if the block is intact
68
+ */
69
+ verifyFileIntegrity(blockData: Buffer | Uint8Array, parityData: ParityData[]): Promise<boolean>;
70
+ /**
71
+ * Native Reed-Solomon encoding.
72
+ */
73
+ private nativeEncode;
74
+ /**
75
+ * Native Reed-Solomon decoding.
76
+ */
77
+ private nativeDecode;
78
+ }
79
+ //# sourceMappingURL=nativeRsFecService.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nativeRsFecService.d.ts","sourceRoot":"","sources":["../../../../../brightchain-api-lib/src/lib/services/nativeRsFecService.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAGL,iBAAiB,EACjB,WAAW,EACX,UAAU,EACX,MAAM,8BAA8B,CAAC;AAGtC;;;;;;;;GAQG;AACH,qBAAa,kBAAmB,YAAW,WAAW;IACpD,OAAO,CAAC,YAAY,CAA+B;IACnD,OAAO,CAAC,mBAAmB,CAAS;IACpC,OAAO,CAAC,iBAAiB,CAAS;IAElC;;;;;;;;;OASG;IACG,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;IAoBrC;;;OAGG;YACW,gBAAgB;IAc9B;;;OAGG;YACW,eAAe;IAU7B;;;;;;;OAOG;IACG,gBAAgB,CACpB,SAAS,EAAE,MAAM,GAAG,UAAU,EAC9B,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,UAAU,EAAE,CAAC;IAuExB;;;;;;;;OAQG;IACG,eAAe,CACnB,cAAc,EAAE,MAAM,GAAG,UAAU,GAAG,IAAI,EAC1C,UAAU,EAAE,UAAU,EAAE,EACxB,YAAY,EAAE,MAAM,GACnB,OAAO,CAAC,iBAAiB,CAAC;IAwE7B;;;;;;OAMG;IACG,mBAAmB,CACvB,SAAS,EAAE,MAAM,GAAG,UAAU,EAC9B,UAAU,EAAE,UAAU,EAAE,GACvB,OAAO,CAAC,OAAO,CAAC;IAiBnB;;OAEG;YACW,YAAY;IA+C1B;;OAEG;YACW,YAAY;CA4C3B"}