@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,221 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createBlockHandle = createBlockHandle;
4
+ exports.createBlockHandleFromPath = createBlockHandleFromPath;
5
+ /* eslint-disable @typescript-eslint/no-explicit-any */
6
+ const brightchain_lib_1 = require("@brightchain/brightchain-lib");
7
+ const node_ecies_lib_1 = require("@digitaldefiance/node-ecies-lib");
8
+ const fs_1 = require("fs");
9
+ const stream_1 = require("stream");
10
+ /**
11
+ * This function creates a "block handle" for a block of type T which extends BaseBlock.
12
+ * It makes the returned object equivalent to the underlying block type T but replacing
13
+ * the get data() method with an on-demand load of the block data from the block store
14
+ * and adding other functions for block handle operations.
15
+ *
16
+ * So for createBlockHandle<EphemeralBlock>(...) this function shall return an EphemeralBlock
17
+ * but with the overriden get data() method to load the block data from the file system
18
+ * on demand along with other added functions.
19
+ *
20
+ * @param blockConstructor - The constructor for the block type T
21
+ * @param path - The path to the block file
22
+ * @param blockSize - The block size
23
+ * @param checksum - The checksum of the block
24
+ * @param canRead - Whether the block can be read
25
+ * @param canPersist - Whether the block can be persisted
26
+ * @param constructorArgs - Additional arguments to pass to the block constructor
27
+ * @returns A block handle for the specified block type
28
+ */
29
+ function createBlockHandle(blockConstructor, path, blockSize, checksum, canRead = true, canPersist = true, ...constructorArgs) {
30
+ if (!(0, fs_1.existsSync)(path)) {
31
+ throw new brightchain_lib_1.BlockAccessError(brightchain_lib_1.BlockAccessErrorType.BlockFileNotFound, path);
32
+ }
33
+ // Create the file stats once to avoid repeated file system calls
34
+ const stats = (0, fs_1.statSync)(path);
35
+ // Create a basic instance of T
36
+ // This uses a temporary empty buffer since we'll load data on demand
37
+ // Use a date slightly in the past to avoid timing issues with validation
38
+ const creationDate = new Date(Math.min(stats.birthtime.getTime(), Date.now() - 1000));
39
+ const instance = new blockConstructor(blockSize, Buffer.alloc(0), creationDate, checksum, brightchain_lib_1.BlockType.Handle, // Override blockType to indicate it's a handle
40
+ brightchain_lib_1.BlockDataType.RawData, canRead, canPersist, ...constructorArgs);
41
+ // Add handle-specific properties
42
+ instance._path = path;
43
+ instance._cachedData = null;
44
+ // Override and add methods
45
+ // Override get data()
46
+ Object.defineProperty(instance, 'data', {
47
+ get: function () {
48
+ if (!this.canRead) {
49
+ throw new brightchain_lib_1.BlockAccessError(brightchain_lib_1.BlockAccessErrorType.BlockIsNotReadable);
50
+ }
51
+ if (!this._cachedData) {
52
+ if (!(0, fs_1.existsSync)(this._path)) {
53
+ throw new brightchain_lib_1.BlockAccessError(brightchain_lib_1.BlockAccessErrorType.BlockFileNotFound, this._path);
54
+ }
55
+ this._cachedData = (0, fs_1.readFileSync)(this._path);
56
+ }
57
+ return this._cachedData;
58
+ },
59
+ enumerable: true,
60
+ configurable: true,
61
+ });
62
+ // Add path getter
63
+ Object.defineProperty(instance, 'path', {
64
+ get: function () {
65
+ return this._path;
66
+ },
67
+ enumerable: true,
68
+ configurable: true,
69
+ });
70
+ // Add setPath method
71
+ instance.setPath = function (path) {
72
+ this._path = path;
73
+ };
74
+ // Add fullData getter
75
+ Object.defineProperty(instance, 'fullData', {
76
+ get: function () {
77
+ return this.data;
78
+ },
79
+ enumerable: true,
80
+ configurable: true,
81
+ });
82
+ // Override get layerPayload()
83
+ Object.defineProperty(instance, 'layerPayload', {
84
+ get: function () {
85
+ return this.fullData;
86
+ },
87
+ enumerable: true,
88
+ configurable: true,
89
+ });
90
+ // Add layerData getter
91
+ Object.defineProperty(instance, 'layerData', {
92
+ get: function () {
93
+ return this.fullData;
94
+ },
95
+ enumerable: true,
96
+ configurable: true,
97
+ });
98
+ // Add layerPayloadSize getter
99
+ Object.defineProperty(instance, 'layerPayloadSize', {
100
+ get: function () {
101
+ return this.fullData.length;
102
+ },
103
+ enumerable: true,
104
+ configurable: true,
105
+ });
106
+ // Override metadata getter
107
+ Object.defineProperty(instance, 'metadata', {
108
+ get: function () {
109
+ if (!(0, fs_1.existsSync)(this._path)) {
110
+ throw new brightchain_lib_1.BlockAccessError(brightchain_lib_1.BlockAccessErrorType.BlockFileNotFound, this._path);
111
+ }
112
+ const stats = (0, fs_1.statSync)(this._path);
113
+ return new brightchain_lib_1.BlockMetadata(this.blockSize, brightchain_lib_1.BlockType.Handle, brightchain_lib_1.BlockDataType.RawData, stats.size, new Date(stats.birthtime));
114
+ },
115
+ enumerable: true,
116
+ configurable: true,
117
+ });
118
+ // Add getReadStream method
119
+ instance.getReadStream = function () {
120
+ if (!this.canRead) {
121
+ throw new brightchain_lib_1.BlockAccessError(brightchain_lib_1.BlockAccessErrorType.BlockIsNotReadable);
122
+ }
123
+ if (!(0, fs_1.existsSync)(this._path)) {
124
+ throw new brightchain_lib_1.BlockAccessError(brightchain_lib_1.BlockAccessErrorType.BlockFileNotFound, this._path);
125
+ }
126
+ return (0, fs_1.createReadStream)(this._path);
127
+ };
128
+ // Add getWriteStream method
129
+ instance.getWriteStream = function (overwrite = false) {
130
+ if (!this.canPersist) {
131
+ throw new brightchain_lib_1.BlockAccessError(brightchain_lib_1.BlockAccessErrorType.BlockIsNotPersistable);
132
+ }
133
+ if ((0, fs_1.existsSync)(this._path) && !overwrite) {
134
+ throw new brightchain_lib_1.BlockAccessError(brightchain_lib_1.BlockAccessErrorType.BlockAlreadyExists);
135
+ }
136
+ return (0, fs_1.createWriteStream)(this._path);
137
+ };
138
+ // Add calculateChecksum method
139
+ instance.calculateChecksum = async function () {
140
+ return new Promise((resolve, reject) => {
141
+ const readStream = this.getReadStream();
142
+ const checksumTransform = new node_ecies_lib_1.ChecksumTransform();
143
+ readStream.pipe(checksumTransform);
144
+ checksumTransform.on('checksum', (checksum) => {
145
+ readStream.destroy();
146
+ resolve(brightchain_lib_1.Checksum.fromUint8Array(checksum));
147
+ });
148
+ readStream.on('error', (error) => {
149
+ checksumTransform.destroy();
150
+ reject(error);
151
+ });
152
+ checksumTransform.on('error', (error) => {
153
+ readStream.destroy();
154
+ reject(error);
155
+ });
156
+ // Ensure cleanup on completion
157
+ checksumTransform.on('end', () => {
158
+ readStream.destroy();
159
+ });
160
+ });
161
+ };
162
+ // Add calculateChecksumSync method
163
+ instance.calculateChecksumSync = function () {
164
+ if (!(0, fs_1.existsSync)(this._path)) {
165
+ throw new brightchain_lib_1.BlockAccessError(brightchain_lib_1.BlockAccessErrorType.BlockFileNotFound, this._path);
166
+ }
167
+ const data = (0, fs_1.readFileSync)(this._path);
168
+ return brightchain_lib_1.ServiceProvider.getInstance().checksumService.calculateChecksum(data);
169
+ };
170
+ // Override validateAsync method
171
+ instance.validateAsync = async function () {
172
+ const checksum = await this.calculateChecksum();
173
+ if (!checksum.equals(this.idChecksum)) {
174
+ throw new brightchain_lib_1.ChecksumMismatchError(this.idChecksum, checksum);
175
+ }
176
+ };
177
+ // Override validateSync method
178
+ instance.validateSync = function () {
179
+ const checksum = this.calculateChecksumSync();
180
+ if (!checksum.equals(this.idChecksum)) {
181
+ throw new brightchain_lib_1.ChecksumMismatchError(this.idChecksum, checksum);
182
+ }
183
+ };
184
+ // Override validate method
185
+ instance.validate = function () {
186
+ this.validateSync();
187
+ };
188
+ // Add clearCache method
189
+ instance.clearCache = function () {
190
+ this._cachedData = null;
191
+ };
192
+ // Add block getter
193
+ Object.defineProperty(instance, 'block', {
194
+ get: function () {
195
+ const newBlock = new brightchain_lib_1.RawDataBlock(this.blockSize, this.fullData, this.dateCreated, this.idChecksum, this.blockType, this.blockDataType, this.canRead, this.canPersist);
196
+ newBlock.validateSync();
197
+ return newBlock;
198
+ },
199
+ enumerable: true,
200
+ configurable: true,
201
+ });
202
+ // Return the augmented instance
203
+ return instance;
204
+ }
205
+ /**
206
+ * Create a new block handle from a file path
207
+ */
208
+ async function createBlockHandleFromPath(blockConstructor, path, blockSize, checksum, canRead = true, canPersist = true, ...constructorArgs) {
209
+ if (!(0, fs_1.existsSync)(path)) {
210
+ throw new brightchain_lib_1.BlockAccessError(brightchain_lib_1.BlockAccessErrorType.BlockFileNotFound, path);
211
+ }
212
+ // If no checksum provided, calculate it
213
+ if (!checksum) {
214
+ const nodeStream = (0, fs_1.createReadStream)(path);
215
+ const webStream = stream_1.Readable.toWeb(nodeStream);
216
+ checksum =
217
+ await brightchain_lib_1.ServiceProvider.getInstance().checksumService.calculateChecksumForStream(webStream);
218
+ }
219
+ return createBlockHandle(blockConstructor, path, blockSize, checksum, canRead, canPersist, ...constructorArgs);
220
+ }
221
+ //# sourceMappingURL=handle.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"handle.js","sourceRoot":"","sources":["../../../../../brightchain-api-lib/src/lib/blocks/handle.ts"],"names":[],"mappings":";;AAgEA,8CA0PC;AAKD,8DAgCC;AA/VD,uDAAuD;AACvD,kEAYsC;AACtC,oEAAoE;AACpE,2BAQY;AACZ,mCAAkC;AAqBlC;;;;;;;;;;;;;;;;;;GAkBG;AACH,SAAgB,iBAAiB,CAC/B,gBAA2C,EAC3C,IAAY,EACZ,SAAoB,EACpB,QAAkB,EAClB,OAAO,GAAG,IAAI,EACd,UAAU,GAAG,IAAI,EACjB,GAAG,eAAsB;IAEzB,IAAI,CAAC,IAAA,eAAU,EAAC,IAAI,CAAC,EAAE,CAAC;QACtB,MAAM,IAAI,kCAAgB,CAAC,sCAAoB,CAAC,iBAAiB,EAAE,IAAI,CAAC,CAAC;IAC3E,CAAC;IAED,iEAAiE;IACjE,MAAM,KAAK,GAAG,IAAA,aAAQ,EAAC,IAAI,CAAC,CAAC;IAE7B,+BAA+B;IAC/B,qEAAqE;IACrE,yEAAyE;IACzE,MAAM,YAAY,GAAG,IAAI,IAAI,CAC3B,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,OAAO,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,CACvD,CAAC;IACF,MAAM,QAAQ,GAAG,IAAI,gBAAgB,CACnC,SAAS,EACT,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EACf,YAAY,EACZ,QAAQ,EACR,2BAAS,CAAC,MAAM,EAAE,+CAA+C;IACjE,+BAAa,CAAC,OAAO,EACrB,OAAO,EACP,UAAU,EACV,GAAG,eAAe,CACD,CAAC;IAEpB,iCAAiC;IACjC,QAAQ,CAAC,KAAK,GAAG,IAAI,CAAC;IACtB,QAAQ,CAAC,WAAW,GAAG,IAAI,CAAC;IAE5B,2BAA2B;IAE3B,sBAAsB;IACtB,MAAM,CAAC,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE;QACtC,GAAG,EAAE;YACH,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;gBAClB,MAAM,IAAI,kCAAgB,CAAC,sCAAoB,CAAC,kBAAkB,CAAC,CAAC;YACtE,CAAC;YACD,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;gBACtB,IAAI,CAAC,IAAA,eAAU,EAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;oBAC5B,MAAM,IAAI,kCAAgB,CACxB,sCAAoB,CAAC,iBAAiB,EACtC,IAAI,CAAC,KAAK,CACX,CAAC;gBACJ,CAAC;gBACD,IAAI,CAAC,WAAW,GAAG,IAAA,iBAAY,EAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAC9C,CAAC;YACD,OAAO,IAAI,CAAC,WAAW,CAAC;QAC1B,CAAC;QACD,UAAU,EAAE,IAAI;QAChB,YAAY,EAAE,IAAI;KACnB,CAAC,CAAC;IAEH,kBAAkB;IAClB,MAAM,CAAC,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE;QACtC,GAAG,EAAE;YACH,OAAO,IAAI,CAAC,KAAK,CAAC;QACpB,CAAC;QACD,UAAU,EAAE,IAAI;QAChB,YAAY,EAAE,IAAI;KACnB,CAAC,CAAC;IAEH,qBAAqB;IACrB,QAAQ,CAAC,OAAO,GAAG,UAAU,IAAY;QACvC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;IACpB,CAAC,CAAC;IAEF,sBAAsB;IACtB,MAAM,CAAC,cAAc,CAAC,QAAQ,EAAE,UAAU,EAAE;QAC1C,GAAG,EAAE;YACH,OAAO,IAAI,CAAC,IAAI,CAAC;QACnB,CAAC;QACD,UAAU,EAAE,IAAI;QAChB,YAAY,EAAE,IAAI;KACnB,CAAC,CAAC;IAEH,8BAA8B;IAC9B,MAAM,CAAC,cAAc,CAAC,QAAQ,EAAE,cAAc,EAAE;QAC9C,GAAG,EAAE;YACH,OAAO,IAAI,CAAC,QAAQ,CAAC;QACvB,CAAC;QACD,UAAU,EAAE,IAAI;QAChB,YAAY,EAAE,IAAI;KACnB,CAAC,CAAC;IAEH,uBAAuB;IACvB,MAAM,CAAC,cAAc,CAAC,QAAQ,EAAE,WAAW,EAAE;QAC3C,GAAG,EAAE;YACH,OAAO,IAAI,CAAC,QAAQ,CAAC;QACvB,CAAC;QACD,UAAU,EAAE,IAAI;QAChB,YAAY,EAAE,IAAI;KACnB,CAAC,CAAC;IAEH,8BAA8B;IAC9B,MAAM,CAAC,cAAc,CAAC,QAAQ,EAAE,kBAAkB,EAAE;QAClD,GAAG,EAAE;YACH,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;QAC9B,CAAC;QACD,UAAU,EAAE,IAAI;QAChB,YAAY,EAAE,IAAI;KACnB,CAAC,CAAC;IAEH,2BAA2B;IAC3B,MAAM,CAAC,cAAc,CAAC,QAAQ,EAAE,UAAU,EAAE;QAC1C,GAAG,EAAE;YACH,IAAI,CAAC,IAAA,eAAU,EAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC5B,MAAM,IAAI,kCAAgB,CACxB,sCAAoB,CAAC,iBAAiB,EACtC,IAAI,CAAC,KAAK,CACX,CAAC;YACJ,CAAC;YACD,MAAM,KAAK,GAAG,IAAA,aAAQ,EAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACnC,OAAO,IAAI,+BAAa,CACtB,IAAI,CAAC,SAAS,EACd,2BAAS,CAAC,MAAM,EAChB,+BAAa,CAAC,OAAO,EACrB,KAAK,CAAC,IAAI,EACV,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAC1B,CAAC;QACJ,CAAC;QACD,UAAU,EAAE,IAAI;QAChB,YAAY,EAAE,IAAI;KACnB,CAAC,CAAC;IAEH,2BAA2B;IAC3B,QAAQ,CAAC,aAAa,GAAG;QACvB,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;YAClB,MAAM,IAAI,kCAAgB,CAAC,sCAAoB,CAAC,kBAAkB,CAAC,CAAC;QACtE,CAAC;QACD,IAAI,CAAC,IAAA,eAAU,EAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;YAC5B,MAAM,IAAI,kCAAgB,CACxB,sCAAoB,CAAC,iBAAiB,EACtC,IAAI,CAAC,KAAK,CACX,CAAC;QACJ,CAAC;QACD,OAAO,IAAA,qBAAgB,EAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACtC,CAAC,CAAC;IAEF,4BAA4B;IAC5B,QAAQ,CAAC,cAAc,GAAG,UAAU,SAAS,GAAG,KAAK;QACnD,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;YACrB,MAAM,IAAI,kCAAgB,CAAC,sCAAoB,CAAC,qBAAqB,CAAC,CAAC;QACzE,CAAC;QACD,IAAI,IAAA,eAAU,EAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;YACzC,MAAM,IAAI,kCAAgB,CAAC,sCAAoB,CAAC,kBAAkB,CAAC,CAAC;QACtE,CAAC;QACD,OAAO,IAAA,sBAAiB,EAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACvC,CAAC,CAAC;IAEF,+BAA+B;IAC/B,QAAQ,CAAC,iBAAiB,GAAG,KAAK;QAChC,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACrC,MAAM,UAAU,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;YACxC,MAAM,iBAAiB,GAAG,IAAI,kCAAiB,EAAE,CAAC;YAElD,UAAU,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;YAEnC,iBAAiB,CAAC,EAAE,CAAC,UAAU,EAAE,CAAC,QAAQ,EAAE,EAAE;gBAC5C,UAAU,CAAC,OAAO,EAAE,CAAC;gBACrB,OAAO,CAAC,0BAAQ,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC,CAAC;YAC7C,CAAC,CAAC,CAAC;YAEH,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,KAAY,EAAE,EAAE;gBACtC,iBAAiB,CAAC,OAAO,EAAE,CAAC;gBAC5B,MAAM,CAAC,KAAK,CAAC,CAAC;YAChB,CAAC,CAAC,CAAC;YAEH,iBAAiB,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,KAAY,EAAE,EAAE;gBAC7C,UAAU,CAAC,OAAO,EAAE,CAAC;gBACrB,MAAM,CAAC,KAAK,CAAC,CAAC;YAChB,CAAC,CAAC,CAAC;YAEH,+BAA+B;YAC/B,iBAAiB,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE;gBAC/B,UAAU,CAAC,OAAO,EAAE,CAAC;YACvB,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC,CAAC;IAEF,mCAAmC;IACnC,QAAQ,CAAC,qBAAqB,GAAG;QAC/B,IAAI,CAAC,IAAA,eAAU,EAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;YAC5B,MAAM,IAAI,kCAAgB,CACxB,sCAAoB,CAAC,iBAAiB,EACtC,IAAI,CAAC,KAAK,CACX,CAAC;QACJ,CAAC;QACD,MAAM,IAAI,GAAG,IAAA,iBAAY,EAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACtC,OAAO,iCAAe,CAAC,WAAW,EAAE,CAAC,eAAe,CAAC,iBAAiB,CACpE,IAAI,CACL,CAAC;IACJ,CAAC,CAAC;IAEF,gCAAgC;IAChC,QAAQ,CAAC,aAAa,GAAG,KAAK;QAC5B,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,iBAAiB,EAAE,CAAC;QAChD,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;YACtC,MAAM,IAAI,uCAAqB,CAAC,IAAI,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;QAC7D,CAAC;IACH,CAAC,CAAC;IAEF,+BAA+B;IAC/B,QAAQ,CAAC,YAAY,GAAG;QACtB,MAAM,QAAQ,GAAG,IAAI,CAAC,qBAAqB,EAAE,CAAC;QAC9C,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;YACtC,MAAM,IAAI,uCAAqB,CAAC,IAAI,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;QAC7D,CAAC;IACH,CAAC,CAAC;IAEF,2BAA2B;IAC3B,QAAQ,CAAC,QAAQ,GAAG;QAClB,IAAI,CAAC,YAAY,EAAE,CAAC;IACtB,CAAC,CAAC;IAEF,wBAAwB;IACxB,QAAQ,CAAC,UAAU,GAAG;QACpB,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;IAC1B,CAAC,CAAC;IAEF,mBAAmB;IACnB,MAAM,CAAC,cAAc,CAAC,QAAQ,EAAE,OAAO,EAAE;QACvC,GAAG,EAAE;YACH,MAAM,QAAQ,GAAG,IAAI,8BAAY,CAC/B,IAAI,CAAC,SAAS,EACd,IAAI,CAAC,QAAQ,EACb,IAAI,CAAC,WAAW,EAChB,IAAI,CAAC,UAAU,EACf,IAAI,CAAC,SAAS,EACd,IAAI,CAAC,aAAa,EAClB,IAAI,CAAC,OAAO,EACZ,IAAI,CAAC,UAAU,CAChB,CAAC;YACF,QAAQ,CAAC,YAAY,EAAE,CAAC;YACxB,OAAO,QAAQ,CAAC;QAClB,CAAC;QACD,UAAU,EAAE,IAAI;QAChB,YAAY,EAAE,IAAI;KACnB,CAAC,CAAC;IAEH,gCAAgC;IAChC,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED;;GAEG;AACI,KAAK,UAAU,yBAAyB,CAC7C,gBAA2C,EAC3C,IAAY,EACZ,SAAoB,EACpB,QAAmB,EACnB,OAAO,GAAG,IAAI,EACd,UAAU,GAAG,IAAI,EACjB,GAAG,eAAsB;IAEzB,IAAI,CAAC,IAAA,eAAU,EAAC,IAAI,CAAC,EAAE,CAAC;QACtB,MAAM,IAAI,kCAAgB,CAAC,sCAAoB,CAAC,iBAAiB,EAAE,IAAI,CAAC,CAAC;IAC3E,CAAC;IAED,wCAAwC;IACxC,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,MAAM,UAAU,GAAG,IAAA,qBAAgB,EAAC,IAAI,CAAC,CAAC;QAC1C,MAAM,SAAS,GAAG,iBAAQ,CAAC,KAAK,CAAC,UAAU,CAA+B,CAAC;QAC3E,QAAQ;YACN,MAAM,iCAAe,CAAC,WAAW,EAAE,CAAC,eAAe,CAAC,0BAA0B,CAC5E,SAAS,CACV,CAAC;IACN,CAAC;IAED,OAAO,iBAAiB,CACtB,gBAAgB,EAChB,IAAI,EACJ,SAAS,EACT,QAAQ,EACR,OAAO,EACP,UAAU,EACV,GAAG,eAAe,CACnB,CAAC;AACJ,CAAC"}
@@ -0,0 +1,50 @@
1
+ /**
2
+ * BrightChain API Constants Module
3
+ *
4
+ * This module extends base constants from @digitaldefiance/node-express-suite
5
+ * using createExpressConstants() and adds API-specific constants.
6
+ *
7
+ * Base constants (from @digitaldefiance/node-express-suite):
8
+ * - PBKDF2: Password-based key derivation configuration
9
+ * - CHECKSUM: SHA3 checksum configuration
10
+ * - FEC: Forward error correction settings
11
+ * - KEYRING: Keyring algorithm configuration
12
+ * - ENCRYPTION: Encryption settings
13
+ * - Express Configuration: Express app settings, CORS, CSP, etc.
14
+ * - JWT: Base JWT configuration
15
+ * - Session: Session management settings
16
+ *
17
+ * API-specific constants:
18
+ * - WRAPPED_KEY: Wrapped key operations
19
+ *
20
+ * @see {@link https://github.com/Digital-Defiance/node-express-suite} for base constants
21
+ * @module constants
22
+ */
23
+ import { IApiConstants } from './interfaces/api-constants';
24
+ /**
25
+ * API-specific constants for wrapped key operations
26
+ * These constants define the cryptographic parameters for wrapping and unwrapping keys
27
+ */
28
+ export declare const WRAPPED_KEY: {
29
+ readonly SALT_SIZE: 32;
30
+ readonly IV_SIZE: 16;
31
+ readonly MASTER_KEY_SIZE: 32;
32
+ readonly MIN_ITERATIONS: 100000;
33
+ };
34
+ /**
35
+ * API Constants extending from @digitaldefiance/node-express-suite
36
+ *
37
+ * Uses createExpressConstants() to generate base constants for Express applications,
38
+ * then adds API-specific constants (WRAPPED_KEY).
39
+ *
40
+ * Includes all base constants:
41
+ * - PBKDF2, CHECKSUM, FEC, KEYRING, ENCRYPTION (cryptographic)
42
+ * - CORS, CSP, JWT, Session (Express/API)
43
+ *
44
+ * Plus API-specific constants:
45
+ * - WRAPPED_KEY (key wrapping operations)
46
+ *
47
+ * @see {@link https://github.com/Digital-Defiance/node-express-suite} for base constants
48
+ */
49
+ export declare const Constants: IApiConstants;
50
+ //# sourceMappingURL=constants.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../../brightchain-api-lib/src/lib/constants.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAGH,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAE3D;;;GAGG;AACH,eAAO,MAAM,WAAW;;;;;CAKd,CAAC;AAEX;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,SAAS,EAAE,aAKvB,CAAC"}
@@ -0,0 +1,58 @@
1
+ "use strict";
2
+ /**
3
+ * BrightChain API Constants Module
4
+ *
5
+ * This module extends base constants from @digitaldefiance/node-express-suite
6
+ * using createExpressConstants() and adds API-specific constants.
7
+ *
8
+ * Base constants (from @digitaldefiance/node-express-suite):
9
+ * - PBKDF2: Password-based key derivation configuration
10
+ * - CHECKSUM: SHA3 checksum configuration
11
+ * - FEC: Forward error correction settings
12
+ * - KEYRING: Keyring algorithm configuration
13
+ * - ENCRYPTION: Encryption settings
14
+ * - Express Configuration: Express app settings, CORS, CSP, etc.
15
+ * - JWT: Base JWT configuration
16
+ * - Session: Session management settings
17
+ *
18
+ * API-specific constants:
19
+ * - WRAPPED_KEY: Wrapped key operations
20
+ *
21
+ * @see {@link https://github.com/Digital-Defiance/node-express-suite} for base constants
22
+ * @module constants
23
+ */
24
+ Object.defineProperty(exports, "__esModule", { value: true });
25
+ exports.Constants = exports.WRAPPED_KEY = void 0;
26
+ const node_express_suite_1 = require("@digitaldefiance/node-express-suite");
27
+ /**
28
+ * API-specific constants for wrapped key operations
29
+ * These constants define the cryptographic parameters for wrapping and unwrapping keys
30
+ */
31
+ exports.WRAPPED_KEY = {
32
+ SALT_SIZE: 32,
33
+ IV_SIZE: 16,
34
+ MASTER_KEY_SIZE: 32,
35
+ MIN_ITERATIONS: 100000,
36
+ };
37
+ /**
38
+ * API Constants extending from @digitaldefiance/node-express-suite
39
+ *
40
+ * Uses createExpressConstants() to generate base constants for Express applications,
41
+ * then adds API-specific constants (WRAPPED_KEY).
42
+ *
43
+ * Includes all base constants:
44
+ * - PBKDF2, CHECKSUM, FEC, KEYRING, ENCRYPTION (cryptographic)
45
+ * - CORS, CSP, JWT, Session (Express/API)
46
+ *
47
+ * Plus API-specific constants:
48
+ * - WRAPPED_KEY (key wrapping operations)
49
+ *
50
+ * @see {@link https://github.com/Digital-Defiance/node-express-suite} for base constants
51
+ */
52
+ exports.Constants = {
53
+ ...(0, node_express_suite_1.createExpressConstants)('brightchain.io', 'brightchain.io', {
54
+ Site: 'BrightChain',
55
+ }),
56
+ WRAPPED_KEY: exports.WRAPPED_KEY,
57
+ };
58
+ //# sourceMappingURL=constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../../brightchain-api-lib/src/lib/constants.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;;;AAEH,4EAA6E;AAG7E;;;GAGG;AACU,QAAA,WAAW,GAAG;IACzB,SAAS,EAAE,EAAW;IACtB,OAAO,EAAE,EAAW;IACpB,eAAe,EAAE,EAAW;IAC5B,cAAc,EAAE,MAAe;CACvB,CAAC;AAEX;;;;;;;;;;;;;;GAcG;AACU,QAAA,SAAS,GAAkB;IACtC,GAAG,IAAA,2CAAsB,EAAC,gBAAgB,EAAE,gBAAgB,EAAE;QAC5D,IAAI,EAAE,aAAa;KACpB,CAAC;IACF,WAAW,EAAX,mBAAW;CACZ,CAAC"}
@@ -0,0 +1,50 @@
1
+ import { ApiResponse, FlexibleValidationChain, RouteConfig } from '@digitaldefiance/node-express-suite';
2
+ import { IRequestUserDTO } from '@digitaldefiance/suite-core-lib';
3
+ import { NextFunction, Request, Response, Router } from 'express';
4
+ import { IUserDocument } from '../documents/user';
5
+ import { IApplication } from '../interfaces/application';
6
+ import { StringLanguage } from '../interfaces/request-user';
7
+ export declare abstract class BaseController<T extends ApiResponse, H extends object> {
8
+ readonly router: Router;
9
+ private activeRequest;
10
+ private activeResponse;
11
+ readonly application: IApplication;
12
+ protected routeDefinitions: RouteConfig<H, StringLanguage>[];
13
+ protected handlers: H;
14
+ constructor(application: IApplication);
15
+ protected abstract initRouteDefinitions(): void;
16
+ private getAuthenticationMiddleware;
17
+ private getCryptoAuthenticationMiddleware;
18
+ private getValidationMiddleware;
19
+ private createValidationHandler;
20
+ private createDynamicValidationHandler;
21
+ private createRequestHandler;
22
+ /**
23
+ * Initializes the routes for the controller.
24
+ */
25
+ private initializeRoutes;
26
+ /**
27
+ * Authenticates the request by checking the token. Also populates the request with the user object.
28
+ * @param route The route config
29
+ * @param req The request object
30
+ * @param res The response object
31
+ * @param next The next function
32
+ */
33
+ protected authenticateRequest(route: RouteConfig<H, StringLanguage>, req: Request, res: Response<T>, next: NextFunction): Promise<void>;
34
+ private handleBooleanFields;
35
+ /**
36
+ * If express-validator flagged any errors, throw an error.
37
+ * @param req The request object
38
+ * @param res The response object
39
+ * @param next The next function
40
+ * @param validationArray An array of express validation chains that were applied to the request.
41
+ * @returns
42
+ */
43
+ protected checkRequestValidationAndThrow(req: Request, res: Response, next: NextFunction, validationArray?: FlexibleValidationChain<StringLanguage>): void;
44
+ get user(): IRequestUserDTO;
45
+ get validatedBody(): Record<string, any>;
46
+ get req(): Request;
47
+ get res(): Response;
48
+ protected validateAndFetchRequestUser(req: Request): Promise<IUserDocument>;
49
+ }
50
+ //# sourceMappingURL=base.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../../../../brightchain-api-lib/src/lib/controllers/base.ts"],"names":[],"mappings":"AAMA,OAAO,EACL,WAAW,EAGX,uBAAuB,EAEvB,WAAW,EAKZ,MAAM,qCAAqC,CAAC;AAC7C,OAAO,EACL,eAAe,EAGhB,MAAM,iCAAiC,CAAC;AACzC,OAAO,EACL,YAAY,EACZ,OAAO,EAEP,QAAQ,EACR,MAAM,EACP,MAAM,SAAS,CAAC;AAMjB,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAGlD,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAE5D,8BAAsB,cAAc,CAAC,CAAC,SAAS,WAAW,EAAE,CAAC,SAAS,MAAM;IAC1E,SAAgB,MAAM,EAAE,MAAM,CAAC;IAC/B,OAAO,CAAC,aAAa,CAAwB;IAC7C,OAAO,CAAC,cAAc,CAAyB;IAC/C,SAAgB,WAAW,EAAE,YAAY,CAAC;IAC1C,SAAS,CAAC,gBAAgB,EAAE,WAAW,CAAC,CAAC,EAAE,cAAc,CAAC,EAAE,CAAM;IAClE,SAAS,CAAC,QAAQ,EAAE,CAAC,CAAC;gBAEH,WAAW,EAAE,YAAY;IAQ5C,SAAS,CAAC,QAAQ,CAAC,oBAAoB,IAAI,IAAI;IAE/C,OAAO,CAAC,2BAA2B;IAkBnC,OAAO,CAAC,iCAAiC;IAuBzC,OAAO,CAAC,uBAAuB;IAc/B,OAAO,CAAC,uBAAuB;IAY/B,OAAO,CAAC,8BAA8B;IAqBtC,OAAO,CAAC,oBAAoB;IA2C5B;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAkBxB;;;;;;OAMG;cACa,mBAAmB,CACjC,KAAK,EAAE,WAAW,CAAC,CAAC,EAAE,cAAc,CAAC,EACrC,GAAG,EAAE,OAAO,EACZ,GAAG,EAAE,QAAQ,CAAC,CAAC,CAAC,EAChB,IAAI,EAAE,YAAY,GACjB,OAAO,CAAC,IAAI,CAAC;IAMhB,OAAO,CAAC,mBAAmB;IA6B3B;;;;;;;OAOG;IACH,SAAS,CAAC,8BAA8B,CACtC,GAAG,EAAE,OAAO,EACZ,GAAG,EAAE,QAAQ,EACb,IAAI,EAAE,YAAY,EAClB,eAAe,GAAE,uBAAuB,CAAC,cAAc,CAAM,GAC5D,IAAI;IA2BP,IAAW,IAAI,IAAI,eAAe,CAQjC;IAED,IAAW,aAAa,IAAI,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAQ9C;IAED,IAAW,GAAG,IAAI,OAAO,CAKxB;IAED,IAAW,GAAG,IAAI,QAAQ,CAKzB;cAEe,2BAA2B,CACzC,GAAG,EAAE,OAAO,GACX,OAAO,CAAC,aAAa,CAAC;CAW1B"}
@@ -0,0 +1,235 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.BaseController = void 0;
4
+ /* eslint-disable @typescript-eslint/no-explicit-any */
5
+ const i18n_lib_1 = require("@digitaldefiance/i18n-lib");
6
+ const node_express_suite_1 = require("@digitaldefiance/node-express-suite");
7
+ const suite_core_lib_1 = require("@digitaldefiance/suite-core-lib");
8
+ const express_1 = require("express");
9
+ const express_validator_1 = require("express-validator");
10
+ const express_validation_1 = require("../errors/express-validation");
11
+ const missing_validated_data_1 = require("../errors/missing-validated-data");
12
+ class BaseController {
13
+ constructor(application) {
14
+ this.activeRequest = null;
15
+ this.activeResponse = null;
16
+ this.routeDefinitions = [];
17
+ this.application = application;
18
+ this.router = (0, express_1.Router)();
19
+ this.handlers = {};
20
+ this.initRouteDefinitions();
21
+ this.initializeRoutes();
22
+ }
23
+ getAuthenticationMiddleware(route) {
24
+ if (route.useAuthentication) {
25
+ return [
26
+ async (req, res, next) => {
27
+ try {
28
+ await this.authenticateRequest(route, req, res, next);
29
+ }
30
+ catch (err) {
31
+ next(err);
32
+ }
33
+ },
34
+ ];
35
+ }
36
+ else {
37
+ return [];
38
+ }
39
+ }
40
+ getCryptoAuthenticationMiddleware(route) {
41
+ if (route.useCryptoAuthentication) {
42
+ return [
43
+ async (req, res, next) => {
44
+ try {
45
+ await (0, node_express_suite_1.authenticateCrypto)(this.application, req, res, next);
46
+ }
47
+ catch (err) {
48
+ next(err);
49
+ }
50
+ },
51
+ ];
52
+ }
53
+ else {
54
+ return [];
55
+ }
56
+ }
57
+ getValidationMiddleware(route) {
58
+ if (Array.isArray(route.validation) && route.validation.length > 0) {
59
+ return [
60
+ ...route.validation,
61
+ this.createValidationHandler(route.validation),
62
+ ];
63
+ }
64
+ else if (typeof route.validation === 'function') {
65
+ return [this.createDynamicValidationHandler(route.validation)];
66
+ }
67
+ return [];
68
+ }
69
+ createValidationHandler(validation) {
70
+ return (req, res, next) => {
71
+ try {
72
+ this.checkRequestValidationAndThrow(req, res, next, validation);
73
+ }
74
+ catch (error) {
75
+ next(error);
76
+ }
77
+ };
78
+ }
79
+ createDynamicValidationHandler(validationFn) {
80
+ return async (req, res, next) => {
81
+ try {
82
+ const validationArray = validationFn(i18n_lib_1.GlobalActiveContext.instance.userLanguage);
83
+ await Promise.all(validationArray.map((v) => v.run(req)));
84
+ await this.checkRequestValidationAndThrow(req, res, next, validationArray);
85
+ }
86
+ catch (error) {
87
+ next(error);
88
+ }
89
+ };
90
+ }
91
+ createRequestHandler(config) {
92
+ return async (req, res, next) => {
93
+ this.activeRequest = req;
94
+ this.activeResponse = res;
95
+ if (config.useAuthentication && !this.activeRequest?.user) {
96
+ (0, node_express_suite_1.handleError)(new i18n_lib_1.HandleableError(new Error((0, suite_core_lib_1.getSuiteCoreTranslation)(suite_core_lib_1.SuiteCoreStringKey.Common_Unauthorized)), {
97
+ statusCode: 401,
98
+ }), res, node_express_suite_1.sendApiMessageResponse, next);
99
+ return;
100
+ }
101
+ try {
102
+ const handler = this.handlers[config.handlerKey];
103
+ const sendFunc = config.rawJsonHandler
104
+ ? node_express_suite_1.sendRawJsonResponse.bind(this)
105
+ : node_express_suite_1.sendApiMessageResponse.bind(this);
106
+ const handlerArgs = config.handlerArgs ?? [];
107
+ const { statusCode, response, headers } = await handler(req, ...handlerArgs);
108
+ if (headers) {
109
+ res.set(headers);
110
+ }
111
+ sendFunc(statusCode, response, res);
112
+ }
113
+ catch (error) {
114
+ (0, node_express_suite_1.handleError)(error, res, node_express_suite_1.sendApiMessageResponse, next);
115
+ }
116
+ };
117
+ }
118
+ /**
119
+ * Initializes the routes for the controller.
120
+ */
121
+ initializeRoutes() {
122
+ Object.values(this.routeDefinitions).forEach((config) => {
123
+ this.router[config.method](config.path, ...[
124
+ ...this.getAuthenticationMiddleware(config),
125
+ node_express_suite_1.setGlobalContextLanguageFromRequest,
126
+ ...this.getValidationMiddleware(config),
127
+ ...this.getCryptoAuthenticationMiddleware(config),
128
+ ...(config.middleware ?? []),
129
+ this.createRequestHandler(config),
130
+ ]);
131
+ });
132
+ }
133
+ /**
134
+ * Authenticates the request by checking the token. Also populates the request with the user object.
135
+ * @param route The route config
136
+ * @param req The request object
137
+ * @param res The response object
138
+ * @param next The next function
139
+ */
140
+ async authenticateRequest(route, req, res, next) {
141
+ // Pass the real `next` function directly to the middleware.
142
+ // It will now correctly control the request lifecycle.
143
+ await (0, node_express_suite_1.authenticateToken)(this.application, req, res, next);
144
+ }
145
+ handleBooleanFields(validationArray, validatedBody) {
146
+ // false booleans will be missing from validatedBody, so we need to add them
147
+ validationArray.forEach((validation) => {
148
+ const fieldChains = validation.builder.build().fields;
149
+ fieldChains.forEach((field) => {
150
+ const hasBooleanValidator = validation.builder
151
+ .build()
152
+ .stack.some((item) => {
153
+ return (item.validator &&
154
+ typeof item.validator === 'function' &&
155
+ item.validator.name === 'isBoolean' &&
156
+ !item.negated);
157
+ });
158
+ // If the field has a boolean validator and it's not in the validated body, add it
159
+ if (hasBooleanValidator && !(field in validatedBody)) {
160
+ validatedBody[field] = false;
161
+ }
162
+ });
163
+ });
164
+ return validatedBody;
165
+ }
166
+ /**
167
+ * If express-validator flagged any errors, throw an error.
168
+ * @param req The request object
169
+ * @param res The response object
170
+ * @param next The next function
171
+ * @param validationArray An array of express validation chains that were applied to the request.
172
+ * @returns
173
+ */
174
+ checkRequestValidationAndThrow(req, res, next, validationArray = []) {
175
+ const errors = (0, express_validator_1.validationResult)(req);
176
+ if (!errors.isEmpty()) {
177
+ throw new express_validation_1.ExpressValidationError(errors);
178
+ }
179
+ // Create an object with only the validated fields
180
+ const validatedBody = (0, express_validator_1.matchedData)(req, {
181
+ locations: ['body'], // Only match data from request body
182
+ includeOptionals: false, // Exclude fields that weren't validated
183
+ });
184
+ const language = (i18n_lib_1.GlobalActiveContext.instance.userLanguage ??
185
+ i18n_lib_1.LanguageCodes.EN_US);
186
+ // If validationArray is a function, call it with the language
187
+ const valArray = typeof validationArray === 'function'
188
+ ? validationArray(language)
189
+ : validationArray;
190
+ // false booleans will be missing from validatedBody, so we need to add them
191
+ // Attach the validated fields to the request object
192
+ req.validatedBody = this.handleBooleanFields(valArray, validatedBody);
193
+ next();
194
+ }
195
+ get user() {
196
+ if (!this.activeRequest) {
197
+ throw new Error((0, suite_core_lib_1.getSuiteCoreTranslation)(suite_core_lib_1.SuiteCoreStringKey.Common_NoActiveRequest));
198
+ }
199
+ if (!this.activeRequest.user) {
200
+ throw new Error((0, suite_core_lib_1.getSuiteCoreTranslation)(suite_core_lib_1.SuiteCoreStringKey.Common_NoUserOnRequest));
201
+ }
202
+ return this.activeRequest.user;
203
+ }
204
+ get validatedBody() {
205
+ if (!this.activeRequest) {
206
+ throw new Error((0, suite_core_lib_1.getSuiteCoreTranslation)(suite_core_lib_1.SuiteCoreStringKey.Common_NoActiveRequest));
207
+ }
208
+ if (!this.activeRequest.validatedBody) {
209
+ throw new missing_validated_data_1.MissingValidatedDataError();
210
+ }
211
+ return this.activeRequest.validatedBody;
212
+ }
213
+ get req() {
214
+ if (!this.activeRequest) {
215
+ throw new Error((0, suite_core_lib_1.getSuiteCoreTranslation)(suite_core_lib_1.SuiteCoreStringKey.Common_NoActiveRequest));
216
+ }
217
+ return this.activeRequest;
218
+ }
219
+ get res() {
220
+ if (!this.activeResponse) {
221
+ throw new Error((0, suite_core_lib_1.getSuiteCoreTranslation)(suite_core_lib_1.SuiteCoreStringKey.Common_NoActiveResponse));
222
+ }
223
+ return this.activeResponse;
224
+ }
225
+ async validateAndFetchRequestUser(req) {
226
+ if (!req.user) {
227
+ throw new i18n_lib_1.HandleableError(new Error((0, suite_core_lib_1.getSuiteCoreTranslation)(suite_core_lib_1.SuiteCoreStringKey.Common_Unauthorized)), {
228
+ statusCode: 401,
229
+ });
230
+ }
231
+ throw new Error('Not implemented');
232
+ }
233
+ }
234
+ exports.BaseController = BaseController;
235
+ //# sourceMappingURL=base.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base.js","sourceRoot":"","sources":["../../../../../brightchain-api-lib/src/lib/controllers/base.ts"],"names":[],"mappings":"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"}