@brightchain/brightchain-api-lib 0.2.1 → 0.5.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 (283) hide show
  1. package/package.json +2 -2
  2. package/src/index.d.ts +10 -75
  3. package/src/index.d.ts.map +1 -1
  4. package/src/index.js +11 -78
  5. package/src/index.js.map +1 -1
  6. package/src/lib/__tests__/fixtures/mock-backend-brightchain-member.d.ts +1 -2
  7. package/src/lib/__tests__/fixtures/mock-backend-brightchain-member.d.ts.map +1 -1
  8. package/src/lib/__tests__/fixtures/mock-backend-brightchain-member.js +1 -1
  9. package/src/lib/__tests__/fixtures/mock-backend-brightchain-member.js.map +1 -1
  10. package/src/lib/application-base.d.ts +7 -6
  11. package/src/lib/application-base.d.ts.map +1 -1
  12. package/src/lib/application-base.js.map +1 -1
  13. package/src/lib/application.d.ts +7 -2
  14. package/src/lib/application.d.ts.map +1 -1
  15. package/src/lib/application.js +30 -0
  16. package/src/lib/application.js.map +1 -1
  17. package/src/lib/controllers/api/blocks.d.ts +246 -0
  18. package/src/lib/controllers/api/blocks.d.ts.map +1 -0
  19. package/src/lib/controllers/api/blocks.js +414 -0
  20. package/src/lib/controllers/api/blocks.js.map +1 -0
  21. package/src/lib/controllers/api/cbl.d.ts +88 -0
  22. package/src/lib/controllers/api/cbl.d.ts.map +1 -0
  23. package/src/lib/controllers/api/cbl.js +222 -0
  24. package/src/lib/controllers/api/cbl.js.map +1 -0
  25. package/src/lib/controllers/api/energy.d.ts +18 -0
  26. package/src/lib/controllers/api/energy.d.ts.map +1 -0
  27. package/src/lib/controllers/api/energy.js +96 -0
  28. package/src/lib/controllers/api/energy.js.map +1 -0
  29. package/src/lib/controllers/api/i18n.d.ts +19 -0
  30. package/src/lib/controllers/api/i18n.d.ts.map +1 -0
  31. package/src/lib/controllers/api/i18n.js +27 -0
  32. package/src/lib/controllers/api/i18n.js.map +1 -0
  33. package/src/lib/controllers/api/index.d.ts +9 -0
  34. package/src/lib/controllers/api/index.d.ts.map +1 -0
  35. package/src/lib/controllers/api/index.js +12 -0
  36. package/src/lib/controllers/api/index.js.map +1 -0
  37. package/src/lib/controllers/api/members.d.ts +19 -0
  38. package/src/lib/controllers/api/members.d.ts.map +1 -0
  39. package/src/lib/controllers/api/members.js +27 -0
  40. package/src/lib/controllers/api/members.js.map +1 -0
  41. package/src/lib/controllers/api/quorum.d.ts +369 -0
  42. package/src/lib/controllers/api/quorum.d.ts.map +1 -0
  43. package/src/lib/controllers/api/quorum.js +592 -0
  44. package/src/lib/controllers/api/quorum.js.map +1 -0
  45. package/src/lib/controllers/api/sessions.d.ts +21 -0
  46. package/src/lib/controllers/api/sessions.d.ts.map +1 -0
  47. package/src/lib/controllers/api/sessions.js +32 -0
  48. package/src/lib/controllers/api/sessions.js.map +1 -0
  49. package/src/lib/controllers/api/user.d.ts +20 -0
  50. package/src/lib/controllers/api/user.d.ts.map +1 -0
  51. package/src/lib/controllers/api/user.js +109 -0
  52. package/src/lib/controllers/api/user.js.map +1 -0
  53. package/src/lib/controllers/base.d.ts +6 -48
  54. package/src/lib/controllers/base.d.ts.map +1 -1
  55. package/src/lib/controllers/base.js +2 -225
  56. package/src/lib/controllers/base.js.map +1 -1
  57. package/src/lib/controllers/index.d.ts +3 -0
  58. package/src/lib/controllers/index.d.ts.map +1 -0
  59. package/src/lib/controllers/index.js +6 -0
  60. package/src/lib/controllers/index.js.map +1 -0
  61. package/src/lib/datastore/block-document-store.d.ts.map +1 -1
  62. package/src/lib/datastore/block-document-store.js +22 -18
  63. package/src/lib/datastore/block-document-store.js.map +1 -1
  64. package/src/lib/datastore/document-store.d.ts +1 -2
  65. package/src/lib/datastore/document-store.d.ts.map +1 -1
  66. package/src/lib/datastore/index.d.ts +6 -0
  67. package/src/lib/datastore/index.d.ts.map +1 -0
  68. package/src/lib/datastore/index.js +8 -0
  69. package/src/lib/datastore/index.js.map +1 -0
  70. package/src/lib/datastore/memory-document-store.d.ts.map +1 -1
  71. package/src/lib/datastore/memory-document-store.js.map +1 -1
  72. package/src/lib/documents/base.d.ts +3 -2
  73. package/src/lib/documents/base.d.ts.map +1 -1
  74. package/src/lib/enumerations/index.d.ts +5 -0
  75. package/src/lib/enumerations/index.d.ts.map +1 -0
  76. package/src/lib/enumerations/index.js +8 -0
  77. package/src/lib/enumerations/index.js.map +1 -0
  78. package/src/lib/enumerations/websocketMessageType.d.ts +44 -0
  79. package/src/lib/enumerations/websocketMessageType.d.ts.map +1 -0
  80. package/src/lib/enumerations/websocketMessageType.js +47 -0
  81. package/src/lib/enumerations/websocketMessageType.js.map +1 -0
  82. package/src/lib/environment.d.ts +4 -2
  83. package/src/lib/environment.d.ts.map +1 -1
  84. package/src/lib/environment.js.map +1 -1
  85. package/src/lib/errors/index.d.ts +20 -0
  86. package/src/lib/errors/index.d.ts.map +1 -0
  87. package/src/lib/errors/index.js +23 -0
  88. package/src/lib/errors/index.js.map +1 -0
  89. package/src/lib/interfaces/application.d.ts +19 -7
  90. package/src/lib/interfaces/application.d.ts.map +1 -1
  91. package/src/lib/interfaces/auth-credentials.d.ts +6 -0
  92. package/src/lib/interfaces/auth-credentials.d.ts.map +1 -0
  93. package/src/lib/interfaces/{server-init-result.js → auth-credentials.js} +1 -1
  94. package/src/lib/interfaces/auth-credentials.js.map +1 -0
  95. package/src/lib/interfaces/auth-token.d.ts +6 -0
  96. package/src/lib/interfaces/auth-token.d.ts.map +1 -0
  97. package/src/lib/interfaces/{ecies-consts.js → auth-token.js} +1 -1
  98. package/src/lib/interfaces/auth-token.js.map +1 -0
  99. package/src/lib/interfaces/backend-objects/index.d.ts +5 -0
  100. package/src/lib/interfaces/backend-objects/index.d.ts.map +1 -0
  101. package/src/lib/interfaces/backend-objects/index.js +8 -0
  102. package/src/lib/interfaces/backend-objects/index.js.map +1 -0
  103. package/src/lib/interfaces/bases/index.d.ts +5 -0
  104. package/src/lib/interfaces/bases/index.d.ts.map +1 -0
  105. package/src/lib/interfaces/bases/index.js +8 -0
  106. package/src/lib/interfaces/bases/index.js.map +1 -0
  107. package/src/lib/interfaces/blockRequest.d.ts +40 -0
  108. package/src/lib/interfaces/blockRequest.d.ts.map +1 -0
  109. package/src/lib/interfaces/{mongo-errors.js → blockRequest.js} +1 -1
  110. package/src/lib/interfaces/blockRequest.js.map +1 -0
  111. package/src/lib/interfaces/blockResponses.d.ts +32 -0
  112. package/src/lib/interfaces/blockResponses.d.ts.map +1 -0
  113. package/src/lib/interfaces/blockResponses.js +3 -0
  114. package/src/lib/interfaces/blockResponses.js.map +1 -0
  115. package/src/lib/interfaces/blockService.d.ts +16 -0
  116. package/src/lib/interfaces/blockService.d.ts.map +1 -0
  117. package/src/lib/interfaces/{pbkdf2-result.js → blockService.js} +1 -1
  118. package/src/lib/interfaces/blockService.js.map +1 -0
  119. package/src/lib/interfaces/blockStore.d.ts +7 -0
  120. package/src/lib/interfaces/blockStore.d.ts.map +1 -0
  121. package/src/lib/interfaces/blockStore.js +3 -0
  122. package/src/lib/interfaces/blockStore.js.map +1 -0
  123. package/src/lib/interfaces/blocksHandlers.d.ts +7 -0
  124. package/src/lib/interfaces/blocksHandlers.d.ts.map +1 -0
  125. package/src/lib/interfaces/blocksHandlers.js +3 -0
  126. package/src/lib/interfaces/blocksHandlers.js.map +1 -0
  127. package/src/lib/interfaces/cblHandlers.d.ts +7 -0
  128. package/src/lib/interfaces/cblHandlers.d.ts.map +1 -0
  129. package/src/lib/interfaces/cblHandlers.js +3 -0
  130. package/src/lib/interfaces/cblHandlers.js.map +1 -0
  131. package/src/lib/interfaces/environment.d.ts +4 -2
  132. package/src/lib/interfaces/environment.d.ts.map +1 -1
  133. package/src/lib/interfaces/index.d.ts +33 -0
  134. package/src/lib/interfaces/index.d.ts.map +1 -0
  135. package/src/lib/interfaces/index.js +36 -0
  136. package/src/lib/interfaces/index.js.map +1 -0
  137. package/src/lib/interfaces/member/index.d.ts +3 -0
  138. package/src/lib/interfaces/member/index.d.ts.map +1 -0
  139. package/src/lib/interfaces/member/index.js +6 -0
  140. package/src/lib/interfaces/member/index.js.map +1 -0
  141. package/src/lib/interfaces/member/operational.d.ts +1 -2
  142. package/src/lib/interfaces/member/operational.d.ts.map +1 -1
  143. package/src/lib/interfaces/membersResponse.d.ts +12 -0
  144. package/src/lib/interfaces/membersResponse.d.ts.map +1 -0
  145. package/src/lib/interfaces/membersResponse.js +3 -0
  146. package/src/lib/interfaces/membersResponse.js.map +1 -0
  147. package/src/lib/interfaces/responses/index.d.ts +0 -1
  148. package/src/lib/interfaces/responses/index.d.ts.map +1 -1
  149. package/src/lib/interfaces/token-payload.d.ts +9 -0
  150. package/src/lib/interfaces/token-payload.d.ts.map +1 -0
  151. package/src/lib/interfaces/token-payload.js +3 -0
  152. package/src/lib/interfaces/token-payload.js.map +1 -0
  153. package/src/lib/interfaces/websocketMessages.d.ts +222 -0
  154. package/src/lib/interfaces/websocketMessages.d.ts.map +1 -0
  155. package/src/lib/interfaces/websocketMessages.js +6 -0
  156. package/src/lib/interfaces/websocketMessages.js.map +1 -0
  157. package/src/lib/routers/api.d.ts +9 -4
  158. package/src/lib/routers/api.d.ts.map +1 -1
  159. package/src/lib/routers/api.js +18 -6
  160. package/src/lib/routers/api.js.map +1 -1
  161. package/src/lib/routers/app.d.ts +3 -2
  162. package/src/lib/routers/app.d.ts.map +1 -1
  163. package/src/lib/routers/app.js +5 -4
  164. package/src/lib/routers/app.js.map +1 -1
  165. package/src/lib/routers/base.d.ts +6 -4
  166. package/src/lib/routers/base.d.ts.map +1 -1
  167. package/src/lib/routers/base.js.map +1 -1
  168. package/src/lib/routers/index.d.ts +5 -0
  169. package/src/lib/routers/index.d.ts.map +1 -0
  170. package/src/lib/routers/index.js +8 -0
  171. package/src/lib/routers/index.js.map +1 -0
  172. package/src/lib/services/auth.d.ts +23 -0
  173. package/src/lib/services/auth.d.ts.map +1 -0
  174. package/src/lib/services/auth.js +93 -0
  175. package/src/lib/services/auth.js.map +1 -0
  176. package/src/lib/services/base.d.ts +12 -0
  177. package/src/lib/services/base.d.ts.map +1 -0
  178. package/src/lib/services/base.js +15 -0
  179. package/src/lib/services/base.js.map +1 -0
  180. package/src/lib/services/blockServiceFactory.d.ts +29 -0
  181. package/src/lib/services/blockServiceFactory.d.ts.map +1 -0
  182. package/src/lib/services/blockServiceFactory.js +42 -0
  183. package/src/lib/services/blockServiceFactory.js.map +1 -0
  184. package/src/lib/services/blockStore.d.ts +52 -0
  185. package/src/lib/services/blockStore.d.ts.map +1 -0
  186. package/src/lib/services/blockStore.js +105 -0
  187. package/src/lib/services/blockStore.js.map +1 -0
  188. package/src/lib/services/blocks.d.ts +26 -0
  189. package/src/lib/services/blocks.d.ts.map +1 -0
  190. package/src/lib/services/blocks.js +35 -0
  191. package/src/lib/services/blocks.js.map +1 -0
  192. package/src/lib/services/diskQuorumService.d.ts.map +1 -1
  193. package/src/lib/services/diskQuorumService.js.map +1 -1
  194. package/src/lib/services/email.d.ts +4 -3
  195. package/src/lib/services/email.d.ts.map +1 -1
  196. package/src/lib/services/email.js +4 -3
  197. package/src/lib/services/email.js.map +1 -1
  198. package/src/lib/services/index.d.ts +21 -0
  199. package/src/lib/services/index.d.ts.map +1 -0
  200. package/src/lib/services/index.js +26 -0
  201. package/src/lib/services/index.js.map +1 -0
  202. package/src/lib/services/messagePassingService.d.ts.map +1 -1
  203. package/src/lib/services/messagePassingService.js +1 -1
  204. package/src/lib/services/messagePassingService.js.map +1 -1
  205. package/src/lib/services/quorum.d.ts +44 -0
  206. package/src/lib/services/quorum.d.ts.map +1 -0
  207. package/src/lib/services/quorum.js +83 -0
  208. package/src/lib/services/quorum.js.map +1 -0
  209. package/src/lib/services/requestUser.d.ts +18 -0
  210. package/src/lib/services/requestUser.d.ts.map +1 -0
  211. package/src/lib/services/requestUser.js +22 -0
  212. package/src/lib/services/requestUser.js.map +1 -0
  213. package/src/lib/services/role.d.ts +19 -0
  214. package/src/lib/services/role.d.ts.map +1 -0
  215. package/src/lib/services/role.js +18 -0
  216. package/src/lib/services/role.js.map +1 -0
  217. package/src/lib/services/websocketHandler.d.ts +95 -0
  218. package/src/lib/services/websocketHandler.d.ts.map +1 -0
  219. package/src/lib/services/websocketHandler.js +269 -0
  220. package/src/lib/services/websocketHandler.js.map +1 -0
  221. package/src/lib/shared-types.d.ts +2 -1
  222. package/src/lib/shared-types.d.ts.map +1 -1
  223. package/src/lib/stores/availabilityAwareBlockStore.d.ts +45 -1
  224. package/src/lib/stores/availabilityAwareBlockStore.d.ts.map +1 -1
  225. package/src/lib/stores/availabilityAwareBlockStore.js +109 -0
  226. package/src/lib/stores/availabilityAwareBlockStore.js.map +1 -1
  227. package/src/lib/stores/diskBlockAsyncStore.d.ts +72 -1
  228. package/src/lib/stores/diskBlockAsyncStore.d.ts.map +1 -1
  229. package/src/lib/stores/diskBlockAsyncStore.js +300 -0
  230. package/src/lib/stores/diskBlockAsyncStore.js.map +1 -1
  231. package/src/lib/transforms/index.d.ts +4 -0
  232. package/src/lib/transforms/index.d.ts.map +1 -0
  233. package/src/lib/transforms/index.js +7 -0
  234. package/src/lib/transforms/index.js.map +1 -0
  235. package/src/lib/utils/errorResponse.d.ts +180 -0
  236. package/src/lib/utils/errorResponse.d.ts.map +1 -0
  237. package/src/lib/utils/errorResponse.js +313 -0
  238. package/src/lib/utils/errorResponse.js.map +1 -0
  239. package/src/lib/controllers/user.d.ts +0 -9
  240. package/src/lib/controllers/user.d.ts.map +0 -1
  241. package/src/lib/controllers/user.js +0 -21
  242. package/src/lib/controllers/user.js.map +0 -1
  243. package/src/lib/interfaces/api-express-validation-error-response.d.ts +0 -7
  244. package/src/lib/interfaces/api-express-validation-error-response.d.ts.map +0 -1
  245. package/src/lib/interfaces/api-express-validation-error-response.js +0 -3
  246. package/src/lib/interfaces/api-express-validation-error-response.js.map +0 -1
  247. package/src/lib/interfaces/api-mongo-validation-error-response.d.ts +0 -6
  248. package/src/lib/interfaces/api-mongo-validation-error-response.d.ts.map +0 -1
  249. package/src/lib/interfaces/api-mongo-validation-error-response.js +0 -3
  250. package/src/lib/interfaces/api-mongo-validation-error-response.js.map +0 -1
  251. package/src/lib/interfaces/authenticated-cipher.d.ts +0 -10
  252. package/src/lib/interfaces/authenticated-cipher.d.ts.map +0 -1
  253. package/src/lib/interfaces/authenticated-cipher.js +0 -3
  254. package/src/lib/interfaces/authenticated-cipher.js.map +0 -1
  255. package/src/lib/interfaces/authenticated-decipher.d.ts +0 -9
  256. package/src/lib/interfaces/authenticated-decipher.d.ts.map +0 -1
  257. package/src/lib/interfaces/authenticated-decipher.js +0 -3
  258. package/src/lib/interfaces/authenticated-decipher.js.map +0 -1
  259. package/src/lib/interfaces/ecies-consts.d.ts +0 -88
  260. package/src/lib/interfaces/ecies-consts.d.ts.map +0 -1
  261. package/src/lib/interfaces/ecies-consts.js.map +0 -1
  262. package/src/lib/interfaces/mongo-errors.d.ts +0 -9
  263. package/src/lib/interfaces/mongo-errors.d.ts.map +0 -1
  264. package/src/lib/interfaces/mongo-errors.js.map +0 -1
  265. package/src/lib/interfaces/pbkdf2-result.d.ts +0 -6
  266. package/src/lib/interfaces/pbkdf2-result.d.ts.map +0 -1
  267. package/src/lib/interfaces/pbkdf2-result.js.map +0 -1
  268. package/src/lib/interfaces/server-init-result.d.ts +0 -34
  269. package/src/lib/interfaces/server-init-result.d.ts.map +0 -1
  270. package/src/lib/interfaces/server-init-result.js.map +0 -1
  271. package/src/lib/services/keyWrapping.d.ts +0 -61
  272. package/src/lib/services/keyWrapping.d.ts.map +0 -1
  273. package/src/lib/services/keyWrapping.js +0 -297
  274. package/src/lib/services/keyWrapping.js.map +0 -1
  275. package/src/lib/services/pbkdf2.d.ts +0 -6
  276. package/src/lib/services/pbkdf2.d.ts.map +0 -1
  277. package/src/lib/services/pbkdf2.js +0 -31
  278. package/src/lib/services/pbkdf2.js.map +0 -1
  279. package/src/lib/services/user.d.ts +0 -10
  280. package/src/lib/services/user.d.ts.map +0 -1
  281. package/src/lib/services/user.js +0 -11
  282. package/src/lib/services/user.js.map +0 -1
  283. /package/{README.md → brightchain-api-lib/README.md} +0 -0
