@brightchain/brightchain-lib 0.30.1 → 0.31.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (344) hide show
  1. package/README.md +34 -5
  2. package/package.json +4 -4
  3. package/src/browser.d.ts +7 -0
  4. package/src/browser.d.ts.map +1 -1
  5. package/src/browser.js +21 -1
  6. package/src/browser.js.map +1 -1
  7. package/src/lib/asset/assetAccount.d.ts +66 -0
  8. package/src/lib/asset/assetAccount.d.ts.map +1 -0
  9. package/src/lib/asset/assetAccount.js +192 -0
  10. package/src/lib/asset/assetAccount.js.map +1 -0
  11. package/src/lib/asset/formatAssetAmount.d.ts +30 -0
  12. package/src/lib/asset/formatAssetAmount.d.ts.map +1 -0
  13. package/src/lib/asset/formatAssetAmount.js +54 -0
  14. package/src/lib/asset/formatAssetAmount.js.map +1 -0
  15. package/src/lib/asset/index.d.ts +11 -0
  16. package/src/lib/asset/index.d.ts.map +1 -0
  17. package/src/lib/asset/index.js +14 -0
  18. package/src/lib/asset/index.js.map +1 -0
  19. package/src/lib/asset/jouleConstants.d.ts +21 -0
  20. package/src/lib/asset/jouleConstants.d.ts.map +1 -0
  21. package/src/lib/asset/jouleConstants.js +24 -0
  22. package/src/lib/asset/jouleConstants.js.map +1 -0
  23. package/src/lib/asset/microunits.d.ts +19 -0
  24. package/src/lib/asset/microunits.d.ts.map +1 -0
  25. package/src/lib/asset/microunits.js +36 -0
  26. package/src/lib/asset/microunits.js.map +1 -0
  27. package/src/lib/constants.d.ts +3 -1
  28. package/src/lib/constants.d.ts.map +1 -1
  29. package/src/lib/constants.js +23 -1
  30. package/src/lib/constants.js.map +1 -1
  31. package/src/lib/db/driverBackedHeadRegistry.d.ts +42 -0
  32. package/src/lib/db/driverBackedHeadRegistry.d.ts.map +1 -0
  33. package/src/lib/db/driverBackedHeadRegistry.js +146 -0
  34. package/src/lib/db/driverBackedHeadRegistry.js.map +1 -0
  35. package/src/lib/db/headRegistryGossipTransport.d.ts +74 -0
  36. package/src/lib/db/headRegistryGossipTransport.d.ts.map +1 -0
  37. package/src/lib/db/headRegistryGossipTransport.js +153 -0
  38. package/src/lib/db/headRegistryGossipTransport.js.map +1 -0
  39. package/src/lib/db/inMemoryHeadRegistry.d.ts +9 -0
  40. package/src/lib/db/inMemoryHeadRegistry.d.ts.map +1 -1
  41. package/src/lib/db/inMemoryHeadRegistry.js +48 -0
  42. package/src/lib/db/inMemoryHeadRegistry.js.map +1 -1
  43. package/src/lib/db/inMemoryHeadRegistryDriver.d.ts +13 -0
  44. package/src/lib/db/inMemoryHeadRegistryDriver.d.ts.map +1 -0
  45. package/src/lib/db/inMemoryHeadRegistryDriver.js +24 -0
  46. package/src/lib/db/inMemoryHeadRegistryDriver.js.map +1 -0
  47. package/src/lib/db/index.d.ts +3 -0
  48. package/src/lib/db/index.d.ts.map +1 -1
  49. package/src/lib/db/index.js +3 -0
  50. package/src/lib/db/index.js.map +1 -1
  51. package/src/lib/energyAccount.d.ts +15 -62
  52. package/src/lib/energyAccount.d.ts.map +1 -1
  53. package/src/lib/energyAccount.js +20 -118
  54. package/src/lib/energyAccount.js.map +1 -1
  55. package/src/lib/enumerations/brightChainStrings.d.ts +123 -0
  56. package/src/lib/enumerations/brightChainStrings.d.ts.map +1 -1
  57. package/src/lib/enumerations/brightChainStrings.js +130 -0
  58. package/src/lib/enumerations/brightChainStrings.js.map +1 -1
  59. package/src/lib/enumerations/difficultyTier.d.ts +20 -0
  60. package/src/lib/enumerations/difficultyTier.d.ts.map +1 -0
  61. package/src/lib/enumerations/difficultyTier.js +25 -0
  62. package/src/lib/enumerations/difficultyTier.js.map +1 -0
  63. package/src/lib/enumerations/index.d.ts +2 -1
  64. package/src/lib/enumerations/index.d.ts.map +1 -1
  65. package/src/lib/enumerations/index.js +3 -1
  66. package/src/lib/enumerations/index.js.map +1 -1
  67. package/src/lib/errors/asset/assetUnknownError.d.ts +12 -0
  68. package/src/lib/errors/asset/assetUnknownError.d.ts.map +1 -0
  69. package/src/lib/errors/asset/assetUnknownError.js +21 -0
  70. package/src/lib/errors/asset/assetUnknownError.js.map +1 -0
  71. package/src/lib/errors/asset/index.d.ts +13 -0
  72. package/src/lib/errors/asset/index.d.ts.map +1 -0
  73. package/src/lib/errors/asset/index.js +16 -0
  74. package/src/lib/errors/asset/index.js.map +1 -0
  75. package/src/lib/errors/asset/insufficientAvailableBalanceError.d.ts +13 -0
  76. package/src/lib/errors/asset/insufficientAvailableBalanceError.d.ts.map +1 -0
  77. package/src/lib/errors/asset/insufficientAvailableBalanceError.js +25 -0
  78. package/src/lib/errors/asset/insufficientAvailableBalanceError.js.map +1 -0
  79. package/src/lib/errors/asset/invalidAmountError.d.ts +11 -0
  80. package/src/lib/errors/asset/invalidAmountError.d.ts.map +1 -0
  81. package/src/lib/errors/asset/invalidAmountError.js +20 -0
  82. package/src/lib/errors/asset/invalidAmountError.js.map +1 -0
  83. package/src/lib/errors/asset/ledgerAlreadyAttachedError.d.ts +11 -0
  84. package/src/lib/errors/asset/ledgerAlreadyAttachedError.d.ts.map +1 -0
  85. package/src/lib/errors/asset/ledgerAlreadyAttachedError.js +19 -0
  86. package/src/lib/errors/asset/ledgerAlreadyAttachedError.js.map +1 -0
  87. package/src/lib/errors/asset/mixedAssetError.d.ts +12 -0
  88. package/src/lib/errors/asset/mixedAssetError.d.ts.map +1 -0
  89. package/src/lib/errors/asset/mixedAssetError.js +22 -0
  90. package/src/lib/errors/asset/mixedAssetError.js.map +1 -0
  91. package/src/lib/errors/asset/reservationExpiredError.d.ts +13 -0
  92. package/src/lib/errors/asset/reservationExpiredError.d.ts.map +1 -0
  93. package/src/lib/errors/asset/reservationExpiredError.js +24 -0
  94. package/src/lib/errors/asset/reservationExpiredError.js.map +1 -0
  95. package/src/lib/errors/asset/reservationNotFoundError.d.ts +11 -0
  96. package/src/lib/errors/asset/reservationNotFoundError.d.ts.map +1 -0
  97. package/src/lib/errors/asset/reservationNotFoundError.js +20 -0
  98. package/src/lib/errors/asset/reservationNotFoundError.js.map +1 -0
  99. package/src/lib/errors/encryptionErrors.d.ts.map +1 -1
  100. package/src/lib/errors/encryptionErrors.js.map +1 -1
  101. package/src/lib/errors/friendsServiceError.d.ts.map +1 -1
  102. package/src/lib/errors/friendsServiceError.js.map +1 -1
  103. package/src/lib/errors/index.d.ts +18 -0
  104. package/src/lib/errors/index.d.ts.map +1 -1
  105. package/src/lib/errors/index.js +21 -0
  106. package/src/lib/errors/index.js.map +1 -1
  107. package/src/lib/i18n/strings/englishUs.d.ts.map +1 -1
  108. package/src/lib/i18n/strings/englishUs.js +131 -1
  109. package/src/lib/i18n/strings/englishUs.js.map +1 -1
  110. package/src/lib/i18n/strings/french.d.ts.map +1 -1
  111. package/src/lib/i18n/strings/french.js +133 -3
  112. package/src/lib/i18n/strings/french.js.map +1 -1
  113. package/src/lib/i18n/strings/german.d.ts.map +1 -1
  114. package/src/lib/i18n/strings/german.js +131 -1
  115. package/src/lib/i18n/strings/german.js.map +1 -1
  116. package/src/lib/i18n/strings/japanese.d.ts.map +1 -1
  117. package/src/lib/i18n/strings/japanese.js +131 -1
  118. package/src/lib/i18n/strings/japanese.js.map +1 -1
  119. package/src/lib/i18n/strings/mandarin.d.ts.map +1 -1
  120. package/src/lib/i18n/strings/mandarin.js +131 -1
  121. package/src/lib/i18n/strings/mandarin.js.map +1 -1
  122. package/src/lib/i18n/strings/spanish.d.ts.map +1 -1
  123. package/src/lib/i18n/strings/spanish.js +131 -1
  124. package/src/lib/i18n/strings/spanish.js.map +1 -1
  125. package/src/lib/i18n/strings/ukrainian.d.ts.map +1 -1
  126. package/src/lib/i18n/strings/ukrainian.js +131 -1
  127. package/src/lib/i18n/strings/ukrainian.js.map +1 -1
  128. package/src/lib/index.d.ts +36 -1
  129. package/src/lib/index.d.ts.map +1 -1
  130. package/src/lib/index.js +48 -1
  131. package/src/lib/index.js.map +1 -1
  132. package/src/lib/interfaces/appSubsystemPlugin.d.ts +6 -1
  133. package/src/lib/interfaces/appSubsystemPlugin.d.ts.map +1 -1
  134. package/src/lib/interfaces/assetAccount.d.ts +91 -0
  135. package/src/lib/interfaces/assetAccount.d.ts.map +1 -0
  136. package/src/lib/interfaces/assetAccount.js +3 -0
  137. package/src/lib/interfaces/assetAccount.js.map +1 -0
  138. package/src/lib/interfaces/brightpass/vaultEntry.d.ts +38 -0
  139. package/src/lib/interfaces/brightpass/vaultEntry.d.ts.map +1 -1
  140. package/src/lib/interfaces/brightpass/vaultMetadata.d.ts +11 -0
  141. package/src/lib/interfaces/brightpass/vaultMetadata.d.ts.map +1 -1
  142. package/src/lib/interfaces/communication/chatStorageProvider.d.ts +1 -1
  143. package/src/lib/interfaces/communication/chatStorageProvider.d.ts.map +1 -1
  144. package/src/lib/interfaces/communication/index.d.ts +2 -0
  145. package/src/lib/interfaces/communication/index.d.ts.map +1 -1
  146. package/src/lib/interfaces/communication/index.js +2 -0
  147. package/src/lib/interfaces/communication/index.js.map +1 -1
  148. package/src/lib/interfaces/communication/server.d.ts +8 -0
  149. package/src/lib/interfaces/communication/server.d.ts.map +1 -1
  150. package/src/lib/interfaces/communication/serverIconConfig.d.ts +32 -0
  151. package/src/lib/interfaces/communication/serverIconConfig.d.ts.map +1 -0
  152. package/src/lib/interfaces/communication/serverIconConfig.js +35 -0
  153. package/src/lib/interfaces/communication/serverIconConfig.js.map +1 -0
  154. package/src/lib/interfaces/communication/serverIconRequest.d.ts +12 -0
  155. package/src/lib/interfaces/communication/serverIconRequest.d.ts.map +1 -0
  156. package/src/lib/interfaces/communication/serverIconRequest.js +3 -0
  157. package/src/lib/interfaces/communication/serverIconRequest.js.map +1 -0
  158. package/src/lib/interfaces/constants.d.ts +14 -0
  159. package/src/lib/interfaces/constants.d.ts.map +1 -1
  160. package/src/lib/interfaces/energyAccount.d.ts +13 -34
  161. package/src/lib/interfaces/energyAccount.d.ts.map +1 -1
  162. package/src/lib/interfaces/energyTransaction.d.ts +25 -6
  163. package/src/lib/interfaces/energyTransaction.d.ts.map +1 -1
  164. package/src/lib/interfaces/identity/brightChainIdentity.d.ts +29 -0
  165. package/src/lib/interfaces/identity/brightChainIdentity.d.ts.map +1 -0
  166. package/src/lib/interfaces/identity/brightChainIdentity.js +3 -0
  167. package/src/lib/interfaces/identity/brightChainIdentity.js.map +1 -0
  168. package/src/lib/interfaces/identity/index.d.ts +1 -0
  169. package/src/lib/interfaces/identity/index.d.ts.map +1 -1
  170. package/src/lib/interfaces/index.d.ts +5 -0
  171. package/src/lib/interfaces/index.d.ts.map +1 -1
  172. package/src/lib/interfaces/index.js +8 -0
  173. package/src/lib/interfaces/index.js.map +1 -1
  174. package/src/lib/interfaces/messaging/attachmentMetadata.d.ts +12 -0
  175. package/src/lib/interfaces/messaging/attachmentMetadata.d.ts.map +1 -1
  176. package/src/lib/interfaces/messaging/emailMetadata.d.ts +55 -0
  177. package/src/lib/interfaces/messaging/emailMetadata.d.ts.map +1 -1
  178. package/src/lib/interfaces/messaging/emailMetadata.js.map +1 -1
  179. package/src/lib/interfaces/pouw/challengeToken.d.ts +20 -0
  180. package/src/lib/interfaces/pouw/challengeToken.d.ts.map +1 -0
  181. package/src/lib/interfaces/pouw/challengeToken.js +3 -0
  182. package/src/lib/interfaces/pouw/challengeToken.js.map +1 -0
  183. package/src/lib/interfaces/pouw/index.d.ts +8 -0
  184. package/src/lib/interfaces/pouw/index.d.ts.map +1 -0
  185. package/src/lib/interfaces/pouw/index.js +12 -0
  186. package/src/lib/interfaces/pouw/index.js.map +1 -0
  187. package/src/lib/interfaces/pouw/pouwConfig.d.ts +91 -0
  188. package/src/lib/interfaces/pouw/pouwConfig.d.ts.map +1 -0
  189. package/src/lib/interfaces/pouw/pouwConfig.js +24 -0
  190. package/src/lib/interfaces/pouw/pouwConfig.js.map +1 -0
  191. package/src/lib/interfaces/pouw/pouwMetrics.d.ts +23 -0
  192. package/src/lib/interfaces/pouw/pouwMetrics.d.ts.map +1 -0
  193. package/src/lib/interfaces/pouw/pouwMetrics.js +3 -0
  194. package/src/lib/interfaces/pouw/pouwMetrics.js.map +1 -0
  195. package/src/lib/interfaces/pouw/workResult.d.ts +19 -0
  196. package/src/lib/interfaces/pouw/workResult.d.ts.map +1 -0
  197. package/src/lib/interfaces/pouw/workResult.js +3 -0
  198. package/src/lib/interfaces/pouw/workResult.js.map +1 -0
  199. package/src/lib/interfaces/pouw/workUnit.d.ts +48 -0
  200. package/src/lib/interfaces/pouw/workUnit.d.ts.map +1 -0
  201. package/src/lib/interfaces/pouw/workUnit.js +14 -0
  202. package/src/lib/interfaces/pouw/workUnit.js.map +1 -0
  203. package/src/lib/interfaces/responses/adminDashboardResponse.d.ts +7 -0
  204. package/src/lib/interfaces/responses/adminDashboardResponse.d.ts.map +1 -1
  205. package/src/lib/interfaces/responses/communicationResponses.d.ts +2 -0
  206. package/src/lib/interfaces/responses/communicationResponses.d.ts.map +1 -1
  207. package/src/lib/interfaces/responses/identityResponseData.d.ts +10 -0
  208. package/src/lib/interfaces/responses/identityResponseData.d.ts.map +1 -0
  209. package/src/lib/interfaces/responses/identityResponseData.js +3 -0
  210. package/src/lib/interfaces/responses/identityResponseData.js.map +1 -0
  211. package/src/lib/interfaces/responses/index.d.ts +1 -0
  212. package/src/lib/interfaces/responses/index.d.ts.map +1 -1
  213. package/src/lib/interfaces/staging/commitRequest.d.ts +28 -0
  214. package/src/lib/interfaces/staging/commitRequest.d.ts.map +1 -0
  215. package/src/lib/interfaces/staging/commitRequest.js +3 -0
  216. package/src/lib/interfaces/staging/commitRequest.js.map +1 -0
  217. package/src/lib/interfaces/staging/commitResponse.d.ts +17 -0
  218. package/src/lib/interfaces/staging/commitResponse.d.ts.map +1 -0
  219. package/src/lib/interfaces/staging/commitResponse.js +3 -0
  220. package/src/lib/interfaces/staging/commitResponse.js.map +1 -0
  221. package/src/lib/interfaces/staging/index.d.ts +7 -0
  222. package/src/lib/interfaces/staging/index.d.ts.map +1 -0
  223. package/src/lib/interfaces/staging/index.js +6 -0
  224. package/src/lib/interfaces/staging/index.js.map +1 -0
  225. package/src/lib/interfaces/staging/processingParams.d.ts +16 -0
  226. package/src/lib/interfaces/staging/processingParams.d.ts.map +1 -0
  227. package/src/lib/interfaces/staging/processingParams.js +3 -0
  228. package/src/lib/interfaces/staging/processingParams.js.map +1 -0
  229. package/src/lib/interfaces/staging/stagedFileRecord.d.ts +23 -0
  230. package/src/lib/interfaces/staging/stagedFileRecord.d.ts.map +1 -0
  231. package/src/lib/interfaces/staging/stagedFileRecord.js +3 -0
  232. package/src/lib/interfaces/staging/stagedFileRecord.js.map +1 -0
  233. package/src/lib/interfaces/staging/stagingConfig.d.ts +19 -0
  234. package/src/lib/interfaces/staging/stagingConfig.d.ts.map +1 -0
  235. package/src/lib/interfaces/staging/stagingConfig.js +11 -0
  236. package/src/lib/interfaces/staging/stagingConfig.js.map +1 -0
  237. package/src/lib/interfaces/staging/tempUploadResponse.d.ts +19 -0
  238. package/src/lib/interfaces/staging/tempUploadResponse.d.ts.map +1 -0
  239. package/src/lib/interfaces/staging/tempUploadResponse.js +3 -0
  240. package/src/lib/interfaces/staging/tempUploadResponse.js.map +1 -0
  241. package/src/lib/interfaces/storage/blockStore.d.ts +22 -4
  242. package/src/lib/interfaces/storage/blockStore.d.ts.map +1 -1
  243. package/src/lib/interfaces/storage/headRegistry.d.ts +38 -0
  244. package/src/lib/interfaces/storage/headRegistry.d.ts.map +1 -1
  245. package/src/lib/interfaces/storage/headRegistryDriver.d.ts +47 -0
  246. package/src/lib/interfaces/storage/headRegistryDriver.d.ts.map +1 -0
  247. package/src/lib/interfaces/storage/headRegistryDriver.js +15 -0
  248. package/src/lib/interfaces/storage/headRegistryDriver.js.map +1 -0
  249. package/src/lib/interfaces/storage/index.d.ts +1 -0
  250. package/src/lib/interfaces/storage/index.d.ts.map +1 -1
  251. package/src/lib/interfaces/storage/index.js.map +1 -1
  252. package/src/lib/joule/formatJoule.d.ts +44 -0
  253. package/src/lib/joule/formatJoule.d.ts.map +1 -0
  254. package/src/lib/joule/formatJoule.js +121 -0
  255. package/src/lib/joule/formatJoule.js.map +1 -0
  256. package/src/lib/joule/index.d.ts +10 -0
  257. package/src/lib/joule/index.d.ts.map +1 -0
  258. package/src/lib/joule/index.js +13 -0
  259. package/src/lib/joule/index.js.map +1 -0
  260. package/src/lib/joule/jouleConstants.d.ts +13 -0
  261. package/src/lib/joule/jouleConstants.d.ts.map +1 -0
  262. package/src/lib/joule/jouleConstants.js +18 -0
  263. package/src/lib/joule/jouleConstants.js.map +1 -0
  264. package/src/lib/joule/rateTable.d.ts +55 -0
  265. package/src/lib/joule/rateTable.d.ts.map +1 -0
  266. package/src/lib/joule/rateTable.js +58 -0
  267. package/src/lib/joule/rateTable.js.map +1 -0
  268. package/src/lib/joule/resourceClass.d.ts +18 -0
  269. package/src/lib/joule/resourceClass.d.ts.map +1 -0
  270. package/src/lib/joule/resourceClass.js +28 -0
  271. package/src/lib/joule/resourceClass.js.map +1 -0
  272. package/src/lib/operationCost.d.ts +12 -7
  273. package/src/lib/operationCost.d.ts.map +1 -1
  274. package/src/lib/operationCost.js +11 -4
  275. package/src/lib/operationCost.js.map +1 -1
  276. package/src/lib/pouw/computeWorkUnit.d.ts +41 -0
  277. package/src/lib/pouw/computeWorkUnit.d.ts.map +1 -0
  278. package/src/lib/pouw/computeWorkUnit.js +92 -0
  279. package/src/lib/pouw/computeWorkUnit.js.map +1 -0
  280. package/src/lib/pouw/index.d.ts +8 -0
  281. package/src/lib/pouw/index.d.ts.map +1 -0
  282. package/src/lib/pouw/index.js +12 -0
  283. package/src/lib/pouw/index.js.map +1 -0
  284. package/src/lib/serializers/index.d.ts +2 -0
  285. package/src/lib/serializers/index.d.ts.map +1 -0
  286. package/src/lib/serializers/index.js +10 -0
  287. package/src/lib/serializers/index.js.map +1 -0
  288. package/src/lib/serializers/workUnitSerializer.d.ts +39 -0
  289. package/src/lib/serializers/workUnitSerializer.d.ts.map +1 -0
  290. package/src/lib/serializers/workUnitSerializer.js +150 -0
  291. package/src/lib/serializers/workUnitSerializer.js.map +1 -0
  292. package/src/lib/services/communication/__tests__/mockChatStorageProvider.d.ts +1 -1
  293. package/src/lib/services/communication/__tests__/mockChatStorageProvider.d.ts.map +1 -1
  294. package/src/lib/services/communication/__tests__/mockChatStorageProvider.js +5 -3
  295. package/src/lib/services/communication/__tests__/mockChatStorageProvider.js.map +1 -1
  296. package/src/lib/services/communication/__tests__/mockStorageProvider.d.ts +6 -0
  297. package/src/lib/services/communication/__tests__/mockStorageProvider.d.ts.map +1 -0
  298. package/src/lib/services/communication/__tests__/mockStorageProvider.js +41 -0
  299. package/src/lib/services/communication/__tests__/mockStorageProvider.js.map +1 -0
  300. package/src/lib/services/communication/channelService.d.ts +1 -1
  301. package/src/lib/services/communication/channelService.d.ts.map +1 -1
  302. package/src/lib/services/communication/channelService.js +2 -2
  303. package/src/lib/services/communication/channelService.js.map +1 -1
  304. package/src/lib/services/communication/conversationService.d.ts +1 -1
  305. package/src/lib/services/communication/conversationService.d.ts.map +1 -1
  306. package/src/lib/services/communication/conversationService.js +2 -2
  307. package/src/lib/services/communication/conversationService.js.map +1 -1
  308. package/src/lib/services/communication/groupService.d.ts +1 -1
  309. package/src/lib/services/communication/groupService.d.ts.map +1 -1
  310. package/src/lib/services/communication/groupService.js +2 -2
  311. package/src/lib/services/communication/groupService.js.map +1 -1
  312. package/src/lib/services/communication/rehydrationHelpers.d.ts.map +1 -1
  313. package/src/lib/services/communication/rehydrationHelpers.js +1 -2
  314. package/src/lib/services/communication/rehydrationHelpers.js.map +1 -1
  315. package/src/lib/services/communication/serverService.d.ts +13 -115
  316. package/src/lib/services/communication/serverService.d.ts.map +1 -1
  317. package/src/lib/services/communication/serverService.js +91 -235
  318. package/src/lib/services/communication/serverService.js.map +1 -1
  319. package/src/lib/services/copyOnWrite.service.d.ts.map +1 -1
  320. package/src/lib/services/copyOnWrite.service.js +1 -2
  321. package/src/lib/services/copyOnWrite.service.js.map +1 -1
  322. package/src/lib/services/messaging/emailMessageService.d.ts +89 -0
  323. package/src/lib/services/messaging/emailMessageService.d.ts.map +1 -1
  324. package/src/lib/services/messaging/emailMessageService.js +207 -28
  325. package/src/lib/services/messaging/emailMessageService.js.map +1 -1
  326. package/src/lib/services/messaging/emailParser.d.ts.map +1 -1
  327. package/src/lib/services/messaging/emailParser.js +1 -0
  328. package/src/lib/services/messaging/emailParser.js.map +1 -1
  329. package/src/lib/stores/assetAccountStore.d.ts +102 -0
  330. package/src/lib/stores/assetAccountStore.d.ts.map +1 -0
  331. package/src/lib/stores/assetAccountStore.js +276 -0
  332. package/src/lib/stores/assetAccountStore.js.map +1 -0
  333. package/src/lib/stores/blockStoreAdapter.d.ts +2 -0
  334. package/src/lib/stores/blockStoreAdapter.d.ts.map +1 -1
  335. package/src/lib/stores/blockStoreAdapter.js +3 -0
  336. package/src/lib/stores/blockStoreAdapter.js.map +1 -1
  337. package/src/lib/stores/energyAccountStore.d.ts +22 -36
  338. package/src/lib/stores/energyAccountStore.d.ts.map +1 -1
  339. package/src/lib/stores/energyAccountStore.js +33 -63
  340. package/src/lib/stores/energyAccountStore.js.map +1 -1
  341. package/src/lib/stores/memoryBlockStore.d.ts +16 -1
  342. package/src/lib/stores/memoryBlockStore.d.ts.map +1 -1
  343. package/src/lib/stores/memoryBlockStore.js +42 -6
  344. package/src/lib/stores/memoryBlockStore.js.map +1 -1
