@brightchain/brightchain-api-lib 0.15.0 → 0.17.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (315) hide show
  1. package/package.json +4 -4
  2. package/src/browser.d.ts +13 -0
  3. package/src/browser.d.ts.map +1 -0
  4. package/src/browser.js +16 -0
  5. package/src/browser.js.map +1 -0
  6. package/src/index.d.ts +5 -1
  7. package/src/index.d.ts.map +1 -1
  8. package/src/index.js +7 -1
  9. package/src/index.js.map +1 -1
  10. package/src/lib/adapters/brightChainDbDocumentStoreAdapter.d.ts +24 -0
  11. package/src/lib/adapters/brightChainDbDocumentStoreAdapter.d.ts.map +1 -0
  12. package/src/lib/adapters/brightChainDbDocumentStoreAdapter.js +53 -0
  13. package/src/lib/adapters/brightChainDbDocumentStoreAdapter.js.map +1 -0
  14. package/src/lib/application-base.d.ts +8 -37
  15. package/src/lib/application-base.d.ts.map +1 -1
  16. package/src/lib/application-base.js +8 -80
  17. package/src/lib/application-base.js.map +1 -1
  18. package/src/lib/application.d.ts +56 -7
  19. package/src/lib/application.d.ts.map +1 -1
  20. package/src/lib/application.js +169 -134
  21. package/src/lib/application.js.map +1 -1
  22. package/src/lib/availability/gossipService.d.ts +20 -1
  23. package/src/lib/availability/gossipService.d.ts.map +1 -1
  24. package/src/lib/availability/gossipService.js +59 -0
  25. package/src/lib/availability/gossipService.js.map +1 -1
  26. package/src/lib/availability/index.d.ts +1 -0
  27. package/src/lib/availability/index.d.ts.map +1 -1
  28. package/src/lib/availability/index.js +1 -0
  29. package/src/lib/availability/index.js.map +1 -1
  30. package/src/lib/availability/poolDiscoveryService.d.ts +117 -0
  31. package/src/lib/availability/poolDiscoveryService.d.ts.map +1 -0
  32. package/src/lib/availability/poolDiscoveryService.js +218 -0
  33. package/src/lib/availability/poolDiscoveryService.js.map +1 -0
  34. package/src/lib/blockFetch/httpBlockFetchTransport.d.ts.map +1 -1
  35. package/src/lib/blockFetch/httpBlockFetchTransport.js.map +1 -1
  36. package/src/lib/constants.js +2 -2
  37. package/src/lib/constants.js.map +1 -1
  38. package/src/lib/controllers/api/blocks.d.ts.map +1 -1
  39. package/src/lib/controllers/api/blocks.js +290 -290
  40. package/src/lib/controllers/api/blocks.js.map +1 -1
  41. package/src/lib/controllers/api/brightpass.d.ts.map +1 -1
  42. package/src/lib/controllers/api/brightpass.js +270 -274
  43. package/src/lib/controllers/api/brightpass.js.map +1 -1
  44. package/src/lib/controllers/api/energy.d.ts.map +1 -1
  45. package/src/lib/controllers/api/energy.js +93 -93
  46. package/src/lib/controllers/api/energy.js.map +1 -1
  47. package/src/lib/controllers/api/health.d.ts +4 -4
  48. package/src/lib/controllers/api/health.d.ts.map +1 -1
  49. package/src/lib/controllers/api/health.js.map +1 -1
  50. package/src/lib/controllers/api/i18n.d.ts.map +1 -1
  51. package/src/lib/controllers/api/i18n.js +8 -8
  52. package/src/lib/controllers/api/i18n.js.map +1 -1
  53. package/src/lib/controllers/api/index.d.ts +1 -0
  54. package/src/lib/controllers/api/index.d.ts.map +1 -1
  55. package/src/lib/controllers/api/index.js +1 -0
  56. package/src/lib/controllers/api/index.js.map +1 -1
  57. package/src/lib/controllers/api/introspection.d.ts +60 -0
  58. package/src/lib/controllers/api/introspection.d.ts.map +1 -0
  59. package/src/lib/controllers/api/introspection.js +375 -0
  60. package/src/lib/controllers/api/introspection.js.map +1 -0
  61. package/src/lib/controllers/api/nodes.d.ts +7 -6
  62. package/src/lib/controllers/api/nodes.d.ts.map +1 -1
  63. package/src/lib/controllers/api/nodes.js.map +1 -1
  64. package/src/lib/controllers/api/quorum.d.ts.map +1 -1
  65. package/src/lib/controllers/api/quorum.js +483 -483
  66. package/src/lib/controllers/api/quorum.js.map +1 -1
  67. package/src/lib/controllers/api/sessions.d.ts.map +1 -1
  68. package/src/lib/controllers/api/sessions.js +8 -8
  69. package/src/lib/controllers/api/sessions.js.map +1 -1
  70. package/src/lib/controllers/api/sync.d.ts +6 -5
  71. package/src/lib/controllers/api/sync.d.ts.map +1 -1
  72. package/src/lib/controllers/api/sync.js.map +1 -1
  73. package/src/lib/controllers/api/user.d.ts.map +1 -1
  74. package/src/lib/controllers/api/user.js +260 -180
  75. package/src/lib/controllers/api/user.js.map +1 -1
  76. package/src/lib/controllers/base.d.ts +1 -2
  77. package/src/lib/controllers/base.d.ts.map +1 -1
  78. package/src/lib/controllers/base.js +0 -1
  79. package/src/lib/controllers/base.js.map +1 -1
  80. package/src/lib/databaseInit.d.ts +28 -0
  81. package/src/lib/databaseInit.d.ts.map +1 -0
  82. package/src/lib/databaseInit.js +107 -0
  83. package/src/lib/databaseInit.js.map +1 -0
  84. package/src/lib/enumerations/brightChainApiStrings.d.ts +4 -0
  85. package/src/lib/enumerations/brightChainApiStrings.d.ts.map +1 -1
  86. package/src/lib/enumerations/brightChainApiStrings.js +4 -0
  87. package/src/lib/enumerations/brightChainApiStrings.js.map +1 -1
  88. package/src/lib/enumerations/index.d.ts +1 -0
  89. package/src/lib/enumerations/index.d.ts.map +1 -1
  90. package/src/lib/enumerations/index.js +1 -0
  91. package/src/lib/enumerations/index.js.map +1 -1
  92. package/src/lib/enumerations/websocketMessageType.d.ts +5 -1
  93. package/src/lib/enumerations/websocketMessageType.d.ts.map +1 -1
  94. package/src/lib/enumerations/websocketMessageType.js +4 -0
  95. package/src/lib/enumerations/websocketMessageType.js.map +1 -1
  96. package/src/lib/environment.d.ts +5 -0
  97. package/src/lib/environment.d.ts.map +1 -1
  98. package/src/lib/environment.js +7 -0
  99. package/src/lib/environment.js.map +1 -1
  100. package/src/lib/errors/index.d.ts +1 -0
  101. package/src/lib/errors/index.d.ts.map +1 -1
  102. package/src/lib/errors/index.js +1 -0
  103. package/src/lib/errors/index.js.map +1 -1
  104. package/src/lib/errors/memberIndexSchemaValidationError.d.ts +6 -0
  105. package/src/lib/errors/memberIndexSchemaValidationError.d.ts.map +1 -0
  106. package/src/lib/errors/memberIndexSchemaValidationError.js +15 -0
  107. package/src/lib/errors/memberIndexSchemaValidationError.js.map +1 -0
  108. package/src/lib/factories/blockStoreFactory.d.ts +2 -13
  109. package/src/lib/factories/blockStoreFactory.d.ts.map +1 -1
  110. package/src/lib/factories/blockStoreFactory.js +5 -10
  111. package/src/lib/factories/blockStoreFactory.js.map +1 -1
  112. package/src/lib/interfaces/application.d.ts +7 -1
  113. package/src/lib/interfaces/application.d.ts.map +1 -1
  114. package/src/lib/interfaces/blocksHandlers.d.ts +3 -3
  115. package/src/lib/interfaces/blocksHandlers.d.ts.map +1 -1
  116. package/src/lib/interfaces/brightchain-init-result.d.ts +17 -0
  117. package/src/lib/interfaces/brightchain-init-result.d.ts.map +1 -0
  118. package/src/lib/interfaces/brightchain-init-result.js +9 -0
  119. package/src/lib/interfaces/brightchain-init-result.js.map +1 -0
  120. package/src/lib/interfaces/cblHandlers.d.ts +3 -2
  121. package/src/lib/interfaces/cblHandlers.d.ts.map +1 -1
  122. package/src/lib/interfaces/environment.d.ts +4 -0
  123. package/src/lib/interfaces/environment.d.ts.map +1 -1
  124. package/src/lib/interfaces/index.d.ts +5 -0
  125. package/src/lib/interfaces/index.d.ts.map +1 -1
  126. package/src/lib/interfaces/introspectionApiResponses.d.ts +66 -0
  127. package/src/lib/interfaces/introspectionApiResponses.d.ts.map +1 -0
  128. package/src/lib/interfaces/introspectionApiResponses.js +3 -0
  129. package/src/lib/interfaces/introspectionApiResponses.js.map +1 -0
  130. package/src/lib/interfaces/members-handlers.d.ts +11 -0
  131. package/src/lib/interfaces/members-handlers.d.ts.map +1 -0
  132. package/src/lib/interfaces/members-handlers.js +3 -0
  133. package/src/lib/interfaces/members-handlers.js.map +1 -0
  134. package/src/lib/interfaces/responses/api-backup-codes-response.d.ts +2 -5
  135. package/src/lib/interfaces/responses/api-backup-codes-response.d.ts.map +1 -1
  136. package/src/lib/interfaces/responses/api-challenge-response.d.ts +2 -5
  137. package/src/lib/interfaces/responses/api-challenge-response.d.ts.map +1 -1
  138. package/src/lib/interfaces/responses/api-code-count-response.d.ts +2 -5
  139. package/src/lib/interfaces/responses/api-code-count-response.d.ts.map +1 -1
  140. package/src/lib/interfaces/responses/api-detailed-health-response.d.ts +5 -0
  141. package/src/lib/interfaces/responses/api-detailed-health-response.d.ts.map +1 -0
  142. package/src/lib/interfaces/responses/api-detailed-health-response.js +3 -0
  143. package/src/lib/interfaces/responses/api-detailed-health-response.js.map +1 -0
  144. package/src/lib/interfaces/responses/api-discover-block-response.d.ts +5 -0
  145. package/src/lib/interfaces/responses/api-discover-block-response.d.ts.map +1 -0
  146. package/src/lib/interfaces/responses/api-discover-block-response.js +3 -0
  147. package/src/lib/interfaces/responses/api-discover-block-response.js.map +1 -0
  148. package/src/lib/interfaces/responses/api-error.d.ts +5 -0
  149. package/src/lib/interfaces/responses/api-error.d.ts.map +1 -0
  150. package/src/lib/interfaces/responses/api-error.js +3 -0
  151. package/src/lib/interfaces/responses/api-error.js.map +1 -0
  152. package/src/lib/interfaces/responses/api-express-validation-error.d.ts +7 -0
  153. package/src/lib/interfaces/responses/api-express-validation-error.d.ts.map +1 -0
  154. package/src/lib/interfaces/responses/api-express-validation-error.js +3 -0
  155. package/src/lib/interfaces/responses/api-express-validation-error.js.map +1 -0
  156. package/src/lib/interfaces/responses/api-get-block-response.d.ts +5 -0
  157. package/src/lib/interfaces/responses/api-get-block-response.d.ts.map +1 -0
  158. package/src/lib/interfaces/responses/api-get-block-response.js +3 -0
  159. package/src/lib/interfaces/responses/api-get-block-response.js.map +1 -0
  160. package/src/lib/interfaces/responses/api-get-node-response.d.ts +5 -0
  161. package/src/lib/interfaces/responses/api-get-node-response.d.ts.map +1 -0
  162. package/src/lib/interfaces/responses/api-get-node-response.js +3 -0
  163. package/src/lib/interfaces/responses/api-get-node-response.js.map +1 -0
  164. package/src/lib/interfaces/responses/api-health-response.d.ts +5 -0
  165. package/src/lib/interfaces/responses/api-health-response.d.ts.map +1 -0
  166. package/src/lib/interfaces/responses/api-health-response.js +3 -0
  167. package/src/lib/interfaces/responses/api-health-response.js.map +1 -0
  168. package/src/lib/interfaces/responses/api-list-nodes-response.d.ts +5 -0
  169. package/src/lib/interfaces/responses/api-list-nodes-response.d.ts.map +1 -0
  170. package/src/lib/interfaces/responses/api-list-nodes-response.js +3 -0
  171. package/src/lib/interfaces/responses/api-list-nodes-response.js.map +1 -0
  172. package/src/lib/interfaces/responses/api-login-response.d.ts +2 -14
  173. package/src/lib/interfaces/responses/api-login-response.d.ts.map +1 -1
  174. package/src/lib/interfaces/responses/api-members-response.d.ts +8 -0
  175. package/src/lib/interfaces/responses/api-members-response.d.ts.map +1 -0
  176. package/src/lib/interfaces/responses/api-members-response.js +3 -0
  177. package/src/lib/interfaces/responses/api-members-response.js.map +1 -0
  178. package/src/lib/interfaces/responses/api-mnemonic-response.d.ts +2 -5
  179. package/src/lib/interfaces/responses/api-mnemonic-response.d.ts.map +1 -1
  180. package/src/lib/interfaces/responses/api-reconcile-response.d.ts +5 -0
  181. package/src/lib/interfaces/responses/api-reconcile-response.d.ts.map +1 -0
  182. package/src/lib/interfaces/responses/api-reconcile-response.js +3 -0
  183. package/src/lib/interfaces/responses/api-reconcile-response.js.map +1 -0
  184. package/src/lib/interfaces/responses/api-register-node-response.d.ts +5 -0
  185. package/src/lib/interfaces/responses/api-register-node-response.d.ts.map +1 -0
  186. package/src/lib/interfaces/responses/api-register-node-response.js +3 -0
  187. package/src/lib/interfaces/responses/api-register-node-response.js.map +1 -0
  188. package/src/lib/interfaces/responses/api-registration-response.d.ts +2 -10
  189. package/src/lib/interfaces/responses/api-registration-response.d.ts.map +1 -1
  190. package/src/lib/interfaces/responses/api-replicate-block-response.d.ts +5 -0
  191. package/src/lib/interfaces/responses/api-replicate-block-response.d.ts.map +1 -0
  192. package/src/lib/interfaces/responses/api-replicate-block-response.js +3 -0
  193. package/src/lib/interfaces/responses/api-replicate-block-response.js.map +1 -0
  194. package/src/lib/interfaces/responses/api-request-user-response.d.ts +2 -6
  195. package/src/lib/interfaces/responses/api-request-user-response.d.ts.map +1 -1
  196. package/src/lib/interfaces/responses/api-status-code-response.d.ts +7 -0
  197. package/src/lib/interfaces/responses/api-status-code-response.d.ts.map +1 -0
  198. package/src/lib/interfaces/responses/api-status-code-response.js +3 -0
  199. package/src/lib/interfaces/responses/api-status-code-response.js.map +1 -0
  200. package/src/lib/interfaces/responses/api-store-block-response.d.ts +5 -0
  201. package/src/lib/interfaces/responses/api-store-block-response.d.ts.map +1 -0
  202. package/src/lib/interfaces/responses/api-store-block-response.js +3 -0
  203. package/src/lib/interfaces/responses/api-store-block-response.js.map +1 -0
  204. package/src/lib/interfaces/responses/api-store-cbl-response.d.ts +5 -0
  205. package/src/lib/interfaces/responses/api-store-cbl-response.d.ts.map +1 -0
  206. package/src/lib/interfaces/responses/api-store-cbl-response.js +3 -0
  207. package/src/lib/interfaces/responses/api-store-cbl-response.js.map +1 -0
  208. package/src/lib/interfaces/responses/api-sync-request-response.d.ts +5 -0
  209. package/src/lib/interfaces/responses/api-sync-request-response.d.ts.map +1 -0
  210. package/src/lib/interfaces/responses/api-sync-request-response.js +3 -0
  211. package/src/lib/interfaces/responses/api-sync-request-response.js.map +1 -0
  212. package/src/lib/interfaces/responses/block-data-response.d.ts +11 -0
  213. package/src/lib/interfaces/responses/block-data-response.d.ts.map +1 -0
  214. package/src/lib/interfaces/responses/block-data-response.js +3 -0
  215. package/src/lib/interfaces/responses/block-data-response.js.map +1 -0
  216. package/src/lib/interfaces/responses/block-location-response.d.ts +11 -0
  217. package/src/lib/interfaces/responses/block-location-response.d.ts.map +1 -0
  218. package/src/lib/interfaces/responses/block-location-response.js +3 -0
  219. package/src/lib/interfaces/responses/block-location-response.js.map +1 -0
  220. package/src/lib/interfaces/responses/index.d.ts +18 -0
  221. package/src/lib/interfaces/responses/index.d.ts.map +1 -1
  222. package/src/lib/interfaces/status-code-response.d.ts +1 -6
  223. package/src/lib/interfaces/status-code-response.d.ts.map +1 -1
  224. package/src/lib/interfaces/storage/client-session.d.ts +8 -0
  225. package/src/lib/interfaces/storage/client-session.d.ts.map +1 -0
  226. package/src/lib/interfaces/storage/client-session.js +3 -0
  227. package/src/lib/interfaces/storage/client-session.js.map +1 -0
  228. package/src/lib/interfaces/storage/collection.d.ts +9 -0
  229. package/src/lib/interfaces/storage/collection.d.ts.map +1 -0
  230. package/src/lib/interfaces/storage/collection.js +3 -0
  231. package/src/lib/interfaces/storage/collection.js.map +1 -0
  232. package/src/lib/interfaces/storage/database-lifecycle-hooks.d.ts +8 -0
  233. package/src/lib/interfaces/storage/database-lifecycle-hooks.d.ts.map +1 -0
  234. package/src/lib/interfaces/storage/database-lifecycle-hooks.js +3 -0
  235. package/src/lib/interfaces/storage/database-lifecycle-hooks.js.map +1 -0
  236. package/src/lib/interfaces/storage/database.d.ts +9 -0
  237. package/src/lib/interfaces/storage/database.d.ts.map +1 -0
  238. package/src/lib/interfaces/storage/database.js +3 -0
  239. package/src/lib/interfaces/storage/database.js.map +1 -0
  240. package/src/lib/interfaces/storage/document-types.d.ts +9 -0
  241. package/src/lib/interfaces/storage/document-types.d.ts.map +1 -0
  242. package/src/lib/interfaces/storage/document-types.js +10 -0
  243. package/src/lib/interfaces/storage/document-types.js.map +1 -0
  244. package/src/lib/interfaces/storage/index.d.ts +7 -0
  245. package/src/lib/interfaces/storage/index.d.ts.map +1 -0
  246. package/src/lib/interfaces/storage/index.js +7 -0
  247. package/src/lib/interfaces/storage/index.js.map +1 -0
  248. package/src/lib/interfaces/storage/memberIndexSchema.d.ts +11 -0
  249. package/src/lib/interfaces/storage/memberIndexSchema.d.ts.map +1 -0
  250. package/src/lib/interfaces/storage/memberIndexSchema.js +26 -0
  251. package/src/lib/interfaces/storage/memberIndexSchema.js.map +1 -0
  252. package/src/lib/interfaces/userApiResponse.d.ts +17 -0
  253. package/src/lib/interfaces/userApiResponse.d.ts.map +1 -0
  254. package/src/lib/interfaces/userApiResponse.js +3 -0
  255. package/src/lib/interfaces/userApiResponse.js.map +1 -0
  256. package/src/lib/interfaces/websocketMessages.d.ts +64 -1
  257. package/src/lib/interfaces/websocketMessages.d.ts.map +1 -1
  258. package/src/lib/middleware/index.d.ts +2 -0
  259. package/src/lib/middleware/index.d.ts.map +1 -0
  260. package/src/lib/middleware/index.js +6 -0
  261. package/src/lib/middleware/index.js.map +1 -0
  262. package/src/lib/middleware/validateBody.d.ts +13 -0
  263. package/src/lib/middleware/validateBody.d.ts.map +1 -0
  264. package/src/lib/middleware/validateBody.js +35 -0
  265. package/src/lib/middleware/validateBody.js.map +1 -0
  266. package/src/lib/middlewares/authentication.d.ts +2 -0
  267. package/src/lib/middlewares/authentication.d.ts.map +1 -1
  268. package/src/lib/middlewares/authentication.js.map +1 -1
  269. package/src/lib/routers/api.d.ts +27 -0
  270. package/src/lib/routers/api.d.ts.map +1 -1
  271. package/src/lib/routers/api.js +44 -0
  272. package/src/lib/routers/api.js.map +1 -1
  273. package/src/lib/routers/app.d.ts +22 -14
  274. package/src/lib/routers/app.d.ts.map +1 -1
  275. package/src/lib/routers/app.js +28 -116
  276. package/src/lib/routers/app.js.map +1 -1
  277. package/src/lib/services/auth.d.ts +3 -1
  278. package/src/lib/services/auth.d.ts.map +1 -1
  279. package/src/lib/services/auth.js +51 -4
  280. package/src/lib/services/auth.js.map +1 -1
  281. package/src/lib/services/brightchain-member-init.service.d.ts +66 -0
  282. package/src/lib/services/brightchain-member-init.service.d.ts.map +1 -0
  283. package/src/lib/services/brightchain-member-init.service.js +152 -0
  284. package/src/lib/services/brightchain-member-init.service.js.map +1 -0
  285. package/src/lib/services/brightpass.property.helpers.d.ts +23 -0
  286. package/src/lib/services/brightpass.property.helpers.d.ts.map +1 -0
  287. package/src/lib/services/brightpass.property.helpers.js +113 -0
  288. package/src/lib/services/brightpass.property.helpers.js.map +1 -0
  289. package/src/lib/services/clientWebSocketServer.d.ts +147 -0
  290. package/src/lib/services/clientWebSocketServer.d.ts.map +1 -0
  291. package/src/lib/services/clientWebSocketServer.js +437 -0
  292. package/src/lib/services/clientWebSocketServer.js.map +1 -0
  293. package/src/lib/services/index.d.ts +2 -0
  294. package/src/lib/services/index.d.ts.map +1 -1
  295. package/src/lib/services/index.js +2 -0
  296. package/src/lib/services/index.js.map +1 -1
  297. package/src/lib/stores/diskBlockAsyncStore.d.ts +4 -4
  298. package/src/lib/stores/diskBlockAsyncStore.d.ts.map +1 -1
  299. package/src/lib/stores/diskBlockAsyncStore.js.map +1 -1
  300. package/src/lib/stores/diskBlockStore.d.ts +82 -17
  301. package/src/lib/stores/diskBlockStore.d.ts.map +1 -1
  302. package/src/lib/stores/diskBlockStore.js +787 -19
  303. package/src/lib/stores/diskBlockStore.js.map +1 -1
  304. package/src/lib/stores/diskBlockSyncStore.d.ts +24 -5
  305. package/src/lib/stores/diskBlockSyncStore.d.ts.map +1 -1
  306. package/src/lib/stores/diskBlockSyncStore.js +30 -13
  307. package/src/lib/stores/diskBlockSyncStore.js.map +1 -1
  308. package/src/lib/upstream-stubs.d.ts +36 -0
  309. package/src/lib/upstream-stubs.d.ts.map +1 -0
  310. package/src/lib/upstream-stubs.js +43 -0
  311. package/src/lib/upstream-stubs.js.map +1 -0
  312. package/src/lib/validation/userValidation.d.ts +27 -0
  313. package/src/lib/validation/userValidation.d.ts.map +1 -0
  314. package/src/lib/validation/userValidation.js +70 -0
  315. package/src/lib/validation/userValidation.js.map +1 -0
