@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,590 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.BlockDocumentStore = exports.CollectionHeadRegistry = void 0;
4
+ const brightchain_lib_1 = require("@brightchain/brightchain-lib");
5
+ const crypto_1 = require("crypto");
6
+ /**
7
+ * Simple in-memory registry for collection head pointers.
8
+ * This maps collection names to their latest index block IDs.
9
+ *
10
+ * In a production system, this would be persisted to a separate
11
+ * key-value store or database. For now, we use a static map
12
+ * that's shared across all BlockDocumentStore instances.
13
+ */
14
+ class CollectionHeadRegistry {
15
+ constructor() {
16
+ this.heads = new Map();
17
+ }
18
+ static getInstance() {
19
+ if (!CollectionHeadRegistry.instance) {
20
+ CollectionHeadRegistry.instance = new CollectionHeadRegistry();
21
+ }
22
+ return CollectionHeadRegistry.instance;
23
+ }
24
+ getHead(collectionKey) {
25
+ return this.heads.get(collectionKey);
26
+ }
27
+ setHead(collectionKey, indexBlockId) {
28
+ this.heads.set(collectionKey, indexBlockId);
29
+ }
30
+ /**
31
+ * Generate a unique key for a collection based on store identity and collection name
32
+ */
33
+ static makeKey(storeId, collectionName) {
34
+ return `${storeId}:${collectionName}`;
35
+ }
36
+ /**
37
+ * Clear all heads (useful for testing)
38
+ */
39
+ clear() {
40
+ this.heads.clear();
41
+ }
42
+ }
43
+ exports.CollectionHeadRegistry = CollectionHeadRegistry;
44
+ class BlockQuery {
45
+ constructor(resolveValue) {
46
+ this.resolveValue = resolveValue;
47
+ }
48
+ self() {
49
+ return this;
50
+ }
51
+ select() {
52
+ return this.self();
53
+ }
54
+ populate() {
55
+ return this.self();
56
+ }
57
+ sort() {
58
+ return this.self();
59
+ }
60
+ limit() {
61
+ return this.self();
62
+ }
63
+ skip() {
64
+ return this.self();
65
+ }
66
+ lean() {
67
+ return this.self();
68
+ }
69
+ collation() {
70
+ return this.self();
71
+ }
72
+ session() {
73
+ return this.self();
74
+ }
75
+ where() {
76
+ return this.self();
77
+ }
78
+ distinct() {
79
+ return this.self();
80
+ }
81
+ async exec() {
82
+ return this.resolveValue();
83
+ }
84
+ then(onfulfilled, onrejected) {
85
+ return this.exec().then(onfulfilled, onrejected);
86
+ }
87
+ }
88
+ function matchFilter(doc, filter = {}) {
89
+ return Object.entries(filter).every(([key, value]) => {
90
+ if (value === undefined)
91
+ return true;
92
+ return doc[key] === value;
93
+ });
94
+ }
95
+ function toBlockId(id) {
96
+ return typeof id === 'string' ? id : Buffer.from(id).toString('hex');
97
+ }
98
+ /**
99
+ * Calculate a content-addressable block ID using the same algorithm as the block store.
100
+ * This uses SHA3-512 via the ChecksumService to match how RawDataBlock computes its idChecksum.
101
+ */
102
+ function calculateBlockId(data) {
103
+ const checksumService = brightchain_lib_1.ServiceLocator.getServiceProvider().checksumService;
104
+ const checksum = checksumService.calculateChecksum(data instanceof Buffer ? new Uint8Array(data) : data);
105
+ return checksum.toHex();
106
+ }
107
+ async function encodeDoc(doc) {
108
+ return Buffer.from(JSON.stringify(doc), 'utf8');
109
+ }
110
+ function decodeDoc(buf) {
111
+ return JSON.parse(buf.toString('utf8'));
112
+ }
113
+ class BlockCollection {
114
+ constructor(store, collectionName, quorumService, storeId = 'default') {
115
+ this.store = store;
116
+ this.collectionName = collectionName;
117
+ this.quorumService = quorumService;
118
+ this.storeId = storeId;
119
+ this.index = new Map(); // _id -> blockId
120
+ this.indexLoaded = false;
121
+ // Registry key is used to look up the latest index block ID
122
+ this.registryKey = CollectionHeadRegistry.makeKey(storeId, collectionName);
123
+ }
124
+ async ensureIndexLoaded() {
125
+ if (this.indexLoaded)
126
+ return;
127
+ if (!this.indexLoading) {
128
+ this.indexLoading = (async () => {
129
+ const registry = CollectionHeadRegistry.getInstance();
130
+ const indexBlockId = registry.getHead(this.registryKey);
131
+ if (indexBlockId) {
132
+ try {
133
+ const indexBlock = await this.store.get(indexBlockId);
134
+ const indexData = indexBlock.data;
135
+ const parsed = JSON.parse(Buffer.from(indexData).toString('utf8'));
136
+ // Support both old format (ids array) and new format (mappings object)
137
+ if (parsed?.mappings) {
138
+ for (const [logicalId, blockId] of Object.entries(parsed.mappings)) {
139
+ this.index.set(logicalId, blockId);
140
+ }
141
+ }
142
+ else if (parsed?.ids) {
143
+ // Legacy format: logical ID equals block ID
144
+ for (const id of parsed.ids) {
145
+ this.index.set(id, id);
146
+ }
147
+ }
148
+ }
149
+ catch {
150
+ // Index block not found - start fresh
151
+ }
152
+ }
153
+ this.indexLoaded = true;
154
+ })().finally(() => {
155
+ this.indexLoading = undefined;
156
+ });
157
+ }
158
+ return this.indexLoading;
159
+ }
160
+ async persistIndex() {
161
+ // Store the index as a mapping of logical IDs to block IDs
162
+ const indexData = {};
163
+ for (const [logicalId, blockId] of this.index.entries()) {
164
+ indexData[logicalId] = blockId;
165
+ }
166
+ const payload = Buffer.from(JSON.stringify({ mappings: indexData }), 'utf8');
167
+ if (payload.length > this.store.blockSize) {
168
+ throw new Error(`Index too large for block size (${payload.length} > ${this.store.blockSize}) in ${this.collectionName}`);
169
+ }
170
+ // Store the index under its content hash (content-addressable)
171
+ const indexBlockId = calculateBlockId(payload);
172
+ await this.store.put(indexBlockId, payload);
173
+ // Update the registry with the new index block ID
174
+ const registry = CollectionHeadRegistry.getInstance();
175
+ registry.setHead(this.registryKey, indexBlockId);
176
+ }
177
+ resolveBlockId(id) {
178
+ return id ? toBlockId(id) : (0, crypto_1.randomUUID)().replace(/-/g, '');
179
+ }
180
+ async writeDoc(doc, existingId) {
181
+ await this.ensureIndexLoaded();
182
+ // Use a logical ID for the document (either existing or generated)
183
+ const logicalId = existingId ?? this.resolveBlockId(doc._id);
184
+ // Encode the document with the logical ID
185
+ const docWithId = { ...doc, _id: logicalId };
186
+ const data = await encodeDoc(docWithId);
187
+ if (data.length > this.store.blockSize) {
188
+ throw new Error(`Document too large for block size (${data.length} > ${this.store.blockSize}) in ${this.collectionName}`);
189
+ }
190
+ // Use content hash as the block ID for content-addressable storage
191
+ const blockId = calculateBlockId(data);
192
+ // Check if block already exists (content-addressable deduplication)
193
+ const exists = await this.store.has(blockId);
194
+ if (!exists) {
195
+ await this.store.put(blockId, data);
196
+ }
197
+ // Map logical ID to content hash in the index
198
+ this.index.set(logicalId, blockId);
199
+ doc._id = logicalId;
200
+ await this.persistIndex();
201
+ return doc;
202
+ }
203
+ async readDoc(logicalId) {
204
+ await this.ensureIndexLoaded();
205
+ // Get the content hash from the index
206
+ const blockId = this.index.get(logicalId);
207
+ if (!blockId)
208
+ return null;
209
+ try {
210
+ const block = await this.store.get(blockId);
211
+ const blockData = block.data;
212
+ return decodeDoc(Buffer.from(blockData));
213
+ }
214
+ catch {
215
+ // Block not found in store
216
+ return null;
217
+ }
218
+ }
219
+ toSingleQuery(resolver) {
220
+ return new BlockQuery(resolver);
221
+ }
222
+ toManyQuery(resolver) {
223
+ return new BlockQuery(resolver);
224
+ }
225
+ find(filter) {
226
+ return this.toManyQuery(async () => {
227
+ await this.ensureIndexLoaded();
228
+ const docs = [];
229
+ for (const id of this.index.keys()) {
230
+ const doc = await this.readDoc(id);
231
+ if (doc && matchFilter(doc, filter))
232
+ docs.push(doc);
233
+ }
234
+ return docs;
235
+ });
236
+ }
237
+ findOne(filter) {
238
+ return this.toSingleQuery(async () => {
239
+ await this.ensureIndexLoaded();
240
+ for (const id of this.index.keys()) {
241
+ const doc = await this.readDoc(id);
242
+ if (doc && matchFilter(doc, filter))
243
+ return doc;
244
+ }
245
+ return null;
246
+ });
247
+ }
248
+ findById(id) {
249
+ const logicalId = toBlockId(id);
250
+ return this.toSingleQuery(() => this.readDoc(logicalId));
251
+ }
252
+ /**
253
+ * Retrieve a document by ID, decrypting if necessary
254
+ * @param id - The document ID
255
+ * @param options - Options for retrieving encrypted documents
256
+ * @returns The document (decrypted if it was encrypted)
257
+ */
258
+ async findByIdDecrypted(id, options) {
259
+ const logicalId = toBlockId(id);
260
+ const doc = await this.readDoc(logicalId);
261
+ if (!doc) {
262
+ return null;
263
+ }
264
+ const internalDoc = doc;
265
+ if (internalDoc.__encryptionMetadata?.isEncrypted) {
266
+ if (!this.quorumService) {
267
+ throw new Error('QuorumService is required to decrypt encrypted documents');
268
+ }
269
+ if (!options?.membersWithPrivateKey ||
270
+ options.membersWithPrivateKey.length === 0) {
271
+ throw new Error('Members with private keys are required to decrypt encrypted documents');
272
+ }
273
+ const sealedDocId = internalDoc.__encryptionMetadata.sealedDocumentId;
274
+ if (!sealedDocId) {
275
+ throw new Error('Encrypted document is missing sealed document ID');
276
+ }
277
+ // Unseal the document using QuorumService
278
+ const unsealedDoc = await this.quorumService.unsealDocument(sealedDocId, options.membersWithPrivateKey);
279
+ // Return the unsealed document with the original _id
280
+ return {
281
+ ...unsealedDoc,
282
+ _id: internalDoc._id,
283
+ };
284
+ }
285
+ return doc;
286
+ }
287
+ /**
288
+ * Check if a document is encrypted
289
+ * @param id - The document ID
290
+ * @returns True if the document is encrypted
291
+ */
292
+ async isEncrypted(id) {
293
+ const logicalId = toBlockId(id);
294
+ const doc = await this.readDoc(logicalId);
295
+ if (!doc) {
296
+ return false;
297
+ }
298
+ const internalDoc = doc;
299
+ return internalDoc.__encryptionMetadata?.isEncrypted ?? false;
300
+ }
301
+ /**
302
+ * Get encryption metadata for a document
303
+ * @param id - The document ID
304
+ * @returns The encryption metadata, or null if not encrypted
305
+ */
306
+ async getEncryptionMetadata(id) {
307
+ const logicalId = toBlockId(id);
308
+ const doc = await this.readDoc(logicalId);
309
+ if (!doc) {
310
+ return null;
311
+ }
312
+ const internalDoc = doc;
313
+ return internalDoc.__encryptionMetadata ?? null;
314
+ }
315
+ /**
316
+ * Check if a member has access to a document
317
+ * @param id - The document ID
318
+ * @param memberId - The member ID to check access for
319
+ * @returns True if the member has access (either unencrypted or member is in the encryption list)
320
+ */
321
+ async hasAccess(id, memberId) {
322
+ const logicalId = toBlockId(id);
323
+ const doc = await this.readDoc(logicalId);
324
+ if (!doc) {
325
+ return false;
326
+ }
327
+ const internalDoc = doc;
328
+ // Unencrypted documents are accessible to everyone
329
+ if (!internalDoc.__encryptionMetadata?.isEncrypted) {
330
+ return true;
331
+ }
332
+ // For encrypted documents, check if the member is in the member list
333
+ const memberIds = internalDoc.__encryptionMetadata.memberIds ?? [];
334
+ return memberIds.includes(memberId);
335
+ }
336
+ /**
337
+ * Find all documents accessible by a specific member
338
+ * @param memberId - The member ID to filter by
339
+ * @param filter - Optional additional filter criteria
340
+ * @returns Array of documents the member has access to
341
+ */
342
+ async findAccessibleBy(memberId, filter) {
343
+ await this.ensureIndexLoaded();
344
+ const docs = [];
345
+ for (const id of this.index.keys()) {
346
+ const doc = await this.readDoc(id);
347
+ if (doc && matchFilter(doc, filter)) {
348
+ const internalDoc = doc;
349
+ // Include unencrypted documents
350
+ if (!internalDoc.__encryptionMetadata?.isEncrypted) {
351
+ docs.push(doc);
352
+ continue;
353
+ }
354
+ // Include encrypted documents where the member has access
355
+ const memberIds = internalDoc.__encryptionMetadata.memberIds ?? [];
356
+ if (memberIds.includes(memberId)) {
357
+ docs.push(doc);
358
+ }
359
+ }
360
+ }
361
+ return docs;
362
+ }
363
+ /**
364
+ * Find one document accessible by a specific member
365
+ * @param memberId - The member ID to filter by
366
+ * @param filter - Optional additional filter criteria
367
+ * @returns The first document the member has access to, or null
368
+ */
369
+ async findOneAccessibleBy(memberId, filter) {
370
+ await this.ensureIndexLoaded();
371
+ for (const id of this.index.keys()) {
372
+ const doc = await this.readDoc(id);
373
+ if (doc && matchFilter(doc, filter)) {
374
+ const internalDoc = doc;
375
+ // Include unencrypted documents
376
+ if (!internalDoc.__encryptionMetadata?.isEncrypted) {
377
+ return doc;
378
+ }
379
+ // Include encrypted documents where the member has access
380
+ const memberIds = internalDoc.__encryptionMetadata.memberIds ?? [];
381
+ if (memberIds.includes(memberId)) {
382
+ return doc;
383
+ }
384
+ }
385
+ }
386
+ return null;
387
+ }
388
+ /**
389
+ * Count documents accessible by a specific member
390
+ * @param memberId - The member ID to filter by
391
+ * @param filter - Optional additional filter criteria
392
+ * @returns The count of documents the member has access to
393
+ */
394
+ async countAccessibleBy(memberId, filter) {
395
+ const docs = await this.findAccessibleBy(memberId, filter);
396
+ return docs.length;
397
+ }
398
+ findOneAndUpdate(filter, update) {
399
+ return this.toSingleQuery(async () => {
400
+ const doc = await this.findOne(filter).exec();
401
+ if (!doc)
402
+ return null;
403
+ Object.assign(doc, update);
404
+ await this.writeDoc(doc, toBlockId(doc._id));
405
+ return doc;
406
+ });
407
+ }
408
+ findOneAndDelete(filter) {
409
+ return this.toSingleQuery(async () => {
410
+ const doc = await this.findOne(filter).exec();
411
+ if (!doc)
412
+ return null;
413
+ await this.deleteOne({ _id: doc._id });
414
+ return doc;
415
+ });
416
+ }
417
+ findByIdAndUpdate(id, update) {
418
+ return this.findOneAndUpdate({ _id: id }, update);
419
+ }
420
+ findByIdAndDelete(id) {
421
+ return this.findOneAndDelete({ _id: id });
422
+ }
423
+ async create(doc, options) {
424
+ await this.ensureIndexLoaded();
425
+ // Handle encryption if requested
426
+ if (options?.encrypt) {
427
+ if (!this.quorumService) {
428
+ throw new Error('QuorumService is required for encrypted documents');
429
+ }
430
+ if (!options.agent) {
431
+ throw new Error('Agent member is required for encrypted documents');
432
+ }
433
+ if (!options.memberIds || options.memberIds.length < 2) {
434
+ throw new Error('At least 2 member IDs are required for encrypted documents');
435
+ }
436
+ // Seal the document using QuorumService
437
+ const sealedResult = await this.quorumService.sealDocument(options.agent, doc, options.memberIds, options.sharesRequired);
438
+ // Store metadata about the encrypted document
439
+ const internalDoc = {
440
+ ...doc,
441
+ __encryptionMetadata: {
442
+ isEncrypted: true,
443
+ sealedDocumentId: sealedResult.documentId,
444
+ memberIds: sealedResult.memberIds,
445
+ sharesRequired: sealedResult.sharesRequired,
446
+ createdAt: sealedResult.createdAt.toISOString(),
447
+ },
448
+ };
449
+ return this.writeDoc(internalDoc);
450
+ }
451
+ return this.writeDoc({ ...doc });
452
+ }
453
+ async insertMany(docs) {
454
+ await this.ensureIndexLoaded();
455
+ const res = [];
456
+ for (const doc of docs) {
457
+ res.push(await this.create(doc));
458
+ }
459
+ return res;
460
+ }
461
+ async updateOne(filter, update) {
462
+ const doc = await this.findOne(filter).exec();
463
+ if (!doc)
464
+ return { modifiedCount: 0, matchedCount: 0 };
465
+ Object.assign(doc, update);
466
+ await this.writeDoc(doc, toBlockId(doc._id));
467
+ return { modifiedCount: 1, matchedCount: 1 };
468
+ }
469
+ async updateMany(filter, update) {
470
+ const docs = await this.find(filter).exec();
471
+ let count = 0;
472
+ if (docs) {
473
+ for (const doc of docs) {
474
+ Object.assign(doc, update);
475
+ await this.writeDoc(doc, toBlockId(doc._id));
476
+ count += 1;
477
+ }
478
+ }
479
+ return { modifiedCount: count, matchedCount: count };
480
+ }
481
+ async replaceOne(filter, doc) {
482
+ const existing = await this.findOne(filter).exec();
483
+ if (!existing)
484
+ return { modifiedCount: 0, matchedCount: 0 };
485
+ await this.writeDoc(doc, toBlockId(existing._id));
486
+ return { modifiedCount: 1, matchedCount: 1 };
487
+ }
488
+ async deleteOne(filter) {
489
+ await this.ensureIndexLoaded();
490
+ for (const [logicalId, blockId] of this.index.entries()) {
491
+ const doc = await this.readDoc(logicalId);
492
+ if (doc && matchFilter(doc, filter)) {
493
+ try {
494
+ await this.store.delete(blockId);
495
+ }
496
+ catch {
497
+ // Block might already be deleted or not exist
498
+ }
499
+ this.index.delete(logicalId);
500
+ await this.persistIndex();
501
+ return { deletedCount: 1 };
502
+ }
503
+ }
504
+ return { deletedCount: 0 };
505
+ }
506
+ async deleteMany(filter) {
507
+ await this.ensureIndexLoaded();
508
+ let deleted = 0;
509
+ for (const [logicalId, blockId] of Array.from(this.index.entries())) {
510
+ const doc = await this.readDoc(logicalId);
511
+ if (doc && matchFilter(doc, filter)) {
512
+ try {
513
+ await this.store.delete(blockId);
514
+ }
515
+ catch {
516
+ // Block might already be deleted or not exist
517
+ }
518
+ this.index.delete(logicalId);
519
+ deleted += 1;
520
+ }
521
+ }
522
+ if (deleted > 0) {
523
+ await this.persistIndex();
524
+ }
525
+ return { deletedCount: deleted };
526
+ }
527
+ async countDocuments(filter) {
528
+ const docs = await this.find(filter).exec();
529
+ return docs ? docs.length : 0;
530
+ }
531
+ async estimatedDocumentCount() {
532
+ return this.index.size;
533
+ }
534
+ aggregate(_pipeline) {
535
+ return new BlockQuery(async () => []);
536
+ }
537
+ distinct(field) {
538
+ return new BlockQuery(async () => {
539
+ const values = new Set();
540
+ for (const id of this.index.keys()) {
541
+ const doc = await this.readDoc(id);
542
+ if (doc && field in doc)
543
+ values.add(doc[field]);
544
+ }
545
+ return Array.from(values);
546
+ });
547
+ }
548
+ async exists(filter) {
549
+ await this.ensureIndexLoaded();
550
+ const doc = await this.findOne(filter).exec();
551
+ return doc ? { _id: doc._id } : null;
552
+ }
553
+ watch() {
554
+ /* noop */
555
+ }
556
+ startSession() {
557
+ return undefined;
558
+ }
559
+ }
560
+ class BlockDocumentStore {
561
+ constructor(blockStore, quorumService) {
562
+ this.blockStore = blockStore;
563
+ this.quorumService = quorumService;
564
+ this.collections = new Map();
565
+ // Generate a unique store ID for this instance
566
+ this.storeId = (0, crypto_1.randomUUID)().replace(/-/g, '');
567
+ }
568
+ collection(name) {
569
+ if (!this.collections.has(name)) {
570
+ this.collections.set(name, new BlockCollection(this.blockStore, name, this.quorumService, this.storeId));
571
+ }
572
+ return this.collections.get(name);
573
+ }
574
+ /**
575
+ * Get a collection with encryption support
576
+ * @param name - The collection name
577
+ * @returns The collection with encryption methods available
578
+ */
579
+ encryptedCollection(name) {
580
+ if (!this.quorumService) {
581
+ throw new Error('QuorumService is required for encrypted collections');
582
+ }
583
+ if (!this.collections.has(name)) {
584
+ this.collections.set(name, new BlockCollection(this.blockStore, name, this.quorumService, this.storeId));
585
+ }
586
+ return this.collections.get(name);
587
+ }
588
+ }
589
+ exports.BlockDocumentStore = BlockDocumentStore;
590
+ //# sourceMappingURL=block-document-store.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"block-document-store.js","sourceRoot":"","sources":["../../../../../brightchain-api-lib/src/lib/datastore/block-document-store.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,48 @@
1
+ import { ConvertibleDocument } from '@brightchain/brightchain-lib';
2
+ import { DocumentCollection, DocumentId, DocumentRecord, QueryBuilder } from './document-store';
3
+ export type HydratedDocument<T> = T & {
4
+ toObject(): T;
5
+ toJSON(): T;
6
+ };
7
+ export interface ModelLike<TStorage extends DocumentRecord, THydrated extends DocumentRecord, TOperational> {
8
+ create(doc: Partial<TStorage>): Promise<HydratedDocument<THydrated>>;
9
+ insertMany(docs: Partial<TStorage>[]): Promise<HydratedDocument<THydrated>[]>;
10
+ find(filter?: Partial<TStorage>): QueryBuilder<HydratedDocument<THydrated>[]>;
11
+ findOne(filter?: Partial<TStorage>): QueryBuilder<HydratedDocument<THydrated>>;
12
+ findById(id: DocumentId): QueryBuilder<HydratedDocument<THydrated>>;
13
+ findOneAndUpdate(filter: Partial<TStorage>, update: Partial<TStorage>): QueryBuilder<HydratedDocument<THydrated>>;
14
+ findOneAndDelete(filter: Partial<TStorage>): QueryBuilder<HydratedDocument<THydrated>>;
15
+ findByIdAndUpdate(id: DocumentId, update: Partial<TStorage>): QueryBuilder<HydratedDocument<THydrated>>;
16
+ findByIdAndDelete(id: DocumentId): QueryBuilder<HydratedDocument<THydrated>>;
17
+ updateOne(filter: Partial<TStorage>, update: Partial<TStorage>): Promise<{
18
+ modifiedCount: number;
19
+ matchedCount: number;
20
+ }>;
21
+ updateMany(filter: Partial<TStorage>, update: Partial<TStorage>): Promise<{
22
+ modifiedCount: number;
23
+ matchedCount: number;
24
+ }>;
25
+ replaceOne(filter: Partial<TStorage>, doc: Partial<TStorage>): Promise<{
26
+ modifiedCount: number;
27
+ matchedCount: number;
28
+ }>;
29
+ deleteOne(filter: Partial<TStorage>): Promise<{
30
+ deletedCount: number;
31
+ }>;
32
+ deleteMany(filter: Partial<TStorage>): Promise<{
33
+ deletedCount: number;
34
+ }>;
35
+ countDocuments(filter?: Partial<TStorage>): Promise<number>;
36
+ estimatedDocumentCount(): Promise<number>;
37
+ aggregate<U = unknown>(pipeline: unknown[]): QueryBuilder<U[]>;
38
+ distinct(field: keyof THydrated): QueryBuilder<unknown[]>;
39
+ exists(filter: Partial<TStorage>): Promise<{
40
+ _id: DocumentId;
41
+ } | null>;
42
+ watch?(): void;
43
+ startSession?(): unknown;
44
+ toStorage(operational: TOperational): TStorage;
45
+ fromStorage(storage: TStorage): TOperational;
46
+ }
47
+ export declare function createModelAdapter<TStorage extends DocumentRecord, THydrated extends DocumentRecord, TOperational>(collection: DocumentCollection<TStorage>, converter: ConvertibleDocument<TStorage, THydrated, TOperational>): ModelLike<TStorage, THydrated, TOperational>;
48
+ //# sourceMappingURL=document-model-adapter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"document-model-adapter.d.ts","sourceRoot":"","sources":["../../../../../brightchain-api-lib/src/lib/datastore/document-model-adapter.ts"],"names":[],"mappings":"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"}