@@ -18,6 +18,7 @@
18
18
  * Requirements: 1.1-1.10
19
19
  */
20
20
  import { MessageEncryptionScheme } from '../../enumerations/messaging/messageEncryptionScheme';
21
+ import { SpamClassification } from '../../enumerations/messaging/spamClassification';
21
22
  import type { IGossipService } from '../../interfaces/availability/gossipService';
22
23
  import type { IAttachmentMetadata } from '../../interfaces/messaging/attachmentMetadata';
23
24
  import type { IMailbox } from '../../interfaces/messaging/emailAddress';
@@ -98,6 +99,18 @@ export interface IEmailServiceConfig {
98
99
  * @see Requirement 3.2
99
100
  */
100
101
  nodeId: string;
102
+ /**
103
+ * When `true`, all recipients (including those whose domain matches
104
+ * `canonicalDomain`) are treated as external and routed through the
105
+ * registered `ExternalEmailDispatcher` (e.g. SES / Postfix).
106
+ *
107
+ * Use this when the canonical domain is served by a real SMTP provider
108
+ * (such as AWS SES) rather than by BrightChain gossip delivery, so that
109
+ * same-domain users actually receive their email.
110
+ *
111
+ * @default false
112
+ */
113
+ relayAllRecipientsExternally: boolean;
101
114
  }