@@ -0,0 +1,246 @@
1
+ import { CoreLanguageCode } from '@digitaldefiance/i18n-lib';
2
+ import { PlatformID } from '@digitaldefiance/node-ecies-lib';
3
+ import { ApiErrorResponse, ApiRequestHandler, TypedHandlers } from '@digitaldefiance/node-express-suite';
4
+ import { IBrightChainApplication } from '../../interfaces/application';
5
+ import { IBrightenBlockResponse, IDeleteBlockResponse, IGetBlockMetadataResponse, IGetBlockResponse, IStoreBlockResponse } from '../../interfaces/blockResponses';
6
+ import { DefaultBackendIdType } from '../../shared-types';
7
+ import { BaseController } from '../base';
8
+ /**
9
+ * Error codes for block API operations
10
+ * @deprecated Use ErrorCode from '../../utils/errorResponse' instead
11
+ */
12
+ export declare enum BlockErrorCode {
13
+ BLOCK_NOT_FOUND = "BLOCK_NOT_FOUND",
14
+ BLOCK_VALIDATION_FAILED = "BLOCK_VALIDATION_FAILED",
15
+ BLOCK_SIZE_MISMATCH = "BLOCK_SIZE_MISMATCH",
16
+ INSUFFICIENT_RANDOM_BLOCKS = "INSUFFICIENT_RANDOM_BLOCKS",
17
+ BLOCK_ALREADY_EXISTS = "BLOCK_ALREADY_EXISTS",
18
+ VALIDATION_ERROR = "VALIDATION_ERROR",
19
+ UNAUTHORIZED = "UNAUTHORIZED",
20
+ INTERNAL_ERROR = "INTERNAL_ERROR"
21
+ }
22
+ type BlockApiResponse = IStoreBlockResponse | IGetBlockResponse | IGetBlockMetadataResponse | IDeleteBlockResponse | IBrightenBlockResponse | ApiErrorResponse;
23
+ interface BlocksHandlers extends TypedHandlers {
24
+ storeBlock: ApiRequestHandler<IStoreBlockResponse | ApiErrorResponse>;
25
+ getBlock: ApiRequestHandler<IGetBlockResponse | ApiErrorResponse>;
26
+ getBlockMetadata: ApiRequestHandler<IGetBlockMetadataResponse | ApiErrorResponse>;
27
+ deleteBlock: ApiRequestHandler<IDeleteBlockResponse | ApiErrorResponse>;
28
+ brightenBlock: ApiRequestHandler<IBrightenBlockResponse | ApiErrorResponse>;
29
+ }
30
+ /**
31
+ * Controller for block storage operations.
32
+ *
33
+ * Provides REST API endpoints for storing, retrieving, and managing blocks
34
+ * in the BrightChain distributed storage system.
35
+ *
36
+ * ## Endpoints
37
+ *
38
+ * ### POST /api/blocks
39
+ * Store a new block with optional durability settings.
40
+ *
41
+ * **Request Body:**
42
+ * - `data` (string, required): Base64-encoded block data
43
+ * - `canRead` (boolean, optional): Whether the block can be read (default: true)
44
+ * - `canPersist` (boolean, optional): Whether the block can be persisted (default: true)
45
+ * - `options` (object, optional): Block storage options
46
+ * - `expiresAt` (string): ISO date when the block expires
47
+ * - `durabilityLevel` (string): 'ephemeral' | 'standard' | 'high_durability'
48
+ *
49
+ * **Response:** Block ID and metadata
50
+ *
51
+ * ### GET /api/blocks/:blockId
52
+ * Retrieve a block by its ID.
53
+ *
54
+ * **Parameters:**
55
+ * - `blockId` (string, required): Hex-encoded block checksum
56
+ *
57
+ * **Response:** Block data (base64) and metadata
58
+ *
59
+ * ### GET /api/blocks/:blockId/metadata
60
+ * Get metadata for a block without retrieving the data.
61
+ *
62
+ * **Parameters:**
63
+ * - `blockId` (string, required): Hex-encoded block checksum
64
+ *
65
+ * **Response:** Block metadata including durability level, access count, etc.
66
+ *
67
+ * ### DELETE /api/blocks/:blockId
68
+ * Delete a block and its associated parity blocks.
69
+ *
70
+ * **Parameters:**
71
+ * - `blockId` (string, required): Hex-encoded block checksum
72
+ *
73
+ * **Response:** Success confirmation
74
+ *
75
+ * ### POST /api/blocks/brighten
76
+ * Brighten a block by XORing it with random blocks for Owner-Free storage.
77
+ *
78
+ * **Request Body:**
79
+ * - `blockId` (string, required): Hex-encoded block checksum to brighten
80
+ * - `randomBlockCount` (number, required): Number of random blocks to XOR with
81
+ *
82
+ * **Response:** Brightened block ID and list of random block IDs used
83
+ *
84
+ * @requirements 11.1, 11.2, 11.3, 11.4, 11.5, 11.6, 11.7
85
+ */
86
+ export declare class BlocksController<TID extends PlatformID = DefaultBackendIdType> extends BaseController<TID, BlockApiResponse, BlocksHandlers, CoreLanguageCode> {
87
+ private blocksService;
88
+ constructor(application: IBrightChainApplication<TID>);
89
+ protected initRouteDefinitions(): void;
90
+ /**
91
+ * POST /api/blocks
92
+ * Store a new block with optional durability settings.
93
+ *
94
+ * The block data is stored with the configured durability level, which determines
95
+ * how many parity blocks are generated for FEC recovery:
96
+ * - 'ephemeral': No parity blocks
97
+ * - 'standard': 1 parity block
98
+ * - 'high_durability': 2+ parity blocks
99
+ *
100
+ * @param req - Request containing base64-encoded block data and options
101
+ * @returns Block ID and metadata on success, or error response
102
+ *
103
+ * @example
104
+ * ```json
105
+ * // Request
106
+ * POST /api/blocks
107
+ * {
108
+ * "data": "SGVsbG8gV29ybGQ=",
109
+ * "options": {
110
+ * "durabilityLevel": "standard",
111
+ * "expiresAt": "2025-12-31T23:59:59Z"
112
+ * }
113
+ * }
114
+ *
115
+ * // Response
116
+ * {
117
+ * "blockId": "abc123...",
118
+ * "success": true,
119
+ * "metadata": {
120
+ * "blockId": "abc123...",
121
+ * "durabilityLevel": "standard",
122
+ * "parityBlockIds": ["abc123.p0"],
123
+ * ...
124
+ * }
125
+ * }
126
+ * ```
127
+ */
128
+ private handleStoreBlock;
129
+ /**
130
+ * GET /api/blocks/:blockId
131
+ * Retrieve a block by its ID.
132
+ *
133
+ * Returns the block data and metadata. The access count and last access
134
+ * timestamp in the metadata are updated on each retrieval.
135
+ *
136
+ * @param req - Request containing the block ID parameter
137
+ * @returns Block data (base64) and metadata on success, or 404 if not found
138
+ *
139
+ * @example
140
+ * ```json
141
+ * // Request
142
+ * GET /api/blocks/abc123...
143
+ *
144
+ * // Response
145
+ * {
146
+ * "blockId": "abc123...",
147
+ * "data": "SGVsbG8gV29ybGQ=",
148
+ * "canRead": true,
149
+ * "canPersist": true,
150
+ * "metadata": { ... }
151
+ * }
152
+ * ```
153
+ */
154
+ private handleGetBlock;
155
+ /**
156
+ * GET /api/blocks/:blockId/metadata
157
+ * Get metadata for a block without retrieving the data.
158
+ *
159
+ * Useful for checking block status, durability level, replication status,
160
+ * and access patterns without the overhead of retrieving the full block data.
161
+ *
162
+ * @param req - Request containing the block ID parameter
163
+ * @returns Block metadata on success, or 404 if not found
164
+ *
165
+ * @example
166
+ * ```json
167
+ * // Request
168
+ * GET /api/blocks/abc123.../metadata
169
+ *
170
+ * // Response
171
+ * {
172
+ * "blockId": "abc123...",
173
+ * "metadata": {
174
+ * "blockId": "abc123...",
175
+ * "createdAt": "2025-01-15T10:00:00Z",
176
+ * "durabilityLevel": "standard",
177
+ * "parityBlockIds": ["abc123.p0"],
178
+ * "accessCount": 5,
179
+ * "lastAccessedAt": "2025-01-16T14:30:00Z",
180
+ * "replicationStatus": "replicated",
181
+ * "size": 4096,
182
+ * "checksum": "abc123..."
183
+ * }
184
+ * }
185
+ * ```
186
+ */
187
+ private handleGetBlockMetadata;
188
+ /**
189
+ * DELETE /api/blocks/:blockId
190
+ * Delete a block and its associated parity blocks.
191
+ *
192
+ * This operation removes:
193
+ * - The block data file
194
+ * - All associated parity block files
195
+ * - The block metadata
196
+ *
197
+ * @param req - Request containing the block ID parameter
198
+ * @returns Success confirmation on success, or 404 if not found
199
+ *
200
+ * @example
201
+ * ```json
202
+ * // Request
203
+ * DELETE /api/blocks/abc123...
204
+ *
205
+ * // Response
206
+ * {
207
+ * "blockId": "abc123...",
208
+ * "success": true
209
+ * }
210
+ * ```
211
+ */
212
+ private handleDeleteBlock;
213
+ /**
214
+ * POST /api/blocks/brighten
215
+ * Brighten a block by XORing it with random blocks for Owner-Free storage.
216
+ *
217
+ * This operation implements the Owner-Free storage pattern where the original
218
+ * data cannot be reconstructed without all the random blocks used in the
219
+ * XOR operation. The brightened block is stored and its ID is returned along
220
+ * with the IDs of all random blocks used.
221
+ *
222
+ * @param req - Request containing block ID and random block count
223
+ * @returns Brightened block ID and list of random block IDs used
224
+ * @throws INSUFFICIENT_RANDOM_BLOCKS if not enough random blocks are available
225
+ *
226
+ * @example
227
+ * ```json
228
+ * // Request
229
+ * POST /api/blocks/brighten
230
+ * {
231
+ * "blockId": "abc123...",
232
+ * "randomBlockCount": 3
233
+ * }
234
+ *
235
+ * // Response
236
+ * {
237
+ * "brightenedBlockId": "def456...",
238
+ * "randomBlockIds": ["rand1...", "rand2...", "rand3..."],
239
+ * "originalBlockId": "abc123..."
240
+ * }
241
+ * ```
242
+ */
243
+ private handleBrightenBlock;
244
+ }
245
+ export {};
246
+ //# sourceMappingURL=blocks.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"blocks.d.ts","sourceRoot":"","sources":["../../../../../../brightchain-api-lib/src/lib/controllers/api/blocks.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAC7D,OAAO,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAC7D,OAAO,EACL,gBAAgB,EAChB,iBAAiB,EACjB,aAAa,EAEd,MAAM,qCAAqC,CAAC;AAC7C,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AAQvE,OAAO,EACL,sBAAsB,EACtB,oBAAoB,EACpB,yBAAyB,EACzB,iBAAiB,EACjB,mBAAmB,EACpB,MAAM,iCAAiC,CAAC;AAGzC,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAQ1D,OAAO,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAGzC;;;GAGG;AACH,oBAAY,cAAc;IACxB,eAAe,oBAAoB;IACnC,uBAAuB,4BAA4B;IACnD,mBAAmB,wBAAwB;IAC3C,0BAA0B,+BAA+B;IACzD,oBAAoB,yBAAyB;IAC7C,gBAAgB,qBAAqB;IACrC,YAAY,iBAAiB;IAC7B,cAAc,mBAAmB;CAClC;AAED,KAAK,gBAAgB,GACjB,mBAAmB,GACnB,iBAAiB,GACjB,yBAAyB,GACzB,oBAAoB,GACpB,sBAAsB,GACtB,gBAAgB,CAAC;AAErB,UAAU,cAAe,SAAQ,aAAa;IAC5C,UAAU,EAAE,iBAAiB,CAAC,mBAAmB,GAAG,gBAAgB,CAAC,CAAC;IACtE,QAAQ,EAAE,iBAAiB,CAAC,iBAAiB,GAAG,gBAAgB,CAAC,CAAC;IAClE,gBAAgB,EAAE,iBAAiB,CACjC,yBAAyB,GAAG,gBAAgB,CAC7C,CAAC;IACF,WAAW,EAAE,iBAAiB,CAAC,oBAAoB,GAAG,gBAAgB,CAAC,CAAC;IACxE,aAAa,EAAE,iBAAiB,CAAC,sBAAsB,GAAG,gBAAgB,CAAC,CAAC;CAC7E;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuDG;AACH,qBAAa,gBAAgB,CAC3B,GAAG,SAAS,UAAU,GAAG,oBAAoB,CAC7C,SAAQ,cAAc,CACtB,GAAG,EACH,gBAAgB,EAChB,cAAc,EACd,gBAAgB,CACjB;IACC,OAAO,CAAC,aAAa,CAAgB;gBAEzB,WAAW,EAAE,uBAAuB,CAAC,GAAG,CAAC;IAOrD,SAAS,CAAC,oBAAoB,IAAI,IAAI;IAsCtC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAqCG;IACH,OAAO,CAAC,gBAAgB,CA+DtB;IAEF;;;;;;;;;;;;;;;;;;;;;;;;OAwBG;IACH,OAAO,CAAC,cAAc,CA4BpB;IAEF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA+BG;IACH,OAAO,CAAC,sBAAsB,CA6B5B;IAEF;;;;;;;;;;;;;;;;;;;;;;;OAuBG;IACH,OAAO,CAAC,iBAAiB,CAyBvB;IAEF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA6BG;IACH,OAAO,CAAC,mBAAmB,CAoCzB;CACH"}
@@ -0,0 +1,414 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.BlocksController = exports.BlockErrorCode = void 0;
4
+ /* eslint-disable @typescript-eslint/no-explicit-any */
5
+ const brightchain_lib_1 = require("@brightchain/brightchain-lib");
6
+ const node_express_suite_1 = require("@digitaldefiance/node-express-suite");
7
+ const blockServiceFactory_1 = require("../../services/blockServiceFactory");
8
+ const errorResponse_1 = require("../../utils/errorResponse");
9
+ const base_1 = require("../base");
10
+ /**
11
+ * Error codes for block API operations
12
+ * @deprecated Use ErrorCode from '../../utils/errorResponse' instead
13
+ */
14
+ var BlockErrorCode;
15
+ (function (BlockErrorCode) {
16
+ BlockErrorCode["BLOCK_NOT_FOUND"] = "BLOCK_NOT_FOUND";
17
+ BlockErrorCode["BLOCK_VALIDATION_FAILED"] = "BLOCK_VALIDATION_FAILED";
18
+ BlockErrorCode["BLOCK_SIZE_MISMATCH"] = "BLOCK_SIZE_MISMATCH";
19
+ BlockErrorCode["INSUFFICIENT_RANDOM_BLOCKS"] = "INSUFFICIENT_RANDOM_BLOCKS";
20
+ BlockErrorCode["BLOCK_ALREADY_EXISTS"] = "BLOCK_ALREADY_EXISTS";
21
+ BlockErrorCode["VALIDATION_ERROR"] = "VALIDATION_ERROR";
22
+ BlockErrorCode["UNAUTHORIZED"] = "UNAUTHORIZED";
23
+ BlockErrorCode["INTERNAL_ERROR"] = "INTERNAL_ERROR";
24
+ })(BlockErrorCode || (exports.BlockErrorCode = BlockErrorCode = {}));
25
+ /**
26
+ * Controller for block storage operations.
27
+ *
28
+ * Provides REST API endpoints for storing, retrieving, and managing blocks
29
+ * in the BrightChain distributed storage system.
30
+ *
31
+ * ## Endpoints
32
+ *
33
+ * ### POST /api/blocks
34
+ * Store a new block with optional durability settings.
35
+ *
36
+ * **Request Body:**
37
+ * - `data` (string, required): Base64-encoded block data
38
+ * - `canRead` (boolean, optional): Whether the block can be read (default: true)
39
+ * - `canPersist` (boolean, optional): Whether the block can be persisted (default: true)
40
+ * - `options` (object, optional): Block storage options
41
+ * - `expiresAt` (string): ISO date when the block expires
42
+ * - `durabilityLevel` (string): 'ephemeral' | 'standard' | 'high_durability'
43
+ *
44
+ * **Response:** Block ID and metadata
45
+ *
46
+ * ### GET /api/blocks/:blockId
47
+ * Retrieve a block by its ID.
48
+ *
49
+ * **Parameters:**
50
+ * - `blockId` (string, required): Hex-encoded block checksum
51
+ *
52
+ * **Response:** Block data (base64) and metadata
53
+ *
54
+ * ### GET /api/blocks/:blockId/metadata
55
+ * Get metadata for a block without retrieving the data.
56
+ *
57
+ * **Parameters:**
58
+ * - `blockId` (string, required): Hex-encoded block checksum
59
+ *
60
+ * **Response:** Block metadata including durability level, access count, etc.
61
+ *
62
+ * ### DELETE /api/blocks/:blockId
63
+ * Delete a block and its associated parity blocks.
64
+ *
65
+ * **Parameters:**
66
+ * - `blockId` (string, required): Hex-encoded block checksum
67
+ *
68
+ * **Response:** Success confirmation
69
+ *
70
+ * ### POST /api/blocks/brighten
71
+ * Brighten a block by XORing it with random blocks for Owner-Free storage.
72
+ *
73
+ * **Request Body:**
74
+ * - `blockId` (string, required): Hex-encoded block checksum to brighten
75
+ * - `randomBlockCount` (number, required): Number of random blocks to XOR with
76
+ *
77
+ * **Response:** Brightened block ID and list of random block IDs used
78
+ *
79
+ * @requirements 11.1, 11.2, 11.3, 11.4, 11.5, 11.6, 11.7
80
+ */
81
+ class BlocksController extends base_1.BaseController {
82
+ constructor(application) {
83
+ super(application);
84
+ /**
85
+ * POST /api/blocks
86
+ * Store a new block with optional durability settings.
87
+ *
88
+ * The block data is stored with the configured durability level, which determines
89
+ * how many parity blocks are generated for FEC recovery:
90
+ * - 'ephemeral': No parity blocks
91
+ * - 'standard': 1 parity block
92
+ * - 'high_durability': 2+ parity blocks
93
+ *
94
+ * @param req - Request containing base64-encoded block data and options
95
+ * @returns Block ID and metadata on success, or error response
96
+ *
97
+ * @example
98
+ * ```json
99
+ * // Request
100
+ * POST /api/blocks
101
+ * {
102
+ * "data": "SGVsbG8gV29ybGQ=",
103
+ * "options": {
104
+ * "durabilityLevel": "standard",
105
+ * "expiresAt": "2025-12-31T23:59:59Z"
106
+ * }
107
+ * }
108
+ *
109
+ * // Response
110
+ * {
111
+ * "blockId": "abc123...",
112
+ * "success": true,
113
+ * "metadata": {
114
+ * "blockId": "abc123...",
115
+ * "durabilityLevel": "standard",
116
+ * "parityBlockIds": ["abc123.p0"],
117
+ * ...
118
+ * }
119
+ * }
120
+ * ```
121
+ */
122
+ this.handleStoreBlock = async (req) => {
123
+ try {
124
+ const { data, canRead = true, canPersist = true, options, } = req.body;
125
+ // Validate required fields
126
+ if (!data) {
127
+ return (0, errorResponse_1.validationError)('Missing required field: data');
128
+ }
129
+ // Get authenticated member from session
130
+ const sessionsController = this.application.getController('sessions');
131
+ let member;
132
+ try {
133
+ member = sessionsController.getMemberFromSession(req.headers.authorization);
134
+ }
135
+ catch {
136
+ return (0, errorResponse_1.unauthorizedError)();
137
+ }
138
+ // Parse options if provided
139
+ const blockStoreOptions = options
140
+ ? {
141
+ expiresAt: options.expiresAt
142
+ ? new Date(options.expiresAt)
143
+ : undefined,
144
+ durabilityLevel: options.durabilityLevel,
145
+ }
146
+ : undefined;
147
+ const result = await this.blocksService.storeBlock(Buffer.from(data, 'base64'), member, canRead, canPersist, blockStoreOptions);
148
+ return {
149
+ statusCode: 200,
150
+ response: {
151
+ blockId: result.blockId,
152
+ success: true,
153
+ metadata: result.metadata,
154
+ },
155
+ };
156
+ }
157
+ catch (_error) {
158
+ if (_error instanceof brightchain_lib_1.StoreError) {
159
+ return (0, errorResponse_1.mapStoreError)(_error);
160
+ }
161
+ return (0, errorResponse_1.handleError)(_error);
162
+ }
163
+ };
164
+ /**
165
+ * GET /api/blocks/:blockId
166
+ * Retrieve a block by its ID.
167
+ *
168
+ * Returns the block data and metadata. The access count and last access
169
+ * timestamp in the metadata are updated on each retrieval.
170
+ *
171
+ * @param req - Request containing the block ID parameter
172
+ * @returns Block data (base64) and metadata on success, or 404 if not found
173
+ *
174
+ * @example
175
+ * ```json
176
+ * // Request
177
+ * GET /api/blocks/abc123...
178
+ *
179
+ * // Response
180
+ * {
181
+ * "blockId": "abc123...",
182
+ * "data": "SGVsbG8gV29ybGQ=",
183
+ * "canRead": true,
184
+ * "canPersist": true,
185
+ * "metadata": { ... }
186
+ * }
187
+ * ```
188
+ */
189
+ this.handleGetBlock = async (req) => {
190
+ try {
191
+ const { blockId } = req.params;
192
+ if (!blockId) {
193
+ return (0, errorResponse_1.validationError)('Missing required parameter: blockId');
194
+ }
195
+ const block = await this.blocksService.getBlock(blockId);
196
+ return {
197
+ statusCode: 200,
198
+ response: {
199
+ blockId,
200
+ data: block.data,
201
+ canRead: true,
202
+ canPersist: true,
203
+ metadata: block.metadata,
204
+ },
205
+ };
206
+ }
207
+ catch (_error) {
208
+ if (_error instanceof brightchain_lib_1.StoreError) {
209
+ return (0, errorResponse_1.mapStoreError)(_error);
210
+ }
211
+ return (0, errorResponse_1.handleError)(_error);
212
+ }
213
+ };
214
+ /**
215
+ * GET /api/blocks/:blockId/metadata
216
+ * Get metadata for a block without retrieving the data.
217
+ *
218
+ * Useful for checking block status, durability level, replication status,
219
+ * and access patterns without the overhead of retrieving the full block data.
220
+ *
221
+ * @param req - Request containing the block ID parameter
222
+ * @returns Block metadata on success, or 404 if not found
223
+ *
224
+ * @example
225
+ * ```json
226
+ * // Request
227
+ * GET /api/blocks/abc123.../metadata
228
+ *
229
+ * // Response
230
+ * {
231
+ * "blockId": "abc123...",
232
+ * "metadata": {
233
+ * "blockId": "abc123...",
234
+ * "createdAt": "2025-01-15T10:00:00Z",
235
+ * "durabilityLevel": "standard",
236
+ * "parityBlockIds": ["abc123.p0"],
237
+ * "accessCount": 5,
238
+ * "lastAccessedAt": "2025-01-16T14:30:00Z",
239
+ * "replicationStatus": "replicated",
240
+ * "size": 4096,
241
+ * "checksum": "abc123..."
242
+ * }
243
+ * }
244
+ * ```
245
+ */
246
+ this.handleGetBlockMetadata = async (req) => {
247
+ try {
248
+ const { blockId } = req.params;
249
+ if (!blockId) {
250
+ return (0, errorResponse_1.validationError)('Missing required parameter: blockId');
251
+ }
252
+ const metadata = await this.blocksService.getBlockMetadata(blockId);
253
+ if (!metadata) {
254
+ return (0, errorResponse_1.notFoundError)('Block', blockId);
255
+ }
256
+ return {
257
+ statusCode: 200,
258
+ response: {
259
+ blockId,
260
+ metadata,
261
+ },
262
+ };
263
+ }
264
+ catch (_error) {
265
+ if (_error instanceof brightchain_lib_1.StoreError) {
266
+ return (0, errorResponse_1.mapStoreError)(_error);
267
+ }
268
+ return (0, errorResponse_1.handleError)(_error);
269
+ }
270
+ };
271
+ /**
272
+ * DELETE /api/blocks/:blockId
273
+ * Delete a block and its associated parity blocks.
274
+ *
275
+ * This operation removes:
276
+ * - The block data file
277
+ * - All associated parity block files
278
+ * - The block metadata
279
+ *
280
+ * @param req - Request containing the block ID parameter
281
+ * @returns Success confirmation on success, or 404 if not found
282
+ *
283
+ * @example
284
+ * ```json
285
+ * // Request
286
+ * DELETE /api/blocks/abc123...
287
+ *
288
+ * // Response
289
+ * {
290
+ * "blockId": "abc123...",
291
+ * "success": true
292
+ * }
293
+ * ```
294
+ */
295
+ this.handleDeleteBlock = async (req) => {
296
+ try {
297
+ const { blockId } = req.params;
298
+ if (!blockId) {
299
+ return (0, errorResponse_1.validationError)('Missing required parameter: blockId');
300
+ }
301
+ await this.blocksService.deleteBlock(blockId);
302
+ return {
303
+ statusCode: 200,
304
+ response: {
305
+ blockId,
306
+ success: true,
307
+ },
308
+ };
309
+ }
310
+ catch (_error) {
311
+ if (_error instanceof brightchain_lib_1.StoreError) {
312
+ return (0, errorResponse_1.mapStoreError)(_error);
313
+ }
314
+ return (0, errorResponse_1.handleError)(_error);
315
+ }
316
+ };
317
+ /**
318
+ * POST /api/blocks/brighten
319
+ * Brighten a block by XORing it with random blocks for Owner-Free storage.
320
+ *
321
+ * This operation implements the Owner-Free storage pattern where the original
322
+ * data cannot be reconstructed without all the random blocks used in the
323
+ * XOR operation. The brightened block is stored and its ID is returned along
324
+ * with the IDs of all random blocks used.
325
+ *
326
+ * @param req - Request containing block ID and random block count
327
+ * @returns Brightened block ID and list of random block IDs used
328
+ * @throws INSUFFICIENT_RANDOM_BLOCKS if not enough random blocks are available
329
+ *
330
+ * @example
331
+ * ```json
332
+ * // Request
333
+ * POST /api/blocks/brighten
334
+ * {
335
+ * "blockId": "abc123...",
336
+ * "randomBlockCount": 3
337
+ * }
338
+ *
339
+ * // Response
340
+ * {
341
+ * "brightenedBlockId": "def456...",
342
+ * "randomBlockIds": ["rand1...", "rand2...", "rand3..."],
343
+ * "originalBlockId": "abc123..."
344
+ * }
345
+ * ```
346
+ */
347
+ this.handleBrightenBlock = async (req) => {
348
+ try {
349
+ const { blockId, randomBlockCount } = req.body;
350
+ // Validate required fields
351
+ if (!blockId) {
352
+ return (0, errorResponse_1.validationError)('Missing required field: blockId');
353
+ }
354
+ if (randomBlockCount === undefined || randomBlockCount < 1) {
355
+ return (0, errorResponse_1.validationError)('randomBlockCount must be a positive integer');
356
+ }
357
+ const result = await this.blocksService.brightenBlock(blockId, randomBlockCount);
358
+ return {
359
+ statusCode: 200,
360
+ response: {
361
+ brightenedBlockId: result.brightenedBlockId,
362
+ randomBlockIds: result.randomBlockIds,
363
+ originalBlockId: result.originalBlockId,
364
+ },
365
+ };
366
+ }
367
+ catch (_error) {
368
+ if (_error instanceof brightchain_lib_1.StoreError) {
369
+ return (0, errorResponse_1.mapStoreError)(_error);
370
+ }
371
+ return (0, errorResponse_1.handleError)(_error);
372
+ }
373
+ };
374
+ this.blocksService = blockServiceFactory_1.BlockServiceFactory.getInstance().getService(application);
375
+ }
376
+ initRouteDefinitions() {
377
+ this.routeDefinitions = [
378
+ (0, node_express_suite_1.routeConfig)('post', '/', {
379
+ useAuthentication: true,
380
+ useCryptoAuthentication: false,
381
+ handlerKey: 'storeBlock',
382
+ }),
383
+ (0, node_express_suite_1.routeConfig)('get', '/:blockId', {
384
+ handlerKey: 'getBlock',
385
+ useAuthentication: true,
386
+ useCryptoAuthentication: false,
387
+ }),
388
+ (0, node_express_suite_1.routeConfig)('get', '/:blockId/metadata', {
389
+ handlerKey: 'getBlockMetadata',
390
+ useAuthentication: true,
391
+ useCryptoAuthentication: false,
392
+ }),
393
+ (0, node_express_suite_1.routeConfig)('delete', '/:blockId', {
394
+ handlerKey: 'deleteBlock',
395
+ useAuthentication: true,
396
+ useCryptoAuthentication: false,
397
+ }),
398
+ (0, node_express_suite_1.routeConfig)('post', '/brighten', {
399
+ handlerKey: 'brightenBlock',
400
+ useAuthentication: true,
401
+ useCryptoAuthentication: false,
402
+ }),
403
+ ];
404
+ this.handlers = {
405
+ storeBlock: this.handleStoreBlock.bind(this),
406
+ getBlock: this.handleGetBlock.bind(this),
407
+ getBlockMetadata: this.handleGetBlockMetadata.bind(this),
408
+ deleteBlock: this.handleDeleteBlock.bind(this),
409
+ brightenBlock: this.handleBrightenBlock.bind(this),
410
+ };
411
+ }
412
+ }
413
+ exports.BlocksController = BlocksController;
414
+ //# sourceMappingURL=blocks.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"blocks.js","sourceRoot":"","sources":["../../../../../../brightchain-api-lib/src/lib/controllers/api/blocks.ts"],"names":[],"mappings":"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"}