@@ -0,0 +1,66 @@
1
+ /**
2
+ * @fileoverview BrightChainMemberInitService — initialises BrightChainDb and
3
+ * persists system/admin/member users as IMemberIndexDocument entries.
4
+ *
5
+ * Design constraints:
6
+ * - NO imports from @digitaldefiance/node-express-suite (no Mongoose, no Express)
7
+ * - NO `any` / `unknown` in the public API surface
8
+ * - NO `as any` / `as unknown` casts
9
+ * - All writes go through BrightChainDb.withTransaction exclusively
10
+ */
11
+ import { BlockSize, IBrightChainInitResult, IBrightChainMemberInitInput } from '@brightchain/brightchain-lib';
12
+ import { BrightChainDb, CBLIndex } from '@brightchain/db';
13
+ /**
14
+ * BrightChain-native configuration for BrightChainMemberInitService.
15
+ * Contains only what the service needs — no Mongoose, no Express.
16
+ */
17
+ export interface IBrightChainMemberInitConfig {
18
+ /** Pool name used as the BrightChainDb name and poolId */
19
+ memberPoolName: string;
20
+ /**
21
+ * Filesystem path for the disk block store.
22
+ * When set (and useMemoryStore is false), a DiskBlockStore and
23
+ * PersistentHeadRegistry are used so data survives process restarts.
24
+ */
25
+ blockStorePath?: string;
26
+ /** Force in-memory store even when blockStorePath is set */
27
+ useMemoryStore?: boolean;
28
+ /** Block size for the store (defaults to BlockSize.Small) */
29
+ blockSize?: BlockSize;
30
+ }
31
+ /**
32
+ * Initialises a BrightChainDb instance and persists system/admin/member users
33
+ * as IMemberIndexDocument entries in the member index collection.
34
+ *
35
+ * The service is idempotent: calling initialize() multiple times with the same
36
+ * users will not create duplicate entries.
37
+ */
38
+ export declare class BrightChainMemberInitService {
39
+ private _db;
40
+ private _memberCblIndex;
41
+ /**
42
+ * The initialised BrightChainDb instance.
43
+ * @throws Error if initialize() has not been called yet.
44
+ */
45
+ get db(): BrightChainDb;
46
+ /**
47
+ * The member pool CBLIndex.
48
+ * @throws Error if initialize() has not been called yet.
49
+ */
50
+ get memberCblIndex(): CBLIndex;
51
+ /**
52
+ * Initialise the block store and BrightChainDb, then persist any missing
53
+ * member index entries.
54
+ *
55
+ * Steps:
56
+ * 1. Build the appropriate block store (disk or memory)
57
+ * 2. Create and connect BrightChainDb (with PersistentHeadRegistry when disk)
58
+ * 3. Create CBLIndex for the member pool
59
+ * 4. Build candidate IMemberIndexDocument entries
60
+ * 5. Validate all candidates against MEMBER_INDEX_SCHEMA (pre-transaction)
61
+ * 6. Check which candidates are already present (idempotency)
62
+ * 7. Insert missing entries in a single withTransaction call
63
+ */
64
+ initialize(config: IBrightChainMemberInitConfig, input: IBrightChainMemberInitInput): Promise<IBrightChainInitResult<BrightChainDb>>;
65
+ }
66
+ //# sourceMappingURL=brightchain-member-init.service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"brightchain-member-init.service.d.ts","sourceRoot":"","sources":["../../../../../brightchain-api-lib/src/lib/services/brightchain-member-init.service.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAGH,OAAO,EACL,SAAS,EACT,sBAAsB,EACtB,2BAA2B,EAI5B,MAAM,8BAA8B,CAAC;AACtC,OAAO,EACL,aAAa,EACb,QAAQ,EAGT,MAAM,iBAAiB,CAAC;AAWzB;;;GAGG;AACH,MAAM,WAAW,4BAA4B;IAC3C,0DAA0D;IAC1D,cAAc,EAAE,MAAM,CAAC;IACvB;;;;OAIG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,4DAA4D;IAC5D,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,6DAA6D;IAC7D,SAAS,CAAC,EAAE,SAAS,CAAC;CACvB;AAqDD;;;;;;GAMG;AACH,qBAAa,4BAA4B;IACvC,OAAO,CAAC,GAAG,CAA4B;IACvC,OAAO,CAAC,eAAe,CAAuB;IAE9C;;;OAGG;IACH,IAAI,EAAE,IAAI,aAAa,CAOtB;IAED;;;OAGG;IACH,IAAI,cAAc,IAAI,QAAQ,CAO7B;IAED;;;;;;;;;;;;OAYG;IACG,UAAU,CACd,MAAM,EAAE,4BAA4B,EACpC,KAAK,EAAE,2BAA2B,GACjC,OAAO,CAAC,sBAAsB,CAAC,aAAa,CAAC,CAAC;CAgElD"}
@@ -0,0 +1,152 @@
1
+ "use strict";
2
+ /**
3
+ * @fileoverview BrightChainMemberInitService — initialises BrightChainDb and
4
+ * persists system/admin/member users as IMemberIndexDocument entries.
5
+ *
6
+ * Design constraints:
7
+ * - NO imports from @digitaldefiance/node-express-suite (no Mongoose, no Express)
8
+ * - NO `any` / `unknown` in the public API surface
9
+ * - NO `as any` / `as unknown` casts
10
+ * - All writes go through BrightChainDb.withTransaction exclusively
11
+ */
12
+ Object.defineProperty(exports, "__esModule", { value: true });
13
+ exports.BrightChainMemberInitService = void 0;
14
+ const brightchain_lib_1 = require("@brightchain/brightchain-lib");
15
+ const db_1 = require("@brightchain/db");
16
+ const brightChainApiStrings_1 = require("../enumerations/brightChainApiStrings");
17
+ const memberIndexSchemaValidationError_1 = require("../errors/memberIndexSchemaValidationError");
18
+ const memberIndexSchema_1 = require("../interfaces/storage/memberIndexSchema");
19
+ const diskBlockStore_1 = require("../stores/diskBlockStore");
20
+ /** Well-known collection name for the member index. */
21
+ const MEMBER_INDEX_COLLECTION = 'member_index';
22
+ // ─── Block store helpers (not exported) ──────────────────────────────────────
23
+ function buildMemoryBlockStore() {
24
+ return new brightchain_lib_1.MemoryBlockStore(brightchain_lib_1.BlockSize.Small);
25
+ }
26
+ function buildDiskBlockStore(storePath, blockSize = brightchain_lib_1.BlockSize.Small) {
27
+ return new diskBlockStore_1.DiskBlockStore({ storePath, blockSize });
28
+ }
29
+ // ─── Validation helper (not exported) ────────────────────────────────────────
30
+ function validateDocumentSafe(doc) {
31
+ try {
32
+ (0, db_1.validateDocument)(doc, memberIndexSchema_1.MEMBER_INDEX_SCHEMA, MEMBER_INDEX_COLLECTION);
33
+ return [];
34
+ }
35
+ catch (err) {
36
+ if (err instanceof db_1.ValidationError) {
37
+ return err.validationErrors;
38
+ }
39
+ throw err;
40
+ }
41
+ }
42
+ // ─── Candidate entry builder (not exported) ───────────────────────────────────
43
+ function buildCandidateEntries(input, poolId) {
44
+ const now = new Date().toISOString();
45
+ return [input.systemUser, input.adminUser, input.memberUser].map((user) => ({
46
+ id: user.id,
47
+ // Zero-filled sentinel — replaced when the member's actual CBL blocks are written
48
+ publicCBL: '0'.repeat(64),
49
+ privateCBL: '0'.repeat(64),
50
+ poolId,
51
+ type: user.type,
52
+ status: brightchain_lib_1.MemberStatusType.Active,
53
+ lastUpdate: now,
54
+ reputation: 0,
55
+ }));
56
+ }
57
+ // ─── Service ─────────────────────────────────────────────────────────────────
58
+ /**
59
+ * Initialises a BrightChainDb instance and persists system/admin/member users
60
+ * as IMemberIndexDocument entries in the member index collection.
61
+ *
62
+ * The service is idempotent: calling initialize() multiple times with the same
63
+ * users will not create duplicate entries.
64
+ */
65
+ class BrightChainMemberInitService {
66
+ /**
67
+ * The initialised BrightChainDb instance.
68
+ * @throws Error if initialize() has not been called yet.
69
+ */
70
+ get db() {
71
+ if (!this._db) {
72
+ throw new Error(brightChainApiStrings_1.BrightChainApiStrings.BrightChainMemberInitServiceNotInitialized);
73
+ }
74
+ return this._db;
75
+ }
76
+ /**
77
+ * The member pool CBLIndex.
78
+ * @throws Error if initialize() has not been called yet.
79
+ */
80
+ get memberCblIndex() {
81
+ if (!this._memberCblIndex) {
82
+ throw new Error(brightChainApiStrings_1.BrightChainApiStrings.BrightChainMemberInitServiceNotInitialized);
83
+ }
84
+ return this._memberCblIndex;
85
+ }
86
+ /**
87
+ * Initialise the block store and BrightChainDb, then persist any missing
88
+ * member index entries.
89
+ *
90
+ * Steps:
91
+ * 1. Build the appropriate block store (disk or memory)
92
+ * 2. Create and connect BrightChainDb (with PersistentHeadRegistry when disk)
93
+ * 3. Create CBLIndex for the member pool
94
+ * 4. Build candidate IMemberIndexDocument entries
95
+ * 5. Validate all candidates against MEMBER_INDEX_SCHEMA (pre-transaction)
96
+ * 6. Check which candidates are already present (idempotency)
97
+ * 7. Insert missing entries in a single withTransaction call
98
+ */
99
+ async initialize(config, input) {
100
+ const useDisk = !!config.blockStorePath && !config.useMemoryStore;
101
+ // Steps 1-3: only run once per service instance.
102
+ if (!this._db) {
103
+ const blockStore = useDisk
104
+ ? buildDiskBlockStore(config.blockStorePath, config.blockSize)
105
+ : buildMemoryBlockStore();
106
+ const db = new db_1.BrightChainDb(blockStore, {
107
+ name: config.memberPoolName,
108
+ poolId: config.memberPoolName,
109
+ // PersistentHeadRegistry when disk — ensures heads survive restarts
110
+ ...(useDisk ? { dataDir: config.blockStorePath } : {}),
111
+ });
112
+ // Load persisted head pointers from disk (no-op for InMemoryHeadRegistry)
113
+ await db.getHeadRegistry().load();
114
+ await db.connect();
115
+ this._db = db;
116
+ this._memberCblIndex = new db_1.CBLIndex(db, blockStore);
117
+ }
118
+ const db = this._db;
119
+ // Step 4: build candidates
120
+ const candidates = buildCandidateEntries(input, config.memberPoolName);
121
+ // Step 5: validate before touching the DB
122
+ for (const candidate of candidates) {
123
+ const errors = validateDocumentSafe(candidate);
124
+ if (errors.length > 0) {
125
+ throw new memberIndexSchemaValidationError_1.MemberIndexSchemaValidationError(errors);
126
+ }
127
+ }
128
+ // Step 6: idempotency check
129
+ const collection = db.collection(MEMBER_INDEX_COLLECTION);
130
+ const existing = await collection.find({}).toArray();
131
+ const existingIds = new Set(existing.map((e) => e.id));
132
+ const toInsert = candidates.filter((c) => !existingIds.has(c.id));
133
+ const skippedCount = candidates.length - toInsert.length;
134
+ if (toInsert.length === 0) {
135
+ return { alreadyInitialized: true, insertedCount: 0, skippedCount, db };
136
+ }
137
+ // Step 7: insert in a single transaction
138
+ await db.withTransaction(async (session) => {
139
+ for (const entry of toInsert) {
140
+ await collection.insertOne(entry, { session });
141
+ }
142
+ });
143
+ return {
144
+ alreadyInitialized: false,
145
+ insertedCount: toInsert.length,
146
+ skippedCount,
147
+ db,
148
+ };
149
+ }
150
+ }
151
+ exports.BrightChainMemberInitService = BrightChainMemberInitService;
152
+ //# sourceMappingURL=brightchain-member-init.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"brightchain-member-init.service.js","sourceRoot":"","sources":["../../../../../brightchain-api-lib/src/lib/services/brightchain-member-init.service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,23 @@
1
+ /**
2
+ * Shared arbitraries and helpers for BrightPass property tests.
3
+ * Split from brightpass.property.spec.ts to avoid ts-jest compilation hang on large files.
4
+ */
5
+ import { CreditCardEntry, IdentityEntry, LoginEntry, SecureNoteEntry, VaultEntry } from '@brightchain/brightchain-lib';
6
+ import fc from 'fast-check';
7
+ import { BrightPassService } from './brightpass';
8
+ export declare const memberIdArb: fc.Arbitrary<string>;
9
+ export declare const vaultNameArb: fc.Arbitrary<string>;
10
+ export declare const masterPasswordArb: fc.Arbitrary<string>;
11
+ export declare const arbitraryLoginEntry: () => fc.Arbitrary<LoginEntry>;
12
+ export declare const arbitrarySecureNoteEntry: () => fc.Arbitrary<SecureNoteEntry>;
13
+ export declare const arbitraryCreditCardEntry: () => fc.Arbitrary<CreditCardEntry>;
14
+ export declare const arbitraryIdentityEntry: () => fc.Arbitrary<IdentityEntry>;
15
+ export declare const arbitraryVaultEntry: () => fc.Arbitrary<VaultEntry>;
16
+ /** Helper: create a service with a vault and return both */
17
+ export declare function createServiceWithVault(): Promise<{
18
+ service: BrightPassService<Uint8Array<ArrayBufferLike>>;
19
+ memberId: string;
20
+ password: string;
21
+ vaultId: string;
22
+ }>;
23
+ //# sourceMappingURL=brightpass.property.helpers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"brightpass.property.helpers.d.ts","sourceRoot":"","sources":["../../../../../brightchain-api-lib/src/lib/services/brightpass.property.helpers.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EACL,eAAe,EACf,aAAa,EACb,UAAU,EACV,eAAe,EACf,UAAU,EACX,MAAM,8BAA8B,CAAC;AACtC,OAAO,EAAE,MAAM,YAAY,CAAC;AAC5B,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAEjD,eAAO,MAAM,WAAW,sBAAY,CAAC;AACrC,eAAO,MAAM,YAAY,sBAEY,CAAC;AACtC,eAAO,MAAM,iBAAiB,sBAEO,CAAC;AAEtC,eAAO,MAAM,mBAAmB,QAAO,EAAE,CAAC,SAAS,CAAC,UAAU,CAyB1D,CAAC;AAEL,eAAO,MAAM,wBAAwB,QAAO,EAAE,CAAC,SAAS,CAAC,eAAe,CAoBpE,CAAC;AAEL,eAAO,MAAM,wBAAwB,QAAO,EAAE,CAAC,SAAS,CAAC,eAAe,CAuBpE,CAAC;AAEL,eAAO,MAAM,sBAAsB,QAAO,EAAE,CAAC,SAAS,CAAC,aAAa,CA4BhE,CAAC;AAEL,eAAO,MAAM,mBAAmB,QAAO,EAAE,CAAC,SAAS,CAAC,UAAU,CAM3D,CAAC;AAEJ,4DAA4D;AAC5D,wBAAsB,sBAAsB;;;;;GAM3C"}
@@ -0,0 +1,113 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.arbitraryVaultEntry = exports.arbitraryIdentityEntry = exports.arbitraryCreditCardEntry = exports.arbitrarySecureNoteEntry = exports.arbitraryLoginEntry = exports.masterPasswordArb = exports.vaultNameArb = exports.memberIdArb = void 0;
4
+ exports.createServiceWithVault = createServiceWithVault;
5
+ const tslib_1 = require("tslib");
6
+ const fast_check_1 = tslib_1.__importDefault(require("fast-check"));
7
+ const brightpass_1 = require("./brightpass");
8
+ exports.memberIdArb = fast_check_1.default.uuid();
9
+ exports.vaultNameArb = fast_check_1.default
10
+ .string({ minLength: 1, maxLength: 64 })
11
+ .filter((s) => s.trim().length > 0);
12
+ exports.masterPasswordArb = fast_check_1.default
13
+ .string({ minLength: 4, maxLength: 128 })
14
+ .filter((s) => s.trim().length > 0);
15
+ const arbitraryLoginEntry = () => fast_check_1.default.record({
16
+ id: fast_check_1.default.uuid(),
17
+ type: fast_check_1.default.constant('login'),
18
+ title: fast_check_1.default.string({ minLength: 1, maxLength: 100 }),
19
+ notes: fast_check_1.default.option(fast_check_1.default.string({ maxLength: 200 }), { nil: undefined }),
20
+ tags: fast_check_1.default.option(fast_check_1.default.array(fast_check_1.default.string({ minLength: 1, maxLength: 30 }), { maxLength: 5 }), { nil: undefined }),
21
+ createdAt: fast_check_1.default.date({
22
+ min: new Date('2020-01-01'),
23
+ max: new Date('2030-01-01'),
24
+ }),
25
+ updatedAt: fast_check_1.default.date({
26
+ min: new Date('2020-01-01'),
27
+ max: new Date('2030-01-01'),
28
+ }),
29
+ favorite: fast_check_1.default.boolean(),
30
+ siteUrl: fast_check_1.default.webUrl(),
31
+ username: fast_check_1.default.string({ minLength: 1, maxLength: 100 }),
32
+ password: fast_check_1.default.string({ minLength: 8, maxLength: 128 }),
33
+ totpSecret: fast_check_1.default.option(fast_check_1.default.base64String({ minLength: 16, maxLength: 32 }), {
34
+ nil: undefined,
35
+ }),
36
+ });
37
+ exports.arbitraryLoginEntry = arbitraryLoginEntry;
38
+ const arbitrarySecureNoteEntry = () => fast_check_1.default.record({
39
+ id: fast_check_1.default.uuid(),
40
+ type: fast_check_1.default.constant('secure_note'),
41
+ title: fast_check_1.default.string({ minLength: 1, maxLength: 100 }),
42
+ notes: fast_check_1.default.option(fast_check_1.default.string({ maxLength: 200 }), { nil: undefined }),
43
+ tags: fast_check_1.default.option(fast_check_1.default.array(fast_check_1.default.string({ minLength: 1, maxLength: 30 }), { maxLength: 5 }), { nil: undefined }),
44
+ createdAt: fast_check_1.default.date({
45
+ min: new Date('2020-01-01'),
46
+ max: new Date('2030-01-01'),
47
+ }),
48
+ updatedAt: fast_check_1.default.date({
49
+ min: new Date('2020-01-01'),
50
+ max: new Date('2030-01-01'),
51
+ }),
52
+ favorite: fast_check_1.default.boolean(),
53
+ content: fast_check_1.default.string({ minLength: 1, maxLength: 500 }),
54
+ });
55
+ exports.arbitrarySecureNoteEntry = arbitrarySecureNoteEntry;
56
+ const arbitraryCreditCardEntry = () => fast_check_1.default.record({
57
+ id: fast_check_1.default.uuid(),
58
+ type: fast_check_1.default.constant('credit_card'),
59
+ title: fast_check_1.default.string({ minLength: 1, maxLength: 100 }),
60
+ notes: fast_check_1.default.option(fast_check_1.default.string({ maxLength: 200 }), { nil: undefined }),
61
+ tags: fast_check_1.default.option(fast_check_1.default.array(fast_check_1.default.string({ minLength: 1, maxLength: 30 }), { maxLength: 5 }), { nil: undefined }),
62
+ createdAt: fast_check_1.default.date({
63
+ min: new Date('2020-01-01'),
64
+ max: new Date('2030-01-01'),
65
+ }),
66
+ updatedAt: fast_check_1.default.date({
67
+ min: new Date('2020-01-01'),
68
+ max: new Date('2030-01-01'),
69
+ }),
70
+ favorite: fast_check_1.default.boolean(),
71
+ cardholderName: fast_check_1.default.string({ minLength: 1, maxLength: 100 }),
72
+ cardNumber: fast_check_1.default.stringMatching(/^\d{13,19}$/),
73
+ expirationDate: fast_check_1.default.stringMatching(/^(0[1-9]|1[0-2])\/\d{2}$/),
74
+ cvv: fast_check_1.default.stringMatching(/^\d{3,4}$/),
75
+ });
76
+ exports.arbitraryCreditCardEntry = arbitraryCreditCardEntry;
77
+ const arbitraryIdentityEntry = () => fast_check_1.default.record({
78
+ id: fast_check_1.default.uuid(),
79
+ type: fast_check_1.default.constant('identity'),
80
+ title: fast_check_1.default.string({ minLength: 1, maxLength: 100 }),
81
+ notes: fast_check_1.default.option(fast_check_1.default.string({ maxLength: 200 }), { nil: undefined }),
82
+ tags: fast_check_1.default.option(fast_check_1.default.array(fast_check_1.default.string({ minLength: 1, maxLength: 30 }), { maxLength: 5 }), { nil: undefined }),
83
+ createdAt: fast_check_1.default.date({
84
+ min: new Date('2020-01-01'),
85
+ max: new Date('2030-01-01'),
86
+ }),
87
+ updatedAt: fast_check_1.default.date({
88
+ min: new Date('2020-01-01'),
89
+ max: new Date('2030-01-01'),
90
+ }),
91
+ favorite: fast_check_1.default.boolean(),
92
+ firstName: fast_check_1.default.string({ minLength: 1, maxLength: 100 }),
93
+ lastName: fast_check_1.default.string({ minLength: 1, maxLength: 100 }),
94
+ email: fast_check_1.default.option(fast_check_1.default.emailAddress(), { nil: undefined }),
95
+ phone: fast_check_1.default.option(fast_check_1.default.string({ minLength: 10, maxLength: 20 }), {
96
+ nil: undefined,
97
+ }),
98
+ address: fast_check_1.default.option(fast_check_1.default.string({ minLength: 1, maxLength: 200 }), {
99
+ nil: undefined,
100
+ }),
101
+ });
102
+ exports.arbitraryIdentityEntry = arbitraryIdentityEntry;
103
+ const arbitraryVaultEntry = () => fast_check_1.default.oneof((0, exports.arbitraryLoginEntry)(), (0, exports.arbitrarySecureNoteEntry)(), (0, exports.arbitraryCreditCardEntry)(), (0, exports.arbitraryIdentityEntry)());
104
+ exports.arbitraryVaultEntry = arbitraryVaultEntry;
105
+ /** Helper: create a service with a vault and return both */
106
+ async function createServiceWithVault() {
107
+ const service = new brightpass_1.BrightPassService();
108
+ const memberId = 'test-member-' + Math.random().toString(36).slice(2);
109
+ const password = 'test-password-123';
110
+ const metadata = await service.createVault(memberId, 'TestVault', password);
111
+ return { service, memberId, password, vaultId: metadata.id };
112
+ }
113
+ //# sourceMappingURL=brightpass.property.helpers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"brightpass.property.helpers.js","sourceRoot":"","sources":["../../../../../brightchain-api-lib/src/lib/services/brightpass.property.helpers.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,147 @@
1
+ import { ClientEventType, IClientEvent } from '@brightchain/brightchain-lib';
2
+ import { MemberType } from '@digitaldefiance/ecies-lib';
3
+ import { Server } from 'http';
4
+ import { WebSocket } from 'ws';
5
+ import { EventNotificationSystem } from './eventNotificationSystem';
6
+ /**
7
+ * Member context for an authenticated WebSocket session.
8
+ * Mirrors the IMemberContext from authentication middleware.
9
+ */
10
+ export interface IWsMemberContext {
11
+ memberId: string;
12
+ username: string;
13
+ type: MemberType;
14
+ iat: number;
15
+ exp: number;
16
+ }
17
+ /**
18
+ * Tracks a single authenticated client WebSocket session.
19
+ */
20
+ interface IClientSession {
21
+ ws: WebSocket;
22
+ memberContext: IWsMemberContext;
23
+ subscribedEvents: Set<ClientEventType>;
24
+ lastPong: number;
25
+ }
26
+ /**
27
+ * Determine whether a client event should be delivered to a given member.
28
+ *
29
+ * Access tier rules:
30
+ * - public: all authenticated members
31
+ * - admin: only Admin or System members
32
+ * - pool-scoped: only members subscribed AND who have pool read permission
33
+ * (pool ACL checking is the caller's responsibility; here we check MemberType
34
+ * and targetMemberId where applicable)
35
+ * - member-scoped: only the specific target member
36
+ *
37
+ * @see Requirements 9.4, 9.7
38
+ */
39
+ export declare function shouldDeliverEvent(event: IClientEvent<string>, memberContext: IWsMemberContext): boolean;
40
+ /**
41
+ * JWT-authenticated WebSocket server for Lumen client connections.
42
+ *
43
+ * Listens on `/ws/client`, separate from the ECIES-authenticated
44
+ * `/ws/node/:nodeId` path used by `WebSocketMessageServer`.
45
+ *
46
+ * Responsibilities:
47
+ * - Authenticate connections via JWT (query param `token` or first message)
48
+ * - Manage per-session event subscriptions
49
+ * - Broadcast `IClientEvent` envelopes filtered by access tier
50
+ * - Monitor token expiration and send `TokenExpiring` before closing
51
+ * - Ping/pong idle timeout
52
+ *
53
+ * @see Requirements 9.1–9.7, 11.3, 11.4
54
+ */
55
+ export declare class ClientWebSocketServer {
56
+ private wss;
57
+ private sessions;
58
+ private jwtSecret;
59
+ private eventNotificationSystem;
60
+ private idleTimeoutMs;
61
+ private tokenGraceMs;
62
+ private tokenWarningBeforeMs;
63
+ private pingInterval;
64
+ private tokenCheckInterval;
65
+ constructor(server: Server, jwtSecret: string, eventNotificationSystem: EventNotificationSystem, options?: {
66
+ idleTimeoutMs?: number;
67
+ tokenGraceMs?: number;
68
+ tokenCheckIntervalMs?: number;
69
+ tokenWarningBeforeMs?: number;
70
+ });
71
+ /**
72
+ * Attempt to authenticate an incoming WebSocket upgrade request.
73
+ * Looks for a JWT in the `token` query parameter.
74
+ *
75
+ * @returns The decoded member context, or `null` if authentication fails.
76
+ * @see Requirements 9.1, 9.2
77
+ */
78
+ private authenticateConnection;
79
+ /**
80
+ * Extract JWT from the `token` query parameter of the upgrade request URL.
81
+ */
82
+ private extractTokenFromRequest;
83
+ /**
84
+ * Attempt to authenticate via the first message (for clients that cannot
85
+ * set query params). Expects `{ type: 'auth', token: '<jwt>' }`.
86
+ */
87
+ private authenticateFromMessage;
88
+ /**
89
+ * Set up the WebSocket connection handler.
90
+ * Authenticates via query param on upgrade; falls back to first-message auth.
91
+ */
92
+ private setupConnectionHandler;
93
+ /**
94
+ * Register an authenticated session and wire up message/close handlers.
95
+ */
96
+ private registerSession;
97
+ /**
98
+ * Handle an incoming message from an authenticated session.
99
+ * Currently supports subscription management messages.
100
+ */
101
+ private handleMessage;
102
+ /**
103
+ * Process a subscribe/unsubscribe message from a client.
104
+ *
105
+ * @see Requirements 9.3
106
+ */
107
+ private handleSubscription;
108
+ /**
109
+ * Broadcast a client event to all subscribed sessions that pass
110
+ * the access tier filter.
111
+ *
112
+ * @see Requirements 9.4, 9.7
113
+ */
114
+ broadcastEvent(event: IClientEvent<string>): void;
115
+ /**
116
+ * Periodically check all sessions for approaching token expiration.
117
+ * Sends a `TokenExpiring` event before closing the connection.
118
+ *
119
+ * @see Requirements 11.4
120
+ */
121
+ private startTokenExpirationMonitor;
122
+ /**
123
+ * Send a TokenExpiring client event to a specific WebSocket.
124
+ */
125
+ private sendTokenExpiringEvent;
126
+ /**
127
+ * Periodically ping all connected clients and close those that
128
+ * haven't responded within the idle timeout.
129
+ *
130
+ * @see Requirements 9.5
131
+ */
132
+ private startPingPongMonitor;
133
+ /**
134
+ * Get the number of currently connected and authenticated client sessions.
135
+ */
136
+ getConnectedClientCount(): number;
137
+ /**
138
+ * Get all active sessions (for testing / introspection).
139
+ */
140
+ getSessions(): ReadonlyMap<WebSocket, Readonly<IClientSession>>;
141
+ /**
142
+ * Close all client connections and shut down the server.
143
+ */
144
+ close(callback?: () => void): void;
145
+ }
146
+ export {};
147
+ //# sourceMappingURL=clientWebSocketServer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"clientWebSocketServer.d.ts","sourceRoot":"","sources":["../../../../../brightchain-api-lib/src/lib/services/clientWebSocketServer.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,eAAe,EACf,YAAY,EAEb,MAAM,8BAA8B,CAAC;AACtC,OAAO,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AAExD,OAAO,EAAmB,MAAM,EAAE,MAAM,MAAM,CAAC;AAG/C,OAAO,EAAE,SAAS,EAAmB,MAAM,IAAI,CAAC;AAEhD,OAAO,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AAEpE;;;GAGG;AACH,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,UAAU,CAAC;IACjB,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;CACb;AAED;;GAEG;AACH,UAAU,cAAc;IACtB,EAAE,EAAE,SAAS,CAAC;IACd,aAAa,EAAE,gBAAgB,CAAC;IAChC,gBAAgB,EAAE,GAAG,CAAC,eAAe,CAAC,CAAC;IACvC,QAAQ,EAAE,MAAM,CAAC;CAClB;AAcD;;;;;;;;;;;;GAYG;AACH,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,YAAY,CAAC,MAAM,CAAC,EAC3B,aAAa,EAAE,gBAAgB,GAC9B,OAAO,CA4BT;AAED;;;;;;;;;;;;;;GAcG;AACH,qBAAa,qBAAqB;IAChC,OAAO,CAAC,GAAG,CAAkB;IAC7B,OAAO,CAAC,QAAQ,CAA6C;IAC7D,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,uBAAuB,CAA0B;IACzD,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,oBAAoB,CAAS;IAErC,OAAO,CAAC,YAAY,CAA+C;IACnE,OAAO,CAAC,kBAAkB,CAA+C;gBAGvE,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,EACjB,uBAAuB,EAAE,uBAAuB,EAChD,OAAO,CAAC,EAAE;QACR,aAAa,CAAC,EAAE,MAAM,CAAC;QACvB,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,oBAAoB,CAAC,EAAE,MAAM,CAAC;QAC9B,oBAAoB,CAAC,EAAE,MAAM,CAAC;KAC/B;IAuBH;;;;;;OAMG;IACH,OAAO,CAAC,sBAAsB;IAoB9B;;OAEG;IACH,OAAO,CAAC,uBAAuB;IAW/B;;;OAGG;IACH,OAAO,CAAC,uBAAuB;IA4B/B;;;OAGG;IACH,OAAO,CAAC,sBAAsB;IAwC9B;;OAEG;IACH,OAAO,CAAC,eAAe;IAuCvB;;;OAGG;IACH,OAAO,CAAC,aAAa;IA+BrB;;;;OAIG;IACH,OAAO,CAAC,kBAAkB;IAoD1B;;;;;OAKG;IACH,cAAc,CAAC,KAAK,EAAE,YAAY,CAAC,MAAM,CAAC,GAAG,IAAI;IAkBjD;;;;;OAKG;IACH,OAAO,CAAC,2BAA2B;IA+BnC;;OAEG;IACH,OAAO,CAAC,sBAAsB;IAoB9B;;;;;OAKG;IACH,OAAO,CAAC,oBAAoB;IAkB5B;;OAEG;IACH,uBAAuB,IAAI,MAAM;IAIjC;;OAEG;IACH,WAAW,IAAI,WAAW,CAAC,SAAS,EAAE,QAAQ,CAAC,cAAc,CAAC,CAAC;IAI/D;;OAEG;IACH,KAAK,CAAC,QAAQ,CAAC,EAAE,MAAM,IAAI,GAAG,IAAI;CAyBnC"}