102
115
  /**
103
116
  * Default configuration values for EmailMessageService.
@@ -147,6 +160,18 @@ export interface IEmailInput {
147
160
  htmlBody?: string;
148
161
  /** Custom headers (X-* and other extension headers) */
149
162
  customHeaders?: Map<string, string[]>;
163
+ /**
164
+ * Digital Burnbag vault container ID for email attachments.
165
+ * Pre-populated by InboundProcessor after creating a private vault.
166
+ * Stored in IEmailMetadata so the UI can construct per-attachment download links.
167
+ */
168
+ vaultContainerId?: string;
169
+ /** Mail folder for this email (e.g. 'inbox', 'spam'). Defaults to 'inbox'. */
170
+ folder?: string;
171
+ /** Spam score from anti-spam engine (e.g. SpamAssassin). */
172
+ spamScore?: number;
173
+ /** Spam classification derived from score vs. configured thresholds. */
174
+ spamClassification?: SpamClassification;
150
175
  /**
151
176
  * Encryption scheme to use for this email.
152
177
  * - NONE: No encryption (default)
@@ -245,6 +270,12 @@ export interface IAttachmentInput {
245
270
  contentId?: string;
246
271
  /** Whether this is an inline attachment (e.g., embedded image) */
247
272
  inline?: boolean;
