@brightchain/brightchain-lib 0.18.0 → 0.20.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 (372) hide show
  1. package/package.json +2 -2
  2. package/src/lib/db/aggregation.d.ts +20 -0
  3. package/src/lib/db/aggregation.d.ts.map +1 -0
  4. package/src/lib/db/aggregation.js +407 -0
  5. package/src/lib/db/aggregation.js.map +1 -0
  6. package/src/lib/db/collection.d.ts +315 -0
  7. package/src/lib/db/collection.d.ts.map +1 -0
  8. package/src/lib/db/collection.js +1054 -0
  9. package/src/lib/db/collection.js.map +1 -0
  10. package/src/lib/db/cursor.d.ts +51 -0
  11. package/src/lib/db/cursor.d.ts.map +1 -0
  12. package/src/lib/db/cursor.js +100 -0
  13. package/src/lib/db/cursor.js.map +1 -0
  14. package/src/lib/db/errors.d.ts +83 -0
  15. package/src/lib/db/errors.d.ts.map +1 -0
  16. package/src/lib/db/errors.js +103 -0
  17. package/src/lib/db/errors.js.map +1 -0
  18. package/src/lib/db/inMemoryDatabase.d.ts +135 -0
  19. package/src/lib/db/inMemoryDatabase.d.ts.map +1 -0
  20. package/src/lib/db/inMemoryDatabase.js +258 -0
  21. package/src/lib/db/inMemoryDatabase.js.map +1 -0
  22. package/src/lib/db/inMemoryHeadRegistry.d.ts +33 -0
  23. package/src/lib/db/inMemoryHeadRegistry.d.ts.map +1 -0
  24. package/src/lib/db/inMemoryHeadRegistry.js +83 -0
  25. package/src/lib/db/inMemoryHeadRegistry.js.map +1 -0
  26. package/src/lib/db/index.d.ts +14 -0
  27. package/src/lib/db/index.d.ts.map +1 -0
  28. package/src/lib/db/index.js +18 -0
  29. package/src/lib/db/index.js.map +1 -0
  30. package/src/lib/db/indexing.d.ts +133 -0
  31. package/src/lib/db/indexing.d.ts.map +1 -0
  32. package/src/lib/db/indexing.js +287 -0
  33. package/src/lib/db/indexing.js.map +1 -0
  34. package/src/lib/db/queryEngine.d.ts +50 -0
  35. package/src/lib/db/queryEngine.d.ts.map +1 -0
  36. package/src/lib/db/queryEngine.js +461 -0
  37. package/src/lib/db/queryEngine.js.map +1 -0
  38. package/src/lib/db/schemaValidation.d.ts +41 -0
  39. package/src/lib/db/schemaValidation.d.ts.map +1 -0
  40. package/src/lib/db/schemaValidation.js +322 -0
  41. package/src/lib/db/schemaValidation.js.map +1 -0
  42. package/src/lib/db/transaction.d.ts +88 -0
  43. package/src/lib/db/transaction.d.ts.map +1 -0
  44. package/src/lib/db/transaction.js +112 -0
  45. package/src/lib/db/transaction.js.map +1 -0
  46. package/src/lib/db/types.d.ts +11 -0
  47. package/src/lib/db/types.d.ts.map +1 -0
  48. package/src/lib/db/types.js +11 -0
  49. package/src/lib/db/types.js.map +1 -0
  50. package/src/lib/db/updateEngine.d.ts +20 -0
  51. package/src/lib/db/updateEngine.d.ts.map +1 -0
  52. package/src/lib/db/updateEngine.js +193 -0
  53. package/src/lib/db/updateEngine.js.map +1 -0
  54. package/src/lib/db/uuidGenerator.d.ts +13 -0
  55. package/src/lib/db/uuidGenerator.d.ts.map +1 -0
  56. package/src/lib/db/uuidGenerator.js +34 -0
  57. package/src/lib/db/uuidGenerator.js.map +1 -0
  58. package/src/lib/documents/member/memberProfileHydration.d.ts.map +1 -1
  59. package/src/lib/documents/member/memberProfileHydration.js +6 -0
  60. package/src/lib/documents/member/memberProfileHydration.js.map +1 -1
  61. package/src/lib/enumerations/brightChainStrings.d.ts +39 -0
  62. package/src/lib/enumerations/brightChainStrings.d.ts.map +1 -1
  63. package/src/lib/enumerations/brightChainStrings.js +47 -0
  64. package/src/lib/enumerations/brightChainStrings.js.map +1 -1
  65. package/src/lib/enumerations/identityValidationErrorType.d.ts +11 -0
  66. package/src/lib/enumerations/identityValidationErrorType.d.ts.map +1 -0
  67. package/src/lib/enumerations/identityValidationErrorType.js +15 -0
  68. package/src/lib/enumerations/identityValidationErrorType.js.map +1 -0
  69. package/src/lib/enumerations/index.d.ts +4 -0
  70. package/src/lib/enumerations/index.d.ts.map +1 -1
  71. package/src/lib/enumerations/index.js +5 -0
  72. package/src/lib/enumerations/index.js.map +1 -1
  73. package/src/lib/enumerations/memberStatusType.d.ts +2 -1
  74. package/src/lib/enumerations/memberStatusType.d.ts.map +1 -1
  75. package/src/lib/enumerations/memberStatusType.js +1 -0
  76. package/src/lib/enumerations/memberStatusType.js.map +1 -1
  77. package/src/lib/enumerations/proposalActionType.d.ts +22 -0
  78. package/src/lib/enumerations/proposalActionType.d.ts.map +1 -0
  79. package/src/lib/enumerations/proposalActionType.js +26 -0
  80. package/src/lib/enumerations/proposalActionType.js.map +1 -0
  81. package/src/lib/enumerations/proposalStatus.d.ts +14 -0
  82. package/src/lib/enumerations/proposalStatus.d.ts.map +1 -0
  83. package/src/lib/enumerations/proposalStatus.js +18 -0
  84. package/src/lib/enumerations/proposalStatus.js.map +1 -0
  85. package/src/lib/enumerations/quorumErrorType.d.ts +30 -1
  86. package/src/lib/enumerations/quorumErrorType.d.ts.map +1 -1
  87. package/src/lib/enumerations/quorumErrorType.js +37 -0
  88. package/src/lib/enumerations/quorumErrorType.js.map +1 -1
  89. package/src/lib/enumerations/quorumOperationalMode.d.ts +16 -0
  90. package/src/lib/enumerations/quorumOperationalMode.d.ts.map +1 -0
  91. package/src/lib/enumerations/quorumOperationalMode.js +20 -0
  92. package/src/lib/enumerations/quorumOperationalMode.js.map +1 -0
  93. package/src/lib/enumerations/sealingErrorType.d.ts +3 -1
  94. package/src/lib/enumerations/sealingErrorType.d.ts.map +1 -1
  95. package/src/lib/enumerations/sealingErrorType.js +2 -0
  96. package/src/lib/enumerations/sealingErrorType.js.map +1 -1
  97. package/src/lib/errors/identityValidationError.d.ts +8 -0
  98. package/src/lib/errors/identityValidationError.d.ts.map +1 -0
  99. package/src/lib/errors/identityValidationError.js +26 -0
  100. package/src/lib/errors/identityValidationError.js.map +1 -0
  101. package/src/lib/errors/index.d.ts +4 -0
  102. package/src/lib/errors/index.d.ts.map +1 -1
  103. package/src/lib/errors/index.js +7 -0
  104. package/src/lib/errors/index.js.map +1 -1
  105. package/src/lib/errors/memberIndexSchemaValidationError.d.ts +6 -0
  106. package/src/lib/errors/memberIndexSchemaValidationError.d.ts.map +1 -0
  107. package/src/lib/errors/memberIndexSchemaValidationError.js +15 -0
  108. package/src/lib/errors/memberIndexSchemaValidationError.js.map +1 -0
  109. package/src/lib/errors/quorumError.d.ts.map +1 -1
  110. package/src/lib/errors/quorumError.js +37 -0
  111. package/src/lib/errors/quorumError.js.map +1 -1
  112. package/src/lib/errors/sealingError.d.ts.map +1 -1
  113. package/src/lib/errors/sealingError.js +2 -0
  114. package/src/lib/errors/sealingError.js.map +1 -1
  115. package/src/lib/i18n/strings/englishUs.d.ts.map +1 -1
  116. package/src/lib/i18n/strings/englishUs.js +45 -0
  117. package/src/lib/i18n/strings/englishUs.js.map +1 -1
  118. package/src/lib/i18n/strings/french.d.ts.map +1 -1
  119. package/src/lib/i18n/strings/french.js +37 -0
  120. package/src/lib/i18n/strings/french.js.map +1 -1
  121. package/src/lib/i18n/strings/german.d.ts.map +1 -1
  122. package/src/lib/i18n/strings/german.js +37 -0
  123. package/src/lib/i18n/strings/german.js.map +1 -1
  124. package/src/lib/i18n/strings/japanese.d.ts.map +1 -1
  125. package/src/lib/i18n/strings/japanese.js +37 -0
  126. package/src/lib/i18n/strings/japanese.js.map +1 -1
  127. package/src/lib/i18n/strings/mandarin.d.ts.map +1 -1
  128. package/src/lib/i18n/strings/mandarin.js +37 -0
  129. package/src/lib/i18n/strings/mandarin.js.map +1 -1
  130. package/src/lib/i18n/strings/spanish.d.ts.map +1 -1
  131. package/src/lib/i18n/strings/spanish.js +37 -0
  132. package/src/lib/i18n/strings/spanish.js.map +1 -1
  133. package/src/lib/i18n/strings/ukrainian.d.ts.map +1 -1
  134. package/src/lib/i18n/strings/ukrainian.js +37 -0
  135. package/src/lib/i18n/strings/ukrainian.js.map +1 -1
  136. package/src/lib/index.d.ts +12 -0
  137. package/src/lib/index.d.ts.map +1 -1
  138. package/src/lib/index.js +55 -1
  139. package/src/lib/index.js.map +1 -1
  140. package/src/lib/interfaces/aliasRecord.d.ts +34 -0
  141. package/src/lib/interfaces/aliasRecord.d.ts.map +1 -0
  142. package/src/lib/interfaces/aliasRecord.js +11 -0
  143. package/src/lib/interfaces/aliasRecord.js.map +1 -0
  144. package/src/lib/interfaces/api/index.d.ts +2 -0
  145. package/src/lib/interfaces/api/index.d.ts.map +1 -0
  146. package/src/lib/interfaces/api/index.js +5 -0
  147. package/src/lib/interfaces/api/index.js.map +1 -0
  148. package/src/lib/interfaces/api/quorumApi.d.ts +97 -0
  149. package/src/lib/interfaces/api/quorumApi.d.ts.map +1 -0
  150. package/src/lib/interfaces/api/quorumApi.js +12 -0
  151. package/src/lib/interfaces/api/quorumApi.js.map +1 -0
  152. package/src/lib/interfaces/auditLogEntry.d.ts +34 -0
  153. package/src/lib/interfaces/auditLogEntry.d.ts.map +1 -0
  154. package/src/lib/interfaces/auditLogEntry.js +10 -0
  155. package/src/lib/interfaces/auditLogEntry.js.map +1 -0
  156. package/src/lib/interfaces/availability/gossipService.d.ts +116 -2
  157. package/src/lib/interfaces/availability/gossipService.d.ts.map +1 -1
  158. package/src/lib/interfaces/availability/gossipService.js +62 -0
  159. package/src/lib/interfaces/availability/gossipService.js.map +1 -1
  160. package/src/lib/interfaces/chainedAuditLogEntry.d.ts +27 -0
  161. package/src/lib/interfaces/chainedAuditLogEntry.d.ts.map +1 -0
  162. package/src/lib/interfaces/chainedAuditLogEntry.js +12 -0
  163. package/src/lib/interfaces/chainedAuditLogEntry.js.map +1 -0
  164. package/src/lib/interfaces/contentWithIdentity.d.ts +39 -0
  165. package/src/lib/interfaces/contentWithIdentity.d.ts.map +1 -0
  166. package/src/lib/interfaces/contentWithIdentity.js +24 -0
  167. package/src/lib/interfaces/contentWithIdentity.js.map +1 -0
  168. package/src/lib/interfaces/energyAccount.d.ts +3 -1
  169. package/src/lib/interfaces/energyAccount.d.ts.map +1 -1
  170. package/src/lib/interfaces/identityRecoveryRecord.d.ts +41 -0
  171. package/src/lib/interfaces/identityRecoveryRecord.d.ts.map +1 -0
  172. package/src/lib/interfaces/identityRecoveryRecord.js +11 -0
  173. package/src/lib/interfaces/identityRecoveryRecord.js.map +1 -0
  174. package/src/lib/interfaces/index.d.ts +17 -0
  175. package/src/lib/interfaces/index.d.ts.map +1 -1
  176. package/src/lib/interfaces/index.js +4 -0
  177. package/src/lib/interfaces/index.js.map +1 -1
  178. package/src/lib/interfaces/initResult.d.ts +6 -6
  179. package/src/lib/interfaces/initResult.d.ts.map +1 -1
  180. package/src/lib/interfaces/member/brightChainBaseInitResult.d.ts +4 -1
  181. package/src/lib/interfaces/member/brightChainBaseInitResult.d.ts.map +1 -1
  182. package/src/lib/interfaces/member/brightChainInitResult.d.ts +1 -1
  183. package/src/lib/interfaces/member/brightChainInitResult.d.ts.map +1 -1
  184. package/src/lib/interfaces/member/memberData.d.ts +3 -0
  185. package/src/lib/interfaces/member/memberData.d.ts.map +1 -1
  186. package/src/lib/interfaces/member/profileStorage.d.ts +5 -0
  187. package/src/lib/interfaces/member/profileStorage.d.ts.map +1 -1
  188. package/src/lib/interfaces/member-init-config.d.ts +20 -0
  189. package/src/lib/interfaces/member-init-config.d.ts.map +1 -0
  190. package/src/lib/interfaces/member-init-config.js +3 -0
  191. package/src/lib/interfaces/member-init-config.js.map +1 -0
  192. package/src/lib/interfaces/operationalState.d.ts +20 -0
  193. package/src/lib/interfaces/operationalState.d.ts.map +1 -0
  194. package/src/lib/interfaces/operationalState.js +10 -0
  195. package/src/lib/interfaces/operationalState.js.map +1 -0
  196. package/src/lib/interfaces/proposal.d.ts +59 -0
  197. package/src/lib/interfaces/proposal.d.ts.map +1 -0
  198. package/src/lib/interfaces/proposal.js +10 -0
  199. package/src/lib/interfaces/proposal.js.map +1 -0
  200. package/src/lib/interfaces/quorumDocumentMetadata.d.ts +20 -0
  201. package/src/lib/interfaces/quorumDocumentMetadata.d.ts.map +1 -0
  202. package/src/lib/interfaces/quorumDocumentMetadata.js +10 -0
  203. package/src/lib/interfaces/quorumDocumentMetadata.js.map +1 -0
  204. package/src/lib/interfaces/quorumEpoch.d.ts +33 -0
  205. package/src/lib/interfaces/quorumEpoch.d.ts.map +1 -0
  206. package/src/lib/interfaces/quorumEpoch.js +11 -0
  207. package/src/lib/interfaces/quorumEpoch.js.map +1 -0
  208. package/src/lib/interfaces/quorumMetrics.d.ts +49 -0
  209. package/src/lib/interfaces/quorumMetrics.d.ts.map +1 -0
  210. package/src/lib/interfaces/quorumMetrics.js +10 -0
  211. package/src/lib/interfaces/quorumMetrics.js.map +1 -0
  212. package/src/lib/interfaces/redistributionJournalEntry.d.ts +25 -0
  213. package/src/lib/interfaces/redistributionJournalEntry.d.ts.map +1 -0
  214. package/src/lib/interfaces/redistributionJournalEntry.js +11 -0
  215. package/src/lib/interfaces/redistributionJournalEntry.js.map +1 -0
  216. package/src/lib/interfaces/responses/backupCodesResponseData.d.ts +3 -5
  217. package/src/lib/interfaces/responses/backupCodesResponseData.d.ts.map +1 -1
  218. package/src/lib/interfaces/responses/challengeResponseData.d.ts +5 -0
  219. package/src/lib/interfaces/responses/challengeResponseData.d.ts.map +1 -1
  220. package/src/lib/interfaces/responses/codeCountResponseData.d.ts +3 -5
  221. package/src/lib/interfaces/responses/codeCountResponseData.d.ts.map +1 -1
  222. package/src/lib/interfaces/responses/index.d.ts +4 -2
  223. package/src/lib/interfaces/responses/index.d.ts.map +1 -1
  224. package/src/lib/interfaces/responses/passwordChangeResponse.d.ts +2 -0
  225. package/src/lib/interfaces/responses/passwordChangeResponse.d.ts.map +1 -0
  226. package/src/lib/interfaces/responses/passwordChangeResponse.js +3 -0
  227. package/src/lib/interfaces/responses/passwordChangeResponse.js.map +1 -0
  228. package/src/lib/interfaces/responses/recoveryResponse.d.ts +2 -0
  229. package/src/lib/interfaces/responses/recoveryResponse.d.ts.map +1 -0
  230. package/src/lib/interfaces/responses/recoveryResponse.js +3 -0
  231. package/src/lib/interfaces/responses/recoveryResponse.js.map +1 -0
  232. package/src/lib/interfaces/responses/registrationResponseData.d.ts +2 -2
  233. package/src/lib/interfaces/responses/registrationResponseData.d.ts.map +1 -1
  234. package/src/lib/interfaces/services/contentIngestion.d.ts +61 -0
  235. package/src/lib/interfaces/services/contentIngestion.d.ts.map +1 -0
  236. package/src/lib/interfaces/services/contentIngestion.js +12 -0
  237. package/src/lib/interfaces/services/contentIngestion.js.map +1 -0
  238. package/src/lib/interfaces/services/expirationScheduler.d.ts +55 -0
  239. package/src/lib/interfaces/services/expirationScheduler.d.ts.map +1 -0
  240. package/src/lib/interfaces/services/expirationScheduler.js +11 -0
  241. package/src/lib/interfaces/services/expirationScheduler.js.map +1 -0
  242. package/src/lib/interfaces/services/identitySealingPipeline.d.ts +56 -0
  243. package/src/lib/interfaces/services/identitySealingPipeline.d.ts.map +1 -0
  244. package/src/lib/interfaces/services/identitySealingPipeline.js +12 -0
  245. package/src/lib/interfaces/services/identitySealingPipeline.js.map +1 -0
  246. package/src/lib/interfaces/services/identityValidator.d.ts +44 -0
  247. package/src/lib/interfaces/services/identityValidator.d.ts.map +1 -0
  248. package/src/lib/interfaces/services/identityValidator.js +11 -0
  249. package/src/lib/interfaces/services/identityValidator.js.map +1 -0
  250. package/src/lib/interfaces/services/index.d.ts +9 -0
  251. package/src/lib/interfaces/services/index.d.ts.map +1 -1
  252. package/src/lib/interfaces/services/membershipProof.d.ts +40 -0
  253. package/src/lib/interfaces/services/membershipProof.d.ts.map +1 -0
  254. package/src/lib/interfaces/services/membershipProof.js +11 -0
  255. package/src/lib/interfaces/services/membershipProof.js.map +1 -0
  256. package/src/lib/interfaces/services/operatorPrompt.d.ts +68 -0
  257. package/src/lib/interfaces/services/operatorPrompt.d.ts.map +1 -0
  258. package/src/lib/interfaces/services/operatorPrompt.js +11 -0
  259. package/src/lib/interfaces/services/operatorPrompt.js.map +1 -0
  260. package/src/lib/interfaces/services/quorumDatabase.d.ts +207 -0
  261. package/src/lib/interfaces/services/quorumDatabase.d.ts.map +1 -0
  262. package/src/lib/interfaces/services/quorumDatabase.js +13 -0
  263. package/src/lib/interfaces/services/quorumDatabase.js.map +1 -0
  264. package/src/lib/interfaces/services/quorumService.d.ts +3 -0
  265. package/src/lib/interfaces/services/quorumService.d.ts.map +1 -1
  266. package/src/lib/interfaces/services/quorumStateMachine.d.ts +128 -0
  267. package/src/lib/interfaces/services/quorumStateMachine.d.ts.map +1 -0
  268. package/src/lib/interfaces/services/quorumStateMachine.js +12 -0
  269. package/src/lib/interfaces/services/quorumStateMachine.js.map +1 -0
  270. package/src/lib/interfaces/services/redistributionConfig.d.ts +20 -0
  271. package/src/lib/interfaces/services/redistributionConfig.d.ts.map +1 -0
  272. package/src/lib/interfaces/services/redistributionConfig.js +10 -0
  273. package/src/lib/interfaces/services/redistributionConfig.js.map +1 -0
  274. package/src/lib/interfaces/statuteConfig.d.ts +22 -0
  275. package/src/lib/interfaces/statuteConfig.d.ts.map +1 -0
  276. package/src/lib/interfaces/statuteConfig.js +18 -0
  277. package/src/lib/interfaces/statuteConfig.js.map +1 -0
  278. package/src/lib/interfaces/storage/documentStore.d.ts +46 -24
  279. package/src/lib/interfaces/storage/documentStore.d.ts.map +1 -1
  280. package/src/lib/interfaces/storage/documentStore.js +6 -2
  281. package/src/lib/interfaces/storage/documentStore.js.map +1 -1
  282. package/src/lib/interfaces/storage/index.d.ts +5 -0
  283. package/src/lib/interfaces/storage/index.d.ts.map +1 -1
  284. package/src/lib/interfaces/storage/index.js.map +1 -1
  285. package/src/lib/interfaces/storage/memberIndexSchema.d.ts +11 -0
  286. package/src/lib/interfaces/storage/memberIndexSchema.d.ts.map +1 -0
  287. package/src/lib/interfaces/storage/memberIndexSchema.js +26 -0
  288. package/src/lib/interfaces/storage/memberIndexSchema.js.map +1 -0
  289. package/src/lib/interfaces/storage/mnemonicSchema.d.ts +10 -0
  290. package/src/lib/interfaces/storage/mnemonicSchema.d.ts.map +1 -0
  291. package/src/lib/interfaces/storage/mnemonicSchema.js +22 -0
  292. package/src/lib/interfaces/storage/mnemonicSchema.js.map +1 -0
  293. package/src/lib/interfaces/storage/roleSchema.d.ts +10 -0
  294. package/src/lib/interfaces/storage/roleSchema.d.ts.map +1 -0
  295. package/src/lib/interfaces/storage/roleSchema.js +45 -0
  296. package/src/lib/interfaces/storage/roleSchema.js.map +1 -0
  297. package/src/lib/interfaces/storage/userRoleSchema.d.ts +10 -0
  298. package/src/lib/interfaces/storage/userRoleSchema.d.ts.map +1 -0
  299. package/src/lib/interfaces/storage/userRoleSchema.js +35 -0
  300. package/src/lib/interfaces/storage/userRoleSchema.js.map +1 -0
  301. package/src/lib/interfaces/storage/userSchema.d.ts +12 -0
  302. package/src/lib/interfaces/storage/userSchema.d.ts.map +1 -0
  303. package/src/lib/interfaces/storage/userSchema.js +62 -0
  304. package/src/lib/interfaces/storage/userSchema.js.map +1 -0
  305. package/src/lib/interfaces/userManagement.d.ts +49 -0
  306. package/src/lib/interfaces/userManagement.d.ts.map +1 -0
  307. package/src/lib/interfaces/userManagement.js +9 -0
  308. package/src/lib/interfaces/userManagement.js.map +1 -0
  309. package/src/lib/interfaces/vote.d.ts +45 -0
  310. package/src/lib/interfaces/vote.d.ts.map +1 -0
  311. package/src/lib/interfaces/vote.js +10 -0
  312. package/src/lib/interfaces/vote.js.map +1 -0
  313. package/src/lib/quorumDataRecord.d.ts +7 -1
  314. package/src/lib/quorumDataRecord.d.ts.map +1 -1
  315. package/src/lib/quorumDataRecord.js +12 -4
  316. package/src/lib/quorumDataRecord.js.map +1 -1
  317. package/src/lib/quorumDataRecordDto.d.ts +6 -0
  318. package/src/lib/quorumDataRecordDto.d.ts.map +1 -1
  319. package/src/lib/services/aliasRegistry.d.ts +77 -0
  320. package/src/lib/services/aliasRegistry.d.ts.map +1 -0
  321. package/src/lib/services/aliasRegistry.js +138 -0
  322. package/src/lib/services/aliasRegistry.js.map +1 -0
  323. package/src/lib/services/auditLogService.d.ts +100 -0
  324. package/src/lib/services/auditLogService.d.ts.map +1 -0
  325. package/src/lib/services/auditLogService.js +223 -0
  326. package/src/lib/services/auditLogService.js.map +1 -0
  327. package/src/lib/services/blockService.d.ts +2 -1
  328. package/src/lib/services/blockService.d.ts.map +1 -1
  329. package/src/lib/services/blockService.js +7 -2
  330. package/src/lib/services/blockService.js.map +1 -1
  331. package/src/lib/services/identitySealingPipeline.d.ts +120 -0
  332. package/src/lib/services/identitySealingPipeline.d.ts.map +1 -0
  333. package/src/lib/services/identitySealingPipeline.js +288 -0
  334. package/src/lib/services/identitySealingPipeline.js.map +1 -0
  335. package/src/lib/services/identityValidator.d.ts +75 -0
  336. package/src/lib/services/identityValidator.d.ts.map +1 -0
  337. package/src/lib/services/identityValidator.js +202 -0
  338. package/src/lib/services/identityValidator.js.map +1 -0
  339. package/src/lib/services/index.d.ts +6 -0
  340. package/src/lib/services/index.d.ts.map +1 -1
  341. package/src/lib/services/index.js +6 -0
  342. package/src/lib/services/index.js.map +1 -1
  343. package/src/lib/services/member/memberCblService.d.ts.map +1 -1
  344. package/src/lib/services/member/memberCblService.js +12 -1
  345. package/src/lib/services/member/memberCblService.js.map +1 -1
  346. package/src/lib/services/memberStore.d.ts.map +1 -1
  347. package/src/lib/services/memberStore.js +2 -0
  348. package/src/lib/services/memberStore.js.map +1 -1
  349. package/src/lib/services/membershipProofService.d.ts +90 -0
  350. package/src/lib/services/membershipProofService.d.ts.map +1 -0
  351. package/src/lib/services/membershipProofService.js +361 -0
  352. package/src/lib/services/membershipProofService.js.map +1 -0
  353. package/src/lib/services/quorumStateMachine.d.ts +336 -0
  354. package/src/lib/services/quorumStateMachine.d.ts.map +1 -0
  355. package/src/lib/services/quorumStateMachine.js +1396 -0
  356. package/src/lib/services/quorumStateMachine.js.map +1 -0
  357. package/src/lib/services/sealing.service.d.ts +80 -0
  358. package/src/lib/services/sealing.service.d.ts.map +1 -1
  359. package/src/lib/services/sealing.service.js +192 -0
  360. package/src/lib/services/sealing.service.js.map +1 -1
  361. package/src/lib/stores/energyAccountStore.d.ts +13 -11
  362. package/src/lib/stores/energyAccountStore.d.ts.map +1 -1
  363. package/src/lib/stores/energyAccountStore.js +18 -20
  364. package/src/lib/stores/energyAccountStore.js.map +1 -1
  365. /package/{BLOCK_COVERAGE_AUDIT.md → brightchain-lib/BLOCK_COVERAGE_AUDIT.md} +0 -0
  366. /package/{BROWSER_COMPAT.md → brightchain-lib/BROWSER_COMPAT.md} +0 -0
  367. /package/{DEPRECATIONS.md → brightchain-lib/DEPRECATIONS.md} +0 -0
  368. /package/{DEPRECATIONS_REMOVED.md → brightchain-lib/DEPRECATIONS_REMOVED.md} +0 -0
  369. /package/{MIGRATION.md → brightchain-lib/MIGRATION.md} +0 -0
  370. /package/{NAMING_AUDIT.md → brightchain-lib/NAMING_AUDIT.md} +0 -0
  371. /package/{NAMING_CONVENTIONS.md → brightchain-lib/NAMING_CONVENTIONS.md} +0 -0
  372. /package/{README.md → brightchain-lib/README.md} +0 -0
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@brightchain/brightchain-lib",
3
- "version": "0.18.0",
3
+ "version": "0.20.0",
4
4
  "description": "BrightChain core library - browser-compatible blockchain storage",