273
+ /**
274
+ * Digital Burnbag vault file ID for this attachment.
275
+ * Pre-populated by InboundProcessor after uploading to a private vault.
276
+ * Stored in the resulting IAttachmentMetadata for UI download links.
277
+ */
278
+ vaultFileId?: string;
248
279
  }
249
280
  /**
250
281
  * Result of sending an email.
@@ -315,6 +346,12 @@ export interface IInboxQuery {
315
346
  subjectContains?: string;
316
347
  /** Full-text search across subject and body */
317
348
  searchText?: string;
349
+ /** Filter by folder (e.g. 'inbox', 'spam', 'sent'). */
350
+ folder?: string;
351
+ /** Filter by label/keyword tags. */
352
+ labels?: string[];
353
+ /** Filter by starred status. */
354
+ isStarred?: boolean;
318
355
  /** Sort field */
319
356
  sortBy?: 'date' | 'sender' | 'subject' | 'size';
320
357
  /** Sort direction */
@@ -439,12 +476,43 @@ export interface IEmailMetadataStore {
439
476
  * });
440
477
  * ```
441
478
  */
479
+ /**
480
+ * Callback invoked once per `sendEmail` when external recipients are present.
481
+ * Implementations are responsible for relaying the message to a real
482
+ * outbound email transport (e.g. SES, Postfix). Local recipients (matching
483
+ * `canonicalDomain`) are filtered out by `EmailMessageService` before this
484
+ * callback fires.
485
+ *
486
+ * Recipients are exposed split by header field so the dispatcher can preserve
487
+ * RFC 5322 envelope semantics (To/CC are visible to all recipients; BCC is
488
+ * not). When no external recipients exist for a given field, that array is
489
+ * empty.
490
+ */
491
+ export type ExternalEmailDispatcher = (input: {
492
+ messageId: string;
493
+ from: IMailbox;
494
+ externalTo: IMailbox[];
495
+ externalCc: IMailbox[];
496
+ externalBcc: IMailbox[];
497
+ subject: string;
498
+ textBody?: string;
499
+ htmlBody?: string;
500
+ }) => Promise<void> | void;
442
501
  export declare class EmailMessageService {
443
502
  private readonly messageCBLService;
444
503
  private readonly metadataStore;
445
504
  private readonly gossipService;
446
505
  private readonly config;
506
+ private externalDispatcher?;
447
507
  constructor(messageCBLService: MessageCBLService, metadataStore: IEmailMetadataStore, gossipService: IGossipService, config?: Partial<IEmailServiceConfig>);
508
+ /**
509
+ * Register a dispatcher that delivers messages destined for recipients
510
+ * outside the canonical domain to a real outbound email transport
511
+ * (e.g. SES, Postfix). The dispatcher is invoked once per `sendEmail`
512
+ * when at least one external recipient exists, with local recipients
513
+ * already filtered out.
514
+ */
515
+ setExternalDispatcher(dispatcher: ExternalEmailDispatcher | undefined): void;
448
516
  /**
449
517
  * Sends an email message.
450
518
  *
@@ -474,6 +542,20 @@ export declare class EmailMessageService {
474
542
  * @see Requirement 15.4 - Auto-generate required headers
475
543
  */
476
544
  sendEmail(email: IEmailInput): Promise<ISendEmailResult>;
545
+ /**
546
+ * Store an inbound email received from an external source.
547
+ *
548
+ * Identical to `sendEmail` up through metadata construction and storage,
549
+ * but deliberately skips the external-dispatch step so that inbound
550
+ * messages are never relayed back out through SES / Postfix.
551
+ *
552
+ * Use this from the InboundProcessor instead of `sendEmail()` to avoid
553
+ * creating a relay loop.
554
+ *
555
+ * @param email - Parsed inbound email input
556
+ * @returns Send result with messageId and brightchainMessageId
557
+ */
558
+ receiveEmail(email: IEmailInput): Promise<ISendEmailResult>;
477
559
  /**
478
560
  * Retrieves email metadata by Message-ID.
479
561
  *
@@ -628,6 +710,13 @@ export declare class EmailMessageService {
628
710
  * @see Requirement 1.1 — detect external recipients
629
711
  */
630
712
  private isExternalMailbox;
713
+ /**
714
+ * Collect all external recipients (To + CC + BCC) and hand them to the
715
+ * configured outbound dispatcher. Local recipients (matching
716
+ * `canonicalDomain`) are filtered out. Errors from the dispatcher are
717
+ * caught and logged so they cannot fail the BrightMail send pipeline.
718
+ */
719
+ private dispatchExternalRecipients;
631
720
  /**
632
721
  * Partition an array of mailboxes into internal (canonical domain) and
633
722
  * external (non-canonical domain) groups.
@@ -1 +1 @@
1
- {"version":3,"file":"emailMessageService.d.ts","sourceRoot":"","sources":["../../../../../../brightchain-lib/src/lib/services/messaging/emailMessageService.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"emailMessageService.d.ts","sourceRoot":"","sources":["../../../../../../brightchain-lib/src/lib/services/messaging/emailMessageService.ts"],"names":[],"mappings":"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"}
@@ -47,46 +47,30 @@ exports.DEFAULT_EMAIL_SERVICE_CONFIG = {
47
47
  maxRetryAttempts: 3,
48
48
  deliveryTimeoutMs: 24 * 60 * 60 * 1000, // 24 hours
49
49
  nodeId: 'localhost',
50
+ relayAllRecipientsExternally: false,
50
51
  };
51
- // ─── EmailMessageService Class ──────────────────────────────────────────────
52
- /**
53
- * Main service for email operations in the BrightChain messaging system.
54
- *
55
- * Coordinates parsing, validation, storage, and delivery of RFC 5322
56
- * compliant email messages. This service acts as the primary entry point
57
- * for all email-related operations.
58
- *
59
- * @see Design Document: EmailMessageService Class
60
- * @see Requirements 1.1-1.10
61
- *
62
- * @example
63
- * ```typescript
64
- * const emailService = new EmailMessageService(
65
- * messageCBLService,
66
- * metadataStore,
67
- * gossipService,
68
- * config,
69
- * );
70
- *
71
- * const result = await emailService.sendEmail({
72
- * from: createMailbox('sender', 'example.com'),
73
- * to: [createMailbox('recipient', 'example.com')],
74
- * subject: 'Hello',
75
- * textBody: 'Hello, World!',
76
- * });
77
- * ```
78
- */
79
52
  class EmailMessageService {
80
53
  messageCBLService;
81
54
  metadataStore;
82
55
  gossipService;
83
56
  config;
57
+ externalDispatcher;
84
58
  constructor(messageCBLService, metadataStore, gossipService, config) {
85
59
  this.messageCBLService = messageCBLService;
86
60
  this.metadataStore = metadataStore;
87
61
  this.gossipService = gossipService;
88
62
  this.config = { ...exports.DEFAULT_EMAIL_SERVICE_CONFIG, ...config };
89
63
  }
64
+ /**
65
+ * Register a dispatcher that delivers messages destined for recipients
66
+ * outside the canonical domain to a real outbound email transport
67
+ * (e.g. SES, Postfix). The dispatcher is invoked once per `sendEmail`
68
+ * when at least one external recipient exists, with local recipients
69
+ * already filtered out.
70
+ */
71
+ setExternalDispatcher(dispatcher) {
72
+ this.externalDispatcher = dispatcher;
73
+ }
90
74
  // ─── Core Operations ────────────────────────────────────────────────
91
75
  /**
92
76
  * Sends an email message.
@@ -215,6 +199,8 @@ class EmailMessageService {
215
199
  contentType,
216
200
  customHeaders: email.customHeaders ?? new Map(),
217
201
  parts: email.parts,
202
+ textBody: email.textBody,
203
+ htmlBody: email.htmlBody,
218
204
  attachments: undefined,
219
205
  deliveryReceipts: new Map(),
220
206
  readReceipts: new Map(),
@@ -251,6 +237,16 @@ class EmailMessageService {
251
237
  metadata.isSigned = result.encryptionMetadata.isSigned;
252
238
  metadata.contentSignature = result.encryptionMetadata.signature;
253
239
  metadata.signerPublicKey = result.encryptionMetadata.signerPublicKey;
240
+ // Store the encrypted bytes and clear plaintext for security
241
+ metadata.encryptedBody = result.encryptedContent;
242
+ metadata.textBody = undefined;
243
+ metadata.htmlBody = undefined;
244
+ if (metadata.parts) {
245
+ metadata.parts = metadata.parts.map((p) => ({
246
+ ...p,
247
+ body: undefined,
248
+ }));
249
+ }
254
250
  }
255
251
  else if (email.encryptionScheme === messageEncryptionScheme_1.MessageEncryptionScheme.SHARED_KEY) {
256
252
  // Symmetric encryption with shared key
@@ -260,6 +256,16 @@ class EmailMessageService {
260
256
  const result = await encryptionService.encryptContentSymmetric(bodyContent, email.sharedKey);
261
257
  metadata.encryptionIv = result.encryptionMetadata.iv;
262
258
  metadata.encryptionAuthTag = result.encryptionMetadata.authTag;
259
+ // Store the encrypted bytes and clear plaintext for security
260
+ metadata.encryptedBody = result.encryptedContent;
261
+ metadata.textBody = undefined;
262
+ metadata.htmlBody = undefined;
263
+ if (metadata.parts) {
264
+ metadata.parts = metadata.parts.map((p) => ({
265
+ ...p,
266
+ body: undefined,
267
+ }));
268
+ }
263
269
  // Optionally sign
264
270
  if (email.senderPrivateKey && email.senderPublicKey) {
265
271
  const sig = await encryptionService.signContent(bodyContent, email.senderPrivateKey, email.senderPublicKey);
@@ -299,6 +305,16 @@ class EmailMessageService {
299
305
  metadata.signerPublicKey =
300
306
  result.encryptionMetadata.signerPublicKey;
301
307
  }
308
+ // Store the encrypted bytes and clear plaintext for security
309
+ metadata.encryptedBody = result.encryptedContent;
310
+ metadata.textBody = undefined;
311
+ metadata.htmlBody = undefined;
312
+ if (metadata.parts) {
313
+ metadata.parts = metadata.parts.map((p) => ({
314
+ ...p,
315
+ body: undefined,
316
+ }));
317
+ }
302
318
  }
303
319
  else if (!email.signMessage) {
304
320
  // Fallback to legacy S/MIME stub if no real certs provided
@@ -317,6 +333,16 @@ class EmailMessageService {
317
333
  metadata.contentSignature = result.encryptionMetadata.signature;
318
334
  metadata.signerPublicKey =
319
335
  result.encryptionMetadata.signerPublicKey;
336
+ // Store the encrypted bytes and clear plaintext for security
337
+ metadata.encryptedBody = result.encryptedContent;
338
+ metadata.textBody = undefined;
339
+ metadata.htmlBody = undefined;
340
+ if (metadata.parts) {
341
+ metadata.parts = metadata.parts.map((p) => ({
342
+ ...p,
343
+ body: undefined,
344
+ }));
345
+ }
320
346
  }
321
347
  }
322
348
  else if (email.encryptionScheme === messageEncryptionScheme_1.MessageEncryptionScheme.GPG) {
@@ -350,6 +376,16 @@ class EmailMessageService {
350
376
  metadata.signerPublicKey =
351
377
  result.encryptionMetadata.signerPublicKey;
352
378
  }
379
+ // Store the encrypted bytes and clear plaintext for security
380
+ metadata.encryptedBody = result.encryptedContent;
381
+ metadata.textBody = undefined;
382
+ metadata.htmlBody = undefined;
383
+ if (metadata.parts) {
384
+ metadata.parts = metadata.parts.map((p) => ({
385
+ ...p,
386
+ body: undefined,
387
+ }));
388
+ }
353
389
  }
354
390
  else {
355
391
  throw new emailError_1.EmailError(emailErrorType_1.EmailErrorType.ENCRYPTION_FAILED, 'Recipient GPG public keys are required for GPG encryption');
@@ -451,6 +487,7 @@ class EmailMessageService {
451
487
  catch (err) {
452
488
  // Delivery errors are non-fatal - the email is stored, delivery can be retried
453
489
  // Return success with empty delivery status
490
+ await this.dispatchExternalRecipients(email, messageId);
454
491
  return {
455
492
  messageId,
456
493
  brightchainMessageId,
@@ -459,6 +496,9 @@ class EmailMessageService {
459
496
  error: `Delivery initiation failed: ${err instanceof Error ? err.message : String(err)}`,
460
497
  };
461
498
  }
499
+ // 5c. Hand off external recipients to the configured outbound transport
500
+ // (e.g. SES). Local recipients are filtered out by canonicalDomain.
501
+ await this.dispatchExternalRecipients(email, messageId);
462
502
  // 6. Return result — gossip delivery is fire-and-forget; acks come later via gossip
463
503
  return {
464
504
  messageId,
@@ -467,6 +507,105 @@ class EmailMessageService {
467
507
  success: true,
468
508
  };
469
509
  }
510
+ /**
511
+ * Store an inbound email received from an external source.
512
+ *
513
+ * Identical to `sendEmail` up through metadata construction and storage,
514
+ * but deliberately skips the external-dispatch step so that inbound
515
+ * messages are never relayed back out through SES / Postfix.
516
+ *
517
+ * Use this from the InboundProcessor instead of `sendEmail()` to avoid
518
+ * creating a relay loop.
519
+ *
520
+ * @param email - Parsed inbound email input
521
+ * @returns Send result with messageId and brightchainMessageId
522
+ */
523
+ async receiveEmail(email) {
524
+ const messageId = email.messageId ?? this.generateMessageId();
525
+ const date = email.date ?? new Date();
526
+ const brightchainMessageId = this.generateMessageId();
527
+ const now = new Date();
528
+ const allRecipientAddresses = [
529
+ ...(email.to ?? []).map((m) => m.address),
530
+ ...(email.cc ?? []).map((m) => m.address),
531
+ ...(email.bcc ?? []).map((m) => m.address),
532
+ ];
533
+ const contentType = email.contentType ??
534
+ (0, mimePart_1.createContentType)('text', 'plain', new Map([['charset', 'us-ascii']]));
535
+ const metadata = {
536
+ blockId: brightchainMessageId,
537
+ createdAt: now,
538
+ expiresAt: null,
539
+ durabilityLevel: durabilityLevel_1.DurabilityLevel.Standard,
540
+ parityBlockIds: [],
541
+ accessCount: 0,
542
+ lastAccessedAt: now,
543
+ replicationStatus: replicationStatus_1.ReplicationStatus.Pending,
544
+ targetReplicationFactor: 0,
545
+ replicaNodeIds: [],
546
+ size: (email.textBody ? new TextEncoder().encode(email.textBody).length : 0) +
547
+ (email.htmlBody ? new TextEncoder().encode(email.htmlBody).length : 0) +
548
+ (email.attachments
549
+ ? email.attachments.reduce((sum, a) => sum + a.content.length, 0)
550
+ : 0),
551
+ checksum: '',
552
+ messageType: 'email',
553
+ senderId: email.from.address,
554
+ recipients: allRecipientAddresses,
555
+ priority: messagePriority_1.MessagePriority.NORMAL,
556
+ deliveryStatus: new Map(allRecipientAddresses.map((addr) => [addr, deliveryStatus_1.DeliveryStatus.Pending])),
557
+ acknowledgments: new Map(),
558
+ encryptionScheme: messageEncryptionScheme_1.MessageEncryptionScheme.NONE,
559
+ isCBL: false,
560
+ cblBlockIds: [brightchainMessageId],
561
+ from: email.from,
562
+ sender: email.sender,
563
+ replyTo: email.replyTo,
564
+ to: email.to ?? [],
565
+ cc: email.cc,
566
+ bcc: email.bcc,
567
+ messageId,
568
+ inReplyTo: email.inReplyTo,
569
+ references: email.references,
570
+ subject: email.subject,
571
+ date,
572
+ mimeVersion: '1.0',
573
+ contentType,
574
+ customHeaders: email.customHeaders ?? new Map(),
575
+ parts: email.parts,
576
+ textBody: email.textBody,
577
+ htmlBody: email.htmlBody,
578
+ vaultContainerId: email.vaultContainerId,
579
+ folder: email.folder ?? 'inbox',
580
+ spamScore: email.spamScore,
581
+ spamClassification: email.spamClassification,
582
+ isStarred: false,
583
+ attachments: undefined,
584
+ deliveryReceipts: new Map(),
585
+ readReceipts: new Map(),
586
+ };
587
+ if (email.attachments && email.attachments.length > 0) {
588
+ metadata.attachments = await Promise.all(email.attachments.map((attachment) => this.storeAttachment(attachment)));
589
+ }
590
+ try {
591
+ await this.metadataStore.store(metadata);
592
+ }
593
+ catch (err) {
594
+ return {
595
+ messageId,
596
+ brightchainMessageId,
597
+ deliveryStatus: new Map(),
598
+ success: false,
599
+ error: `Failed to store inbound email metadata: ${err instanceof Error ? err.message : String(err)}`,
600
+ };
601
+ }
602
+ return {
603
+ messageId,
604
+ brightchainMessageId,
605
+ deliveryStatus: new Map(),
606
+ success: true,
607
+ };
608
+ }
470
609
  /**
471
610
  * Retrieves email metadata by Message-ID.
472
611
  *
@@ -938,10 +1077,49 @@ class EmailMessageService {
938
1077
  * @see Requirement 1.1 — detect external recipients
939
1078
  */
940
1079
  isExternalMailbox(mailbox) {
1080
+ if (this.config.relayAllRecipientsExternally) {
1081
+ return true;
1082
+ }
941
1083
  const domain = mailbox.domain.toLowerCase();
942
1084
  const canonical = this.config.canonicalDomain.toLowerCase();
943
1085
  return domain !== canonical && !domain.endsWith(`.${canonical}`);
944
1086
  }
1087
+ /**
1088
+ * Collect all external recipients (To + CC + BCC) and hand them to the
1089
+ * configured outbound dispatcher. Local recipients (matching
1090
+ * `canonicalDomain`) are filtered out. Errors from the dispatcher are
1091
+ * caught and logged so they cannot fail the BrightMail send pipeline.
1092
+ */
1093
+ async dispatchExternalRecipients(email, messageId) {
1094
+ if (!this.externalDispatcher) {
1095
+ return;
1096
+ }
1097
+ const externalTo = this.partitionRecipients(email.to ?? []).external;
1098
+ const externalCc = this.partitionRecipients(email.cc ?? []).external;
1099
+ const externalBcc = this.partitionRecipients(email.bcc ?? []).external;
1100
+ if (externalTo.length === 0 &&
1101
+ externalCc.length === 0 &&
1102
+ externalBcc.length === 0) {
1103
+ return;
1104
+ }
1105
+ try {
1106
+ await this.externalDispatcher({
1107
+ messageId,
1108
+ from: email.from,
1109
+ externalTo,
1110
+ externalCc,
1111
+ externalBcc,
1112
+ subject: email.subject ?? '',
1113
+ textBody: email.textBody,
1114
+ htmlBody: email.htmlBody,
1115
+ });
1116
+ }
1117
+ catch (err) {
1118
+ // Outbound transport failures are non-fatal for the BrightMail send.
1119
+ // Log so operators can diagnose; the message is already stored locally.
1120
+ console.error(`[email] external dispatcher failed for messageId=${messageId}:`, err);
1121
+ }
1122
+ }
945
1123
  /**
946
1124
  * Partition an array of mailboxes into internal (canonical domain) and
947
1125
  * external (non-canonical domain) groups.
@@ -1137,6 +1315,7 @@ class EmailMessageService {
1137
1315
  blockIds: [blockId],
1138
1316
  checksum: sha256Checksum,
1139
1317
  contentMd5: md5Checksum,
1318
+ vaultFileId: input.vaultFileId,
1140
1319
  };
1141
1320
  }
1142
1321
  // ─── Message-ID Generation ────────────────────────────────────────────