5
5
  "main": "src/index.js",
6
6
  "types": "src/index.d.ts",
@@ -37,7 +37,7 @@
37
37
  "author": "Digital Defiance",
38
38
  "license": "MIT",
39
39
  "dependencies": {
40
- "@digitaldefiance/ecies-lib": "^4.19.5",
40
+ "@digitaldefiance/ecies-lib": "^4.19.6",
41
41
  "@digitaldefiance/i18n-lib": "^4.6.4",
42
42
  "@noble/hashes": "^1.4.0",
43
43
  "nat-pmp": "^1.0.0",
@@ -0,0 +1,20 @@
1
+ /**
2
+ * Aggregation pipeline engine.
3
+ *
4
+ * Supports stages:
5
+ * $match, $group, $sort, $limit, $skip, $project,
6
+ * $unwind, $count, $addFields, $lookup, $replaceRoot, $sample
7
+ */
8
+ import type { AggregationStage } from '@digitaldefiance/suite-core-lib';
9
+ import type { BsonDocument } from '../interfaces/storage/documentTypes';
10
+ type LookupResolver = (collectionName: string) => Promise<BsonDocument[]>;
11
+ /**
12
+ * Run an aggregation pipeline over an array of documents.
13
+ *
14
+ * @param docs - Input documents
15
+ * @param pipeline - Array of aggregation stages
16
+ * @param lookupResolver - Optional resolver for $lookup stages (fetches docs from another collection)
17
+ */
18
+ export declare function runAggregation(docs: BsonDocument[], pipeline: AggregationStage[], lookupResolver?: LookupResolver): Promise<BsonDocument[]>;
19
+ export {};
20
+ //# sourceMappingURL=aggregation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"aggregation.d.ts","sourceRoot":"","sources":["../../../../../brightchain-lib/src/lib/db/aggregation.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EACV,gBAAgB,EAEjB,MAAM,iCAAiC,CAAC;AACzC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qCAAqC,CAAC;AAGxE,KAAK,cAAc,GAAG,CAAC,cAAc,EAAE,MAAM,KAAK,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC;AAE1E;;;;;;GAMG;AACH,wBAAsB,cAAc,CAClC,IAAI,EAAE,YAAY,EAAE,EACpB,QAAQ,EAAE,gBAAgB,EAAE,EAC5B,cAAc,CAAC,EAAE,cAAc,GAC9B,OAAO,CAAC,YAAY,EAAE,CAAC,CAuGzB"}
@@ -0,0 +1,407 @@
1
+ "use strict";
2
+ /**
3
+ * Aggregation pipeline engine.
4
+ *
5
+ * Supports stages:
6
+ * $match, $group, $sort, $limit, $skip, $project,
7
+ * $unwind, $count, $addFields, $lookup, $replaceRoot, $sample
8
+ */
9
+ Object.defineProperty(exports, "__esModule", { value: true });
10
+ exports.runAggregation = runAggregation;
11
+ const queryEngine_1 = require("./queryEngine");
12
+ /**
13
+ * Run an aggregation pipeline over an array of documents.
14
+ *
15
+ * @param docs - Input documents
16
+ * @param pipeline - Array of aggregation stages
17
+ * @param lookupResolver - Optional resolver for $lookup stages (fetches docs from another collection)
18
+ */
19
+ async function runAggregation(docs, pipeline, lookupResolver) {
20
+ let result = [...docs];
21
+ for (const stage of pipeline) {
22
+ const [op] = Object.keys(stage);
23
+ switch (op) {
24
+ case '$match':
25
+ result = stageMatch(result, stage.$match);
26
+ break;
27
+ case '$group':
28
+ result = stageGroup(result, stage.$group);
29
+ break;
30
+ case '$sort':
31
+ result = stageSort(result, stage.$sort);
32
+ break;
33
+ case '$limit':
34
+ result = stageLimit(result, stage.$limit);
35
+ break;
36
+ case '$skip':
37
+ result = stageSkip(result, stage.$skip);
38
+ break;
39
+ case '$project':
40
+ result = stageProject(result, stage.$project);
41
+ break;
42
+ case '$unwind':
43
+ result = stageUnwind(result, stage.$unwind);
44
+ break;
45
+ case '$count':
46
+ result = stageCount(result, stage.$count);
47
+ break;
48
+ case '$addFields':
49
+ result = stageAddFields(result, stage.$addFields);
50
+ break;
51
+ case '$lookup':
52
+ result = await stageLookup(result, stage.$lookup, lookupResolver);
53
+ break;
54
+ case '$replaceRoot':
55
+ result = stageReplaceRoot(result, stage.$replaceRoot);
56
+ break;
57
+ case '$sample':
58
+ result = stageSample(result, stage.$sample);
59
+ break;
60
+ case '$facet':
61
+ result = await stageFacet(result, stage.$facet, lookupResolver);
62
+ break;
63
+ default:
64
+ // Unknown stage – skip
65
+ break;
66
+ }
67
+ }
68
+ return result;
69
+ }
70
+ // ── Stage implementations ──
71
+ function stageMatch(docs, filter) {
72
+ return docs.filter((doc) => (0, queryEngine_1.matchesFilter)(doc, filter));
73
+ }
74
+ function stageSort(docs, sort) {
75
+ return (0, queryEngine_1.sortDocuments)(docs, sort);
76
+ }
77
+ function stageLimit(docs, limit) {
78
+ return docs.slice(0, limit);
79
+ }
80
+ function stageSkip(docs, skip) {
81
+ return docs.slice(skip);
82
+ }
83
+ function stageProject(docs, projection) {
84
+ return docs.map((doc) => {
85
+ const result = {};
86
+ const isInclusion = Object.values(projection).some((v) => v === 1 ||
87
+ v === true ||
88
+ (typeof v === 'object' && v !== null) ||
89
+ (typeof v === 'string' && v.startsWith('$')));
90
+ if (isInclusion) {
91
+ if (projection['_id'] !== 0)
92
+ result['_id'] = doc['_id'];
93
+ for (const [key, spec] of Object.entries(projection)) {
94
+ if (key === '_id')
95
+ continue;
96
+ if (spec === 1 || spec === true) {
97
+ result[key] = getNestedValue(doc, key);
98
+ }
99
+ else if (typeof spec === 'string' && spec.startsWith('$')) {
100
+ // Field reference: $fieldName
101
+ result[key] = getNestedValue(doc, spec.slice(1));
102
+ }
103
+ else if (typeof spec === 'object' && spec !== null) {
104
+ // Expression object – basic support
105
+ result[key] = evaluateExpression(spec, doc);
106
+ }
107
+ }
108
+ }
109
+ else {
110
+ // Exclusion mode
111
+ for (const [k, v] of Object.entries(doc)) {
112
+ if (projection[k] === 0 || projection[k] === false)
113
+ continue;
114
+ result[k] = v;
115
+ }
116
+ }
117
+ return result;
118
+ });
119
+ }
120
+ function stageUnwind(docs, unwindSpec) {
121
+ const path = typeof unwindSpec === 'string' ? unwindSpec : unwindSpec.path;
122
+ const preserveNulls = typeof unwindSpec === 'object' && unwindSpec.preserveNullAndEmptyArrays;
123
+ const fieldPath = path.startsWith('$') ? path.slice(1) : path;
124
+ const result = [];
125
+ for (const doc of docs) {
126
+ const value = getNestedValue(doc, fieldPath);
127
+ if (Array.isArray(value)) {
128
+ if (value.length === 0 && preserveNulls) {
129
+ const unwound = { ...doc };
130
+ setNestedValue(unwound, fieldPath, null);
131
+ result.push(unwound);
132
+ }
133
+ else {
134
+ for (const item of value) {
135
+ const unwound = { ...doc };
136
+ setNestedValue(unwound, fieldPath, item);
137
+ result.push(unwound);
138
+ }
139
+ }
140
+ }
141
+ else if (value === undefined || value === null) {
142
+ if (preserveNulls) {
143
+ result.push({ ...doc });
144
+ }
145
+ }
146
+ else {
147
+ result.push({ ...doc });
148
+ }
149
+ }
150
+ return result;
151
+ }
152
+ function stageCount(docs, countField) {
153
+ return [{ [countField]: docs.length }];
154
+ }
155
+ function stageAddFields(docs, fields) {
156
+ return docs.map((doc) => {
157
+ const result = { ...doc };
158
+ for (const [key, spec] of Object.entries(fields)) {
159
+ if (typeof spec === 'string' && spec.startsWith('$')) {
160
+ result[key] = getNestedValue(doc, spec.slice(1));
161
+ }
162
+ else if (typeof spec === 'object' && spec !== null) {
163
+ result[key] = evaluateExpression(spec, doc);
164
+ }
165
+ else {
166
+ result[key] = spec;
167
+ }
168
+ }
169
+ return result;
170
+ });
171
+ }
172
+ async function stageLookup(docs, lookup, resolver) {
173
+ if (!resolver) {
174
+ // Without a resolver, $lookup is a no-op
175
+ return docs.map((doc) => ({ ...doc, [lookup.as]: [] }));
176
+ }
177
+ const foreignDocs = await resolver(lookup.from);
178
+ return docs.map((doc) => {
179
+ const localVal = getNestedValue(doc, lookup.localField);
180
+ const matched = foreignDocs.filter((fd) => {
181
+ const foreignVal = getNestedValue(fd, lookup.foreignField);
182
+ return deepEq(localVal, foreignVal);
183
+ });
184
+ return { ...doc, [lookup.as]: matched };
185
+ });
186
+ }
187
+ function stageReplaceRoot(docs, spec) {
188
+ return docs.map((doc) => {
189
+ if (typeof spec.newRoot === 'string' && spec.newRoot.startsWith('$')) {
190
+ const val = getNestedValue(doc, spec.newRoot.slice(1));
191
+ if (typeof val === 'object' && val !== null && !Array.isArray(val)) {
192
+ return val;
193
+ }
194
+ return doc;
195
+ }
196
+ // TODO: expression evaluation
197
+ return doc;
198
+ });
199
+ }
200
+ async function stageFacet(docs, facets, lookupResolver) {
201
+ const result = {};
202
+ for (const [name, pipeline] of Object.entries(facets)) {
203
+ result[name] = await runAggregation([...docs], pipeline, lookupResolver);
204
+ }
205
+ return [result];
206
+ }
207
+ function stageSample(docs, spec) {
208
+ const shuffled = [...docs];
209
+ // Fisher-Yates shuffle
210
+ for (let i = shuffled.length - 1; i > 0; i--) {
211
+ const j = Math.floor(Math.random() * (i + 1));
212
+ [shuffled[i], shuffled[j]] = [shuffled[j], shuffled[i]];
213
+ }
214
+ return shuffled.slice(0, spec.size);
215
+ }
216
+ function stageGroup(docs, spec) {
217
+ const idExpr = spec['_id'];
218
+ const groups = new Map();
219
+ for (const doc of docs) {
220
+ const groupKey = resolveGroupId(doc, idExpr);
221
+ const keyStr = JSON.stringify(groupKey);
222
+ if (!groups.has(keyStr)) {
223
+ groups.set(keyStr, []);
224
+ }
225
+ groups.get(keyStr).push(doc);
226
+ }
227
+ const result = [];
228
+ for (const [keyStr, groupDocs] of groups.entries()) {
229
+ const groupId = JSON.parse(keyStr);
230
+ const outputDoc = { _id: groupId };
231
+ for (const [field, accumulator] of Object.entries(spec)) {
232
+ if (field === '_id')
233
+ continue;
234
+ if (typeof accumulator === 'object' && accumulator !== null) {
235
+ const accObj = accumulator;
236
+ const [accOp, accExpr] = Object.entries(accObj)[0] ?? [];
237
+ outputDoc[field] = applyAccumulator(accOp, accExpr, groupDocs);
238
+ }
239
+ }
240
+ result.push(outputDoc);
241
+ }
242
+ return result;
243
+ }
244
+ // ── Helpers ──
245
+ function resolveGroupId(doc, idExpr) {
246
+ if (idExpr === null)
247
+ return null;
248
+ if (typeof idExpr === 'string' && idExpr.startsWith('$')) {
249
+ return getNestedValue(doc, idExpr.slice(1));
250
+ }
251
+ if (typeof idExpr === 'object' && idExpr !== null) {
252
+ const result = {};
253
+ for (const [key, expr] of Object.entries(idExpr)) {
254
+ if (typeof expr === 'string' && expr.startsWith('$')) {
255
+ result[key] = getNestedValue(doc, expr.slice(1));
256
+ }
257
+ else {
258
+ result[key] = expr;
259
+ }
260
+ }
261
+ return result;
262
+ }
263
+ return idExpr;
264
+ }
265
+ function applyAccumulator(op, expr, docs) {
266
+ const values = docs.map((d) => resolveFieldRef(d, expr));
267
+ switch (op) {
268
+ case '$sum': {
269
+ if (typeof expr === 'number')
270
+ return expr * docs.length;
271
+ return values.reduce((acc, v) => acc + (typeof v === 'number' ? v : 0), 0);
272
+ }
273
+ case '$avg': {
274
+ const nums = values.filter((v) => typeof v === 'number');
275
+ return nums.length > 0
276
+ ? nums.reduce((a, b) => a + b, 0) / nums.length
277
+ : null;
278
+ }
279
+ case '$min': {
280
+ const nums = values.filter((v) => v !== undefined && v !== null);
281
+ return nums.length > 0
282
+ ? nums.reduce((a, b) => (a !== undefined && a < b ? a : b))
283
+ : null;
284
+ }
285
+ case '$max': {
286
+ const nums = values.filter((v) => v !== undefined && v !== null);
287
+ return nums.length > 0
288
+ ? nums.reduce((a, b) => (a !== undefined && a > b ? a : b))
289
+ : null;
290
+ }
291
+ case '$first':
292
+ return values.length > 0 ? values[0] : null;
293
+ case '$last':
294
+ return values.length > 0 ? values[values.length - 1] : null;
295
+ case '$push':
296
+ return values;
297
+ case '$addToSet':
298
+ return [...new Set(values.map((v) => JSON.stringify(v)))].map((s) => JSON.parse(s));
299
+ case '$count':
300
+ return docs.length;
301
+ default:
302
+ return null;
303
+ }
304
+ }
305
+ function resolveFieldRef(doc, expr) {
306
+ if (typeof expr === 'string' && expr.startsWith('$')) {
307
+ return getNestedValue(doc, expr.slice(1));
308
+ }
309
+ if (typeof expr === 'number')
310
+ return expr;
311
+ return expr;
312
+ }
313
+ function evaluateExpression(expr, doc) {
314
+ // Basic expression support
315
+ if ('$concat' in expr) {
316
+ const parts = expr['$concat'];
317
+ return parts
318
+ .map((p) => {
319
+ if (typeof p === 'string' && p.startsWith('$'))
320
+ return String(getNestedValue(doc, p.slice(1)) ?? '');
321
+ return String(p);
322
+ })
323
+ .join('');
324
+ }
325
+ if ('$toLower' in expr) {
326
+ const val = resolveFieldRef(doc, expr['$toLower']);
327
+ return typeof val === 'string' ? val.toLowerCase() : val;
328
+ }
329
+ if ('$toUpper' in expr) {
330
+ const val = resolveFieldRef(doc, expr['$toUpper']);
331
+ return typeof val === 'string' ? val.toUpperCase() : val;
332
+ }
333
+ if ('$add' in expr) {
334
+ const parts = expr['$add'];
335
+ return parts.reduce((acc, p) => {
336
+ const v = typeof p === 'number' ? p : Number(resolveFieldRef(doc, p));
337
+ return acc + (isNaN(v) ? 0 : v);
338
+ }, 0);
339
+ }
340
+ if ('$subtract' in expr) {
341
+ const [a, b] = expr['$subtract'];
342
+ const va = typeof a === 'number' ? a : Number(resolveFieldRef(doc, a));
343
+ const vb = typeof b === 'number' ? b : Number(resolveFieldRef(doc, b));
344
+ return va - vb;
345
+ }
346
+ if ('$multiply' in expr) {
347
+ const parts = expr['$multiply'];
348
+ return parts.reduce((acc, p) => {
349
+ const v = typeof p === 'number' ? p : Number(resolveFieldRef(doc, p));
350
+ return acc * (isNaN(v) ? 0 : v);
351
+ }, 1);
352
+ }
353
+ if ('$divide' in expr) {
354
+ const [a, b] = expr['$divide'];
355
+ const va = typeof a === 'number' ? a : Number(resolveFieldRef(doc, a));
356
+ const vb = typeof b === 'number' ? b : Number(resolveFieldRef(doc, b));
357
+ return vb !== 0 ? va / vb : null;
358
+ }
359
+ if ('$cond' in expr) {
360
+ const cond = expr['$cond'];
361
+ if (Array.isArray(cond) && cond.length === 3) {
362
+ const [ifExpr, thenExpr, elseExpr] = cond;
363
+ const test = resolveFieldRef(doc, ifExpr);
364
+ return test
365
+ ? resolveFieldRef(doc, thenExpr)
366
+ : resolveFieldRef(doc, elseExpr);
367
+ }
368
+ }
369
+ return expr;
370
+ }
371
+ function getNestedValue(doc, path) {
372
+ const parts = path.split('.');
373
+ let current = doc;
374
+ for (const part of parts) {
375
+ if (current === null || current === undefined)
376
+ return undefined;
377
+ if (typeof current === 'object') {
378
+ current = current[part];
379
+ }
380
+ else {
381
+ return undefined;
382
+ }
383
+ }
384
+ return current;
385
+ }
386
+ function setNestedValue(obj, path, value) {
387
+ const parts = path.split('.');
388
+ let current = obj;
389
+ for (let i = 0; i < parts.length - 1; i++) {
390
+ const part = parts[i];
391
+ if (!(part in current) ||
392
+ typeof current[part] !== 'object' ||
393
+ current[part] === null) {
394
+ current[part] = {};
395
+ }
396
+ current = current[part];
397
+ }
398
+ current[parts[parts.length - 1]] = value;
399
+ }
400
+ function deepEq(a, b) {
401
+ if (a === b)
402
+ return true;
403
+ if (a === null || b === null || a === undefined || b === undefined)
404
+ return a === b;
405
+ return JSON.stringify(a) === JSON.stringify(b);
406
+ }
407
+ //# sourceMappingURL=aggregation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"aggregation.js","sourceRoot":"","sources":["../../../../../brightchain-lib/src/lib/db/aggregation.ts"],"names":[],"mappings":"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"}