@brightchain/brightchain-api-lib 0.12.0 → 0.13.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 (184) hide show
  1. package/package.json +4 -4
  2. package/src/lib/application-base.d.ts +1 -1
  3. package/src/lib/application-base.d.ts.map +1 -1
  4. package/src/lib/application.d.ts +52 -0
  5. package/src/lib/application.d.ts.map +1 -1
  6. package/src/lib/application.js +104 -0
  7. package/src/lib/application.js.map +1 -1
  8. package/src/lib/controllers/api/blocks.d.ts.map +1 -1
  9. package/src/lib/controllers/api/blocks.js +62 -0
  10. package/src/lib/controllers/api/blocks.js.map +1 -1
  11. package/src/lib/controllers/api/docs.d.ts +67 -0
  12. package/src/lib/controllers/api/docs.d.ts.map +1 -0
  13. package/src/lib/controllers/api/docs.js +86 -0
  14. package/src/lib/controllers/api/docs.js.map +1 -0
  15. package/src/lib/controllers/api/energy.d.ts.map +1 -1
  16. package/src/lib/controllers/api/energy.js +35 -7
  17. package/src/lib/controllers/api/energy.js.map +1 -1
  18. package/src/lib/controllers/api/health.d.ts +95 -0
  19. package/src/lib/controllers/api/health.d.ts.map +1 -0
  20. package/src/lib/controllers/api/health.js +319 -0
  21. package/src/lib/controllers/api/health.js.map +1 -0
  22. package/src/lib/controllers/api/index.d.ts +6 -0
  23. package/src/lib/controllers/api/index.d.ts.map +1 -1
  24. package/src/lib/controllers/api/index.js +6 -0
  25. package/src/lib/controllers/api/index.js.map +1 -1
  26. package/src/lib/controllers/api/messages.d.ts +119 -0
  27. package/src/lib/controllers/api/messages.d.ts.map +1 -0
  28. package/src/lib/controllers/api/messages.js +269 -0
  29. package/src/lib/controllers/api/messages.js.map +1 -0
  30. package/src/lib/controllers/api/nodes.d.ts +152 -0
  31. package/src/lib/controllers/api/nodes.d.ts.map +1 -0
  32. package/src/lib/controllers/api/nodes.js +378 -0
  33. package/src/lib/controllers/api/nodes.js.map +1 -0
  34. package/src/lib/controllers/api/quorum.d.ts +12 -8
  35. package/src/lib/controllers/api/quorum.d.ts.map +1 -1
  36. package/src/lib/controllers/api/quorum.js +83 -17
  37. package/src/lib/controllers/api/quorum.js.map +1 -1
  38. package/src/lib/controllers/api/scbl.d.ts +80 -0
  39. package/src/lib/controllers/api/scbl.d.ts.map +1 -0
  40. package/src/lib/controllers/api/scbl.js +325 -0
  41. package/src/lib/controllers/api/scbl.js.map +1 -0
  42. package/src/lib/controllers/api/sync.d.ts +140 -0
  43. package/src/lib/controllers/api/sync.d.ts.map +1 -0
  44. package/src/lib/controllers/api/sync.js +352 -0
  45. package/src/lib/controllers/api/sync.js.map +1 -0
  46. package/src/lib/controllers/api/user.d.ts +2 -0
  47. package/src/lib/controllers/api/user.d.ts.map +1 -1
  48. package/src/lib/controllers/api/user.js +122 -7
  49. package/src/lib/controllers/api/user.js.map +1 -1
  50. package/src/lib/enumerations/brightChainApiStrings.d.ts.map +1 -1
  51. package/src/lib/enumerations/brightChainApiStrings.js.map +1 -1
  52. package/src/lib/errors/symmetric.d.ts +2 -2
  53. package/src/lib/errors/symmetric.d.ts.map +1 -1
  54. package/src/lib/errors/symmetric.js.map +1 -1
  55. package/src/lib/errors/typed-error-local.d.ts +3 -3
  56. package/src/lib/errors/typed-error-local.d.ts.map +1 -1
  57. package/src/lib/errors/typed-error-local.js.map +1 -1
  58. package/src/lib/interfaces/application.d.ts +2 -1
  59. package/src/lib/interfaces/application.d.ts.map +1 -1
  60. package/src/lib/interfaces/backend-objects/index.d.ts +4 -4
  61. package/src/lib/interfaces/backend-objects/index.d.ts.map +1 -1
  62. package/src/lib/interfaces/backend-objects/index.js +0 -5
  63. package/src/lib/interfaces/backend-objects/index.js.map +1 -1
  64. package/src/lib/interfaces/bases/index.d.ts +4 -4
  65. package/src/lib/interfaces/bases/index.d.ts.map +1 -1
  66. package/src/lib/interfaces/bases/index.js +0 -5
  67. package/src/lib/interfaces/bases/index.js.map +1 -1
  68. package/src/lib/interfaces/index.d.ts +32 -32
  69. package/src/lib/interfaces/index.d.ts.map +1 -1
  70. package/src/lib/interfaces/index.js +0 -33
  71. package/src/lib/interfaces/index.js.map +1 -1
  72. package/src/lib/interfaces/member/index.d.ts +3 -3
  73. package/src/lib/interfaces/member/index.d.ts.map +1 -1
  74. package/src/lib/interfaces/member/index.js +0 -4
  75. package/src/lib/interfaces/member/index.js.map +1 -1
  76. package/src/lib/interfaces/requests/deleteMessagesRequest.d.ts +12 -0
  77. package/src/lib/interfaces/requests/deleteMessagesRequest.d.ts.map +1 -0
  78. package/src/lib/interfaces/requests/deleteMessagesRequest.js +3 -0
  79. package/src/lib/interfaces/requests/deleteMessagesRequest.js.map +1 -0
  80. package/src/lib/interfaces/requests/discoverBlockRequest.d.ts +10 -0
  81. package/src/lib/interfaces/requests/discoverBlockRequest.d.ts.map +1 -0
  82. package/src/lib/interfaces/requests/discoverBlockRequest.js +3 -0
  83. package/src/lib/interfaces/requests/discoverBlockRequest.js.map +1 -0
  84. package/src/lib/interfaces/requests/getBlockLocationRequest.d.ts +9 -0
  85. package/src/lib/interfaces/requests/getBlockLocationRequest.d.ts.map +1 -0
  86. package/src/lib/interfaces/requests/getBlockLocationRequest.js +3 -0
  87. package/src/lib/interfaces/requests/getBlockLocationRequest.js.map +1 -0
  88. package/src/lib/interfaces/requests/getMessageRequest.d.ts +12 -0
  89. package/src/lib/interfaces/requests/getMessageRequest.d.ts.map +1 -0
  90. package/src/lib/interfaces/requests/getMessageRequest.js +3 -0
  91. package/src/lib/interfaces/requests/getMessageRequest.js.map +1 -0
  92. package/src/lib/interfaces/requests/getNodeRequest.d.ts +9 -0
  93. package/src/lib/interfaces/requests/getNodeRequest.d.ts.map +1 -0
  94. package/src/lib/interfaces/{membersResponse.js → requests/getNodeRequest.js} +1 -1
  95. package/src/lib/interfaces/requests/getNodeRequest.js.map +1 -0
  96. package/src/lib/interfaces/requests/index.d.ts +12 -0
  97. package/src/lib/interfaces/requests/index.d.ts.map +1 -0
  98. package/src/lib/interfaces/requests/index.js +3 -0
  99. package/src/lib/interfaces/requests/index.js.map +1 -0
  100. package/src/lib/interfaces/requests/messageRequest.d.ts +10 -0
  101. package/src/lib/interfaces/requests/messageRequest.d.ts.map +1 -0
  102. package/src/lib/interfaces/requests/messageRequest.js +3 -0
  103. package/src/lib/interfaces/requests/messageRequest.js.map +1 -0
  104. package/src/lib/interfaces/requests/queryMessagesRequest.d.ts +16 -0
  105. package/src/lib/interfaces/requests/queryMessagesRequest.d.ts.map +1 -0
  106. package/src/lib/interfaces/requests/queryMessagesRequest.js +3 -0
  107. package/src/lib/interfaces/requests/queryMessagesRequest.js.map +1 -0
  108. package/src/lib/interfaces/requests/registerNodeRequest.d.ts +11 -0
  109. package/src/lib/interfaces/requests/registerNodeRequest.d.ts.map +1 -0
  110. package/src/lib/interfaces/requests/registerNodeRequest.js +3 -0
  111. package/src/lib/interfaces/requests/registerNodeRequest.js.map +1 -0
  112. package/src/lib/interfaces/requests/replicateBlockRequest.d.ts +13 -0
  113. package/src/lib/interfaces/requests/replicateBlockRequest.d.ts.map +1 -0
  114. package/src/lib/interfaces/requests/replicateBlockRequest.js +3 -0
  115. package/src/lib/interfaces/requests/replicateBlockRequest.js.map +1 -0
  116. package/src/lib/interfaces/requests/sendMessageRequest.d.ts +24 -0
  117. package/src/lib/interfaces/requests/sendMessageRequest.d.ts.map +1 -0
  118. package/src/lib/interfaces/requests/sendMessageRequest.js +3 -0
  119. package/src/lib/interfaces/requests/sendMessageRequest.js.map +1 -0
  120. package/src/lib/interfaces/requests/storeSCBLRequestBody.d.ts +9 -0
  121. package/src/lib/interfaces/requests/storeSCBLRequestBody.d.ts.map +1 -0
  122. package/src/lib/interfaces/requests/storeSCBLRequestBody.js +3 -0
  123. package/src/lib/interfaces/requests/storeSCBLRequestBody.js.map +1 -0
  124. package/src/lib/interfaces/requests/syncRequestBody.d.ts +10 -0
  125. package/src/lib/interfaces/requests/syncRequestBody.d.ts.map +1 -0
  126. package/src/lib/interfaces/requests/syncRequestBody.js +3 -0
  127. package/src/lib/interfaces/requests/syncRequestBody.js.map +1 -0
  128. package/src/lib/interfaces/responses/index.d.ts +7 -7
  129. package/src/lib/interfaces/responses/index.d.ts.map +1 -1
  130. package/src/lib/interfaces/responses/index.js +0 -8
  131. package/src/lib/interfaces/responses/index.js.map +1 -1
  132. package/src/lib/middlewares/authentication.d.ts +133 -0
  133. package/src/lib/middlewares/authentication.d.ts.map +1 -0
  134. package/src/lib/middlewares/authentication.js +224 -0
  135. package/src/lib/middlewares/authentication.js.map +1 -0
  136. package/src/lib/middlewares/index.d.ts +2 -0
  137. package/src/lib/middlewares/index.d.ts.map +1 -1
  138. package/src/lib/middlewares/index.js +15 -1
  139. package/src/lib/middlewares/index.js.map +1 -1
  140. package/src/lib/middlewares/request-id.d.ts +18 -0
  141. package/src/lib/middlewares/request-id.d.ts.map +1 -0
  142. package/src/lib/middlewares/request-id.js +30 -0
  143. package/src/lib/middlewares/request-id.js.map +1 -0
  144. package/src/lib/openapi/index.d.ts +8 -0
  145. package/src/lib/openapi/index.d.ts.map +1 -0
  146. package/src/lib/openapi/index.js +21 -0
  147. package/src/lib/openapi/index.js.map +1 -0
  148. package/src/lib/openapi/schemas.d.ts +15 -0
  149. package/src/lib/openapi/schemas.d.ts.map +1 -0
  150. package/src/lib/openapi/schemas.js +610 -0
  151. package/src/lib/openapi/schemas.js.map +1 -0
  152. package/src/lib/routers/api.d.ts +62 -0
  153. package/src/lib/routers/api.d.ts.map +1 -1
  154. package/src/lib/routers/api.js +85 -0
  155. package/src/lib/routers/api.js.map +1 -1
  156. package/src/lib/services/diskQuorumService.d.ts +7 -6
  157. package/src/lib/services/diskQuorumService.d.ts.map +1 -1
  158. package/src/lib/services/diskQuorumService.js.map +1 -1
  159. package/src/lib/services/email.d.ts +2 -1
  160. package/src/lib/services/email.d.ts.map +1 -1
  161. package/src/lib/services/email.js.map +1 -1
  162. package/src/lib/services/eventNotificationSystem.d.ts +88 -6
  163. package/src/lib/services/eventNotificationSystem.d.ts.map +1 -1
  164. package/src/lib/services/eventNotificationSystem.js +132 -17
  165. package/src/lib/services/eventNotificationSystem.js.map +1 -1
  166. package/src/lib/services/fec.js +1 -1
  167. package/src/lib/services/fec.js.map +1 -1
  168. package/src/lib/types/backend-id.d.ts +2 -1
  169. package/src/lib/types/backend-id.d.ts.map +1 -1
  170. package/src/lib/utils/errorResponse.d.ts +227 -2
  171. package/src/lib/utils/errorResponse.d.ts.map +1 -1
  172. package/src/lib/utils/errorResponse.js +292 -3
  173. package/src/lib/utils/errorResponse.js.map +1 -1
  174. package/src/lib/i18n/index.d.ts +0 -7
  175. package/src/lib/i18n/index.d.ts.map +0 -1
  176. package/src/lib/i18n/index.js +0 -29
  177. package/src/lib/i18n/index.js.map +0 -1
  178. package/src/lib/i18n/strings/index.d.ts +0 -6
  179. package/src/lib/i18n/strings/index.d.ts.map +0 -1
  180. package/src/lib/i18n/strings/index.js +0 -17
  181. package/src/lib/i18n/strings/index.js.map +0 -1
  182. package/src/lib/interfaces/membersResponse.d.ts +0 -12
  183. package/src/lib/interfaces/membersResponse.d.ts.map +0 -1
  184. package/src/lib/interfaces/membersResponse.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../brightchain-api-lib/src/lib/interfaces/responses/index.ts"],"names":[],"mappings":";;;AAAA,sEAA4C;AAC5C,mEAAyC;AACzC,oEAA0C;AAC1C,+DAAqC;AACrC,kEAAwC;AACxC,sEAA4C;AAC5C,sEAA4C"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../brightchain-api-lib/src/lib/interfaces/responses/index.ts"],"names":[],"mappings":""}
@@ -0,0 +1,133 @@
1
+ import { MemberType } from '@digitaldefiance/ecies-lib';
2
+ import { NextFunction, Request, Response } from 'express';
3
+ /**
4
+ * Member context attached to the request after successful authentication.
5
+ * Contains the decoded JWT payload with member information.
6
+ * @requirements 8.3
7
+ */
8
+ export interface IMemberContext {
9
+ memberId: string;
10
+ username: string;
11
+ type: MemberType;
12
+ roles?: string[];
13
+ iat: number;
14
+ exp: number;
15
+ }
16
+ /**
17
+ * Extended request interface with member context.
18
+ */
19
+ export interface IAuthenticatedRequest extends Request {
20
+ memberContext?: IMemberContext;
21
+ }
22
+ /**
23
+ * Configuration options for the JWT authentication middleware.
24
+ */
25
+ export interface IJwtAuthConfig {
26
+ /** JWT secret for token verification */
27
+ jwtSecret: string;
28
+ /** Whether to allow requests without tokens (for optional auth) */
29
+ optional?: boolean;
30
+ }
31
+ /**
32
+ * Configuration options for role-based access control middleware.
33
+ */
34
+ export interface IRoleConfig {
35
+ /** Required roles (user must have at least one) */
36
+ requiredRoles?: string[];
37
+ /** Required member types (user must have at least one) */
38
+ requiredTypes?: MemberType[];
39
+ /** Whether all roles are required (AND) vs any role (OR) */
40
+ requireAll?: boolean;
41
+ }
42
+ /**
43
+ * Extract the JWT token from the Authorization header.
44
+ * Supports Bearer token format.
45
+ *
46
+ * @param req - Express request object
47
+ * @returns The extracted token or null if not found
48
+ */
49
+ export declare function extractToken(req: Request): string | null;
50
+ /**
51
+ * Create a JWT authentication middleware with the given configuration.
52
+ * This middleware validates JWT tokens and attaches member context to the request.
53
+ *
54
+ * @param config - JWT authentication configuration
55
+ * @returns Express middleware function
56
+ * @requirements 8.1, 8.2, 8.3
57
+ */
58
+ export declare function createJwtAuthMiddleware(config: IJwtAuthConfig): (req: IAuthenticatedRequest, res: Response, next: NextFunction) => void;
59
+ /**
60
+ * Create a role-based access control middleware.
61
+ * This middleware checks if the authenticated user has the required roles or member types.
62
+ *
63
+ * @param config - Role configuration
64
+ * @returns Express middleware function
65
+ * @requirements 8.4
66
+ */
67
+ export declare function createRoleMiddleware(config: IRoleConfig): (req: IAuthenticatedRequest, res: Response, next: NextFunction) => void;
68
+ /**
69
+ * Convenience function to create a middleware that requires authentication.
70
+ * This is a shorthand for createJwtAuthMiddleware with optional=false.
71
+ *
72
+ * @param jwtSecret - JWT secret for token verification
73
+ * @returns Express middleware function
74
+ * @requirements 8.1, 8.2, 8.3
75
+ */
76
+ export declare function requireAuth(jwtSecret: string): (req: IAuthenticatedRequest, res: Response, next: NextFunction) => void;
77
+ /**
78
+ * Convenience function to create a middleware that optionally authenticates.
79
+ * If a token is present, it will be validated and member context attached.
80
+ * If no token is present, the request continues without member context.
81
+ *
82
+ * @param jwtSecret - JWT secret for token verification
83
+ * @returns Express middleware function
84
+ */
85
+ export declare function optionalAuth(jwtSecret: string): (req: IAuthenticatedRequest, res: Response, next: NextFunction) => void;
86
+ /**
87
+ * Convenience function to create a middleware that requires specific roles.
88
+ * Must be used after authentication middleware.
89
+ *
90
+ * @param roles - Required roles (user must have at least one)
91
+ * @returns Express middleware function
92
+ * @requirements 8.4
93
+ */
94
+ export declare function requireRoles(...roles: string[]): (req: IAuthenticatedRequest, res: Response, next: NextFunction) => void;
95
+ /**
96
+ * Convenience function to create a middleware that requires all specified roles.
97
+ * Must be used after authentication middleware.
98
+ *
99
+ * @param roles - Required roles (user must have all)
100
+ * @returns Express middleware function
101
+ * @requirements 8.4
102
+ */
103
+ export declare function requireAllRoles(...roles: string[]): (req: IAuthenticatedRequest, res: Response, next: NextFunction) => void;
104
+ /**
105
+ * Convenience function to create a middleware that requires specific member types.
106
+ * Must be used after authentication middleware.
107
+ *
108
+ * @param types - Required member types (user must have at least one)
109
+ * @returns Express middleware function
110
+ * @requirements 8.4
111
+ */
112
+ export declare function requireMemberTypes(...types: MemberType[]): (req: IAuthenticatedRequest, res: Response, next: NextFunction) => void;
113
+ /**
114
+ * Combined middleware that requires authentication and specific roles.
115
+ * This is a convenience function that combines requireAuth and requireRoles.
116
+ *
117
+ * @param jwtSecret - JWT secret for token verification
118
+ * @param roles - Required roles (user must have at least one)
119
+ * @returns Array of Express middleware functions
120
+ * @requirements 8.1, 8.2, 8.3, 8.4
121
+ */
122
+ export declare function requireAuthWithRoles(jwtSecret: string, ...roles: string[]): ((req: IAuthenticatedRequest, res: Response, next: NextFunction) => void)[];
123
+ /**
124
+ * Combined middleware that requires authentication and specific member types.
125
+ * This is a convenience function that combines requireAuth and requireMemberTypes.
126
+ *
127
+ * @param jwtSecret - JWT secret for token verification
128
+ * @param types - Required member types (user must have at least one)
129
+ * @returns Array of Express middleware functions
130
+ * @requirements 8.1, 8.2, 8.3, 8.4
131
+ */
132
+ export declare function requireAuthWithMemberTypes(jwtSecret: string, ...types: MemberType[]): ((req: IAuthenticatedRequest, res: Response, next: NextFunction) => void)[];
133
+ //# sourceMappingURL=authentication.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"authentication.d.ts","sourceRoot":"","sources":["../../../../../brightchain-api-lib/src/lib/middlewares/authentication.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AACxD,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAS1D;;;;GAIG;AACH,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,UAAU,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;CACb;AAED;;GAEG;AACH,MAAM,WAAW,qBAAsB,SAAQ,OAAO;IACpD,aAAa,CAAC,EAAE,cAAc,CAAC;CAChC;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,wCAAwC;IACxC,SAAS,EAAE,MAAM,CAAC;IAClB,mEAAmE;IACnE,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,mDAAmD;IACnD,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IACzB,0DAA0D;IAC1D,aAAa,CAAC,EAAE,UAAU,EAAE,CAAC;IAC7B,4DAA4D;IAC5D,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAED;;;;;;GAMG;AACH,wBAAgB,YAAY,CAAC,GAAG,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,CAaxD;AAED;;;;;;;GAOG;AACH,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,cAAc,IAE1D,KAAK,qBAAqB,EAC1B,KAAK,QAAQ,EACb,MAAM,YAAY,KACjB,IAAI,CAsER;AAED;;;;;;;GAOG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,WAAW,IAEpD,KAAK,qBAAqB,EAC1B,KAAK,QAAQ,EACb,MAAM,YAAY,KACjB,IAAI,CAqDR;AAED;;;;;;;GAOG;AACH,wBAAgB,WAAW,CAAC,SAAS,EAAE,MAAM,SAvJpC,qBAAqB,OACrB,QAAQ,QACP,YAAY,KACjB,IAAI,CAsJR;AAED;;;;;;;GAOG;AACH,wBAAgB,YAAY,CAAC,SAAS,EAAE,MAAM,SAnKrC,qBAAqB,OACrB,QAAQ,QACP,YAAY,KACjB,IAAI,CAkKR;AAED;;;;;;;GAOG;AACH,wBAAgB,YAAY,CAAC,GAAG,KAAK,EAAE,MAAM,EAAE,SA1FtC,qBAAqB,OACrB,QAAQ,QACP,YAAY,KACjB,IAAI,CAyFR;AAED;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAAC,GAAG,KAAK,EAAE,MAAM,EAAE,SAtGzC,qBAAqB,OACrB,QAAQ,QACP,YAAY,KACjB,IAAI,CAqGR;AAED;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAAC,GAAG,KAAK,EAAE,UAAU,EAAE,SAlHhD,qBAAqB,OACrB,QAAQ,QACP,YAAY,KACjB,IAAI,CAiHR;AAED;;;;;;;;GAQG;AACH,wBAAgB,oBAAoB,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,KAAK,EAAE,MAAM,EAAE,UApNjE,qBAAqB,OACrB,QAAQ,QACP,YAAY,KACjB,IAAI,IAmNR;AAED;;;;;;;;GAQG;AACH,wBAAgB,0BAA0B,CACxC,SAAS,EAAE,MAAM,EACjB,GAAG,KAAK,EAAE,UAAU,EAAE,UAnOf,qBAAqB,OACrB,QAAQ,QACP,YAAY,KACjB,IAAI,IAmOR"}
@@ -0,0 +1,224 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.extractToken = extractToken;
4
+ exports.createJwtAuthMiddleware = createJwtAuthMiddleware;
5
+ exports.createRoleMiddleware = createRoleMiddleware;
6
+ exports.requireAuth = requireAuth;
7
+ exports.optionalAuth = optionalAuth;
8
+ exports.requireRoles = requireRoles;
9
+ exports.requireAllRoles = requireAllRoles;
10
+ exports.requireMemberTypes = requireMemberTypes;
11
+ exports.requireAuthWithRoles = requireAuthWithRoles;
12
+ exports.requireAuthWithMemberTypes = requireAuthWithMemberTypes;
13
+ const tslib_1 = require("tslib");
14
+ const jwt = tslib_1.__importStar(require("jsonwebtoken"));
15
+ const errorResponse_1 = require("../utils/errorResponse");
16
+ /**
17
+ * Extract the JWT token from the Authorization header.
18
+ * Supports Bearer token format.
19
+ *
20
+ * @param req - Express request object
21
+ * @returns The extracted token or null if not found
22
+ */
23
+ function extractToken(req) {
24
+ const authHeader = req.headers.authorization;
25
+ if (!authHeader) {
26
+ return null;
27
+ }
28
+ // Support "Bearer <token>" format
29
+ if (authHeader.startsWith('Bearer ')) {
30
+ return authHeader.slice(7);
31
+ }
32
+ // Also support raw token
33
+ return authHeader;
34
+ }
35
+ /**
36
+ * Create a JWT authentication middleware with the given configuration.
37
+ * This middleware validates JWT tokens and attaches member context to the request.
38
+ *
39
+ * @param config - JWT authentication configuration
40
+ * @returns Express middleware function
41
+ * @requirements 8.1, 8.2, 8.3
42
+ */
43
+ function createJwtAuthMiddleware(config) {
44
+ return (req, res, next) => {
45
+ const requestId = req.requestId || 'unknown';
46
+ const token = extractToken(req);
47
+ // Handle missing token
48
+ if (!token) {
49
+ if (config.optional) {
50
+ // Optional auth - continue without member context
51
+ return next();
52
+ }
53
+ const error = (0, errorResponse_1.createUnauthorizedError)(requestId, 'Missing authentication token');
54
+ res.status(error.statusCode).json(error.response);
55
+ return;
56
+ }
57
+ try {
58
+ // Verify and decode the token
59
+ const decoded = jwt.verify(token, config.jwtSecret);
60
+ // Attach member context to request
61
+ req.memberContext = {
62
+ memberId: decoded.memberId,
63
+ username: decoded.username,
64
+ type: decoded.type,
65
+ iat: decoded.iat,
66
+ exp: decoded.exp,
67
+ };
68
+ // Also set the legacy user property for backward compatibility
69
+ // Using 'any' here to avoid type conflicts with the existing IRequestUserDTO interface
70
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
71
+ req.user = {
72
+ memberId: decoded.memberId,
73
+ username: decoded.username,
74
+ type: decoded.type,
75
+ };
76
+ next();
77
+ }
78
+ catch (error) {
79
+ if (error instanceof jwt.TokenExpiredError) {
80
+ // Token has expired - return 401 with expiration message
81
+ const errorResponse = (0, errorResponse_1.createTokenExpiredError)(requestId, 'Authentication token has expired. Please log in again.');
82
+ res.status(errorResponse.statusCode).json(errorResponse.response);
83
+ return;
84
+ }
85
+ if (error instanceof jwt.JsonWebTokenError) {
86
+ // Invalid token format or signature
87
+ const errorResponse = (0, errorResponse_1.createUnauthorizedError)(requestId, 'Invalid authentication token');
88
+ res.status(errorResponse.statusCode).json(errorResponse.response);
89
+ return;
90
+ }
91
+ // Unknown error - treat as unauthorized
92
+ const errorResponse = (0, errorResponse_1.createUnauthorizedError)(requestId, 'Authentication failed');
93
+ res.status(errorResponse.statusCode).json(errorResponse.response);
94
+ }
95
+ };
96
+ }
97
+ /**
98
+ * Create a role-based access control middleware.
99
+ * This middleware checks if the authenticated user has the required roles or member types.
100
+ *
101
+ * @param config - Role configuration
102
+ * @returns Express middleware function
103
+ * @requirements 8.4
104
+ */
105
+ function createRoleMiddleware(config) {
106
+ return (req, res, next) => {
107
+ const requestId = req.requestId || 'unknown';
108
+ // Check if user is authenticated
109
+ if (!req.memberContext) {
110
+ const error = (0, errorResponse_1.createUnauthorizedError)(requestId, 'Authentication required');
111
+ res.status(error.statusCode).json(error.response);
112
+ return;
113
+ }
114
+ const { requiredRoles, requiredTypes, requireAll } = config;
115
+ // Check member type requirements
116
+ if (requiredTypes && requiredTypes.length > 0) {
117
+ const hasRequiredType = requiredTypes.includes(req.memberContext.type);
118
+ if (!hasRequiredType) {
119
+ const error = (0, errorResponse_1.createInsufficientPermissionsError)(requestId, requiredTypes.join(' or '));
120
+ res.status(error.statusCode).json(error.response);
121
+ return;
122
+ }
123
+ }
124
+ // Check role requirements
125
+ if (requiredRoles && requiredRoles.length > 0) {
126
+ const userRoles = req.memberContext.roles || [];
127
+ let hasPermission;
128
+ if (requireAll) {
129
+ // User must have ALL required roles
130
+ hasPermission = requiredRoles.every((role) => userRoles.includes(role));
131
+ }
132
+ else {
133
+ // User must have at least ONE required role
134
+ hasPermission = requiredRoles.some((role) => userRoles.includes(role));
135
+ }
136
+ if (!hasPermission) {
137
+ const error = (0, errorResponse_1.createInsufficientPermissionsError)(requestId, requiredRoles.join(requireAll ? ' and ' : ' or '));
138
+ res.status(error.statusCode).json(error.response);
139
+ return;
140
+ }
141
+ }
142
+ next();
143
+ };
144
+ }
145
+ /**
146
+ * Convenience function to create a middleware that requires authentication.
147
+ * This is a shorthand for createJwtAuthMiddleware with optional=false.
148
+ *
149
+ * @param jwtSecret - JWT secret for token verification
150
+ * @returns Express middleware function
151
+ * @requirements 8.1, 8.2, 8.3
152
+ */
153
+ function requireAuth(jwtSecret) {
154
+ return createJwtAuthMiddleware({ jwtSecret, optional: false });
155
+ }
156
+ /**
157
+ * Convenience function to create a middleware that optionally authenticates.
158
+ * If a token is present, it will be validated and member context attached.
159
+ * If no token is present, the request continues without member context.
160
+ *
161
+ * @param jwtSecret - JWT secret for token verification
162
+ * @returns Express middleware function
163
+ */
164
+ function optionalAuth(jwtSecret) {
165
+ return createJwtAuthMiddleware({ jwtSecret, optional: true });
166
+ }
167
+ /**
168
+ * Convenience function to create a middleware that requires specific roles.
169
+ * Must be used after authentication middleware.
170
+ *
171
+ * @param roles - Required roles (user must have at least one)
172
+ * @returns Express middleware function
173
+ * @requirements 8.4
174
+ */
175
+ function requireRoles(...roles) {
176
+ return createRoleMiddleware({ requiredRoles: roles, requireAll: false });
177
+ }
178
+ /**
179
+ * Convenience function to create a middleware that requires all specified roles.
180
+ * Must be used after authentication middleware.
181
+ *
182
+ * @param roles - Required roles (user must have all)
183
+ * @returns Express middleware function
184
+ * @requirements 8.4
185
+ */
186
+ function requireAllRoles(...roles) {
187
+ return createRoleMiddleware({ requiredRoles: roles, requireAll: true });
188
+ }
189
+ /**
190
+ * Convenience function to create a middleware that requires specific member types.
191
+ * Must be used after authentication middleware.
192
+ *
193
+ * @param types - Required member types (user must have at least one)
194
+ * @returns Express middleware function
195
+ * @requirements 8.4
196
+ */
197
+ function requireMemberTypes(...types) {
198
+ return createRoleMiddleware({ requiredTypes: types });
199
+ }
200
+ /**
201
+ * Combined middleware that requires authentication and specific roles.
202
+ * This is a convenience function that combines requireAuth and requireRoles.
203
+ *
204
+ * @param jwtSecret - JWT secret for token verification
205
+ * @param roles - Required roles (user must have at least one)
206
+ * @returns Array of Express middleware functions
207
+ * @requirements 8.1, 8.2, 8.3, 8.4
208
+ */
209
+ function requireAuthWithRoles(jwtSecret, ...roles) {
210
+ return [requireAuth(jwtSecret), requireRoles(...roles)];
211
+ }
212
+ /**
213
+ * Combined middleware that requires authentication and specific member types.
214
+ * This is a convenience function that combines requireAuth and requireMemberTypes.
215
+ *
216
+ * @param jwtSecret - JWT secret for token verification
217
+ * @param types - Required member types (user must have at least one)
218
+ * @returns Array of Express middleware functions
219
+ * @requirements 8.1, 8.2, 8.3, 8.4
220
+ */
221
+ function requireAuthWithMemberTypes(jwtSecret, ...types) {
222
+ return [requireAuth(jwtSecret), requireMemberTypes(...types)];
223
+ }
224
+ //# sourceMappingURL=authentication.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"authentication.js","sourceRoot":"","sources":["../../../../../brightchain-api-lib/src/lib/middlewares/authentication.ts"],"names":[],"mappings":";;AA4DA,oCAaC;AAUD,0DA2EC;AAUD,oDA0DC;AAUD,kCAEC;AAUD,oCAEC;AAUD,oCAEC;AAUD,0CAEC;AAUD,gDAEC;AAWD,oDAEC;AAWD,gEAKC;;AAzTD,0DAAoC;AAEpC,0DAIgC;AA6ChC;;;;;;GAMG;AACH,SAAgB,YAAY,CAAC,GAAY;IACvC,MAAM,UAAU,GAAG,GAAG,CAAC,OAAO,CAAC,aAAa,CAAC;IAC7C,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,kCAAkC;IAClC,IAAI,UAAU,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QACrC,OAAO,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAC7B,CAAC;IAED,yBAAyB;IACzB,OAAO,UAAU,CAAC;AACpB,CAAC;AAED;;;;;;;GAOG;AACH,SAAgB,uBAAuB,CAAC,MAAsB;IAC5D,OAAO,CACL,GAA0B,EAC1B,GAAa,EACb,IAAkB,EACZ,EAAE;QACR,MAAM,SAAS,GAAG,GAAG,CAAC,SAAS,IAAI,SAAS,CAAC;QAC7C,MAAM,KAAK,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC;QAEhC,uBAAuB;QACvB,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;gBACpB,kDAAkD;gBAClD,OAAO,IAAI,EAAE,CAAC;YAChB,CAAC;YACD,MAAM,KAAK,GAAG,IAAA,uCAAuB,EACnC,SAAS,EACT,8BAA8B,CAC/B,CAAC;YACF,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;YAClD,OAAO;QACT,CAAC;QAED,IAAI,CAAC;YACH,8BAA8B;YAC9B,MAAM,OAAO,GAAG,GAAG,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,SAAS,CAAkB,CAAC;YAErE,mCAAmC;YACnC,GAAG,CAAC,aAAa,GAAG;gBAClB,QAAQ,EAAE,OAAO,CAAC,QAAQ;gBAC1B,QAAQ,EAAE,OAAO,CAAC,QAAQ;gBAC1B,IAAI,EAAE,OAAO,CAAC,IAAI;gBAClB,GAAG,EAAE,OAAO,CAAC,GAAG;gBAChB,GAAG,EAAE,OAAO,CAAC,GAAG;aACjB,CAAC;YAEF,+DAA+D;YAC/D,uFAAuF;YACvF,8DAA8D;YAC7D,GAAW,CAAC,IAAI,GAAG;gBAClB,QAAQ,EAAE,OAAO,CAAC,QAAQ;gBAC1B,QAAQ,EAAE,OAAO,CAAC,QAAQ;gBAC1B,IAAI,EAAE,OAAO,CAAC,IAAI;aACnB,CAAC;YAEF,IAAI,EAAE,CAAC;QACT,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,KAAK,YAAY,GAAG,CAAC,iBAAiB,EAAE,CAAC;gBAC3C,yDAAyD;gBACzD,MAAM,aAAa,GAAG,IAAA,uCAAuB,EAC3C,SAAS,EACT,wDAAwD,CACzD,CAAC;gBACF,GAAG,CAAC,MAAM,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;gBAClE,OAAO;YACT,CAAC;YAED,IAAI,KAAK,YAAY,GAAG,CAAC,iBAAiB,EAAE,CAAC;gBAC3C,oCAAoC;gBACpC,MAAM,aAAa,GAAG,IAAA,uCAAuB,EAC3C,SAAS,EACT,8BAA8B,CAC/B,CAAC;gBACF,GAAG,CAAC,MAAM,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;gBAClE,OAAO;YACT,CAAC;YAED,wCAAwC;YACxC,MAAM,aAAa,GAAG,IAAA,uCAAuB,EAC3C,SAAS,EACT,uBAAuB,CACxB,CAAC;YACF,GAAG,CAAC,MAAM,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;QACpE,CAAC;IACH,CAAC,CAAC;AACJ,CAAC;AAED;;;;;;;GAOG;AACH,SAAgB,oBAAoB,CAAC,MAAmB;IACtD,OAAO,CACL,GAA0B,EAC1B,GAAa,EACb,IAAkB,EACZ,EAAE;QACR,MAAM,SAAS,GAAG,GAAG,CAAC,SAAS,IAAI,SAAS,CAAC;QAE7C,iCAAiC;QACjC,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC;YACvB,MAAM,KAAK,GAAG,IAAA,uCAAuB,EACnC,SAAS,EACT,yBAAyB,CAC1B,CAAC;YACF,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;YAClD,OAAO;QACT,CAAC;QAED,MAAM,EAAE,aAAa,EAAE,aAAa,EAAE,UAAU,EAAE,GAAG,MAAM,CAAC;QAE5D,iCAAiC;QACjC,IAAI,aAAa,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC9C,MAAM,eAAe,GAAG,aAAa,CAAC,QAAQ,CAAC,GAAG,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;YACvE,IAAI,CAAC,eAAe,EAAE,CAAC;gBACrB,MAAM,KAAK,GAAG,IAAA,kDAAkC,EAC9C,SAAS,EACT,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,CAC3B,CAAC;gBACF,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;gBAClD,OAAO;YACT,CAAC;QACH,CAAC;QAED,0BAA0B;QAC1B,IAAI,aAAa,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC9C,MAAM,SAAS,GAAG,GAAG,CAAC,aAAa,CAAC,KAAK,IAAI,EAAE,CAAC;YAEhD,IAAI,aAAsB,CAAC;YAC3B,IAAI,UAAU,EAAE,CAAC;gBACf,oCAAoC;gBACpC,aAAa,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;YAC1E,CAAC;iBAAM,CAAC;gBACN,4CAA4C;gBAC5C,aAAa,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;YACzE,CAAC;YAED,IAAI,CAAC,aAAa,EAAE,CAAC;gBACnB,MAAM,KAAK,GAAG,IAAA,kDAAkC,EAC9C,SAAS,EACT,aAAa,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAClD,CAAC;gBACF,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;gBAClD,OAAO;YACT,CAAC;QACH,CAAC;QAED,IAAI,EAAE,CAAC;IACT,CAAC,CAAC;AACJ,CAAC;AAED;;;;;;;GAOG;AACH,SAAgB,WAAW,CAAC,SAAiB;IAC3C,OAAO,uBAAuB,CAAC,EAAE,SAAS,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC;AACjE,CAAC;AAED;;;;;;;GAOG;AACH,SAAgB,YAAY,CAAC,SAAiB;IAC5C,OAAO,uBAAuB,CAAC,EAAE,SAAS,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;AAChE,CAAC;AAED;;;;;;;GAOG;AACH,SAAgB,YAAY,CAAC,GAAG,KAAe;IAC7C,OAAO,oBAAoB,CAAC,EAAE,aAAa,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC,CAAC;AAC3E,CAAC;AAED;;;;;;;GAOG;AACH,SAAgB,eAAe,CAAC,GAAG,KAAe;IAChD,OAAO,oBAAoB,CAAC,EAAE,aAAa,EAAE,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC;AAC1E,CAAC;AAED;;;;;;;GAOG;AACH,SAAgB,kBAAkB,CAAC,GAAG,KAAmB;IACvD,OAAO,oBAAoB,CAAC,EAAE,aAAa,EAAE,KAAK,EAAE,CAAC,CAAC;AACxD,CAAC;AAED;;;;;;;;GAQG;AACH,SAAgB,oBAAoB,CAAC,SAAiB,EAAE,GAAG,KAAe;IACxE,OAAO,CAAC,WAAW,CAAC,SAAS,CAAC,EAAE,YAAY,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC;AAC1D,CAAC;AAED;;;;;;;;GAQG;AACH,SAAgB,0BAA0B,CACxC,SAAiB,EACjB,GAAG,KAAmB;IAEtB,OAAO,CAAC,WAAW,CAAC,SAAS,CAAC,EAAE,kBAAkB,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC;AAChE,CAAC"}
@@ -1,3 +1,5 @@
1
1
  export { authenticateCrypto, authenticateToken, findAuthToken, } from '@digitaldefiance/node-express-suite';
2
+ export { IAuthenticatedRequest, IJwtAuthConfig, IMemberContext, IRoleConfig, createJwtAuthMiddleware, createRoleMiddleware, extractToken, optionalAuth, requireAllRoles, requireAuth, requireAuthWithMemberTypes, requireAuthWithRoles, requireMemberTypes, requireRoles, } from './authentication';
2
3
  export { cleanupCrypto } from './cleanup-crypto';
4
+ export { REQUEST_ID_HEADER, requestIdMiddleware } from './request-id';
3
5
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../brightchain-api-lib/src/lib/middlewares/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,kBAAkB,EAClB,iBAAiB,EACjB,aAAa,GACd,MAAM,qCAAqC,CAAC;AAC7C,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../brightchain-api-lib/src/lib/middlewares/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,kBAAkB,EAClB,iBAAiB,EACjB,aAAa,GACd,MAAM,qCAAqC,CAAC;AAC7C,OAAO,EACL,qBAAqB,EACrB,cAAc,EACd,cAAc,EACd,WAAW,EACX,uBAAuB,EACvB,oBAAoB,EACpB,YAAY,EACZ,YAAY,EACZ,eAAe,EACf,WAAW,EACX,0BAA0B,EAC1B,oBAAoB,EACpB,kBAAkB,EAClB,YAAY,GACb,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC"}
@@ -1,10 +1,24 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.cleanupCrypto = exports.findAuthToken = exports.authenticateToken = exports.authenticateCrypto = void 0;
3
+ exports.requestIdMiddleware = exports.REQUEST_ID_HEADER = exports.cleanupCrypto = exports.requireRoles = exports.requireMemberTypes = exports.requireAuthWithRoles = exports.requireAuthWithMemberTypes = exports.requireAuth = exports.requireAllRoles = exports.optionalAuth = exports.extractToken = exports.createRoleMiddleware = exports.createJwtAuthMiddleware = exports.findAuthToken = exports.authenticateToken = exports.authenticateCrypto = void 0;
4
4
  var node_express_suite_1 = require("@digitaldefiance/node-express-suite");
5
5
  Object.defineProperty(exports, "authenticateCrypto", { enumerable: true, get: function () { return node_express_suite_1.authenticateCrypto; } });
6
6
  Object.defineProperty(exports, "authenticateToken", { enumerable: true, get: function () { return node_express_suite_1.authenticateToken; } });
7
7
  Object.defineProperty(exports, "findAuthToken", { enumerable: true, get: function () { return node_express_suite_1.findAuthToken; } });
8
+ var authentication_1 = require("./authentication");
9
+ Object.defineProperty(exports, "createJwtAuthMiddleware", { enumerable: true, get: function () { return authentication_1.createJwtAuthMiddleware; } });
10
+ Object.defineProperty(exports, "createRoleMiddleware", { enumerable: true, get: function () { return authentication_1.createRoleMiddleware; } });
11
+ Object.defineProperty(exports, "extractToken", { enumerable: true, get: function () { return authentication_1.extractToken; } });
12
+ Object.defineProperty(exports, "optionalAuth", { enumerable: true, get: function () { return authentication_1.optionalAuth; } });
13
+ Object.defineProperty(exports, "requireAllRoles", { enumerable: true, get: function () { return authentication_1.requireAllRoles; } });
14
+ Object.defineProperty(exports, "requireAuth", { enumerable: true, get: function () { return authentication_1.requireAuth; } });
15
+ Object.defineProperty(exports, "requireAuthWithMemberTypes", { enumerable: true, get: function () { return authentication_1.requireAuthWithMemberTypes; } });
16
+ Object.defineProperty(exports, "requireAuthWithRoles", { enumerable: true, get: function () { return authentication_1.requireAuthWithRoles; } });
17
+ Object.defineProperty(exports, "requireMemberTypes", { enumerable: true, get: function () { return authentication_1.requireMemberTypes; } });
18
+ Object.defineProperty(exports, "requireRoles", { enumerable: true, get: function () { return authentication_1.requireRoles; } });
8
19
  var cleanup_crypto_1 = require("./cleanup-crypto");
9
20
  Object.defineProperty(exports, "cleanupCrypto", { enumerable: true, get: function () { return cleanup_crypto_1.cleanupCrypto; } });
21
+ var request_id_1 = require("./request-id");
22
+ Object.defineProperty(exports, "REQUEST_ID_HEADER", { enumerable: true, get: function () { return request_id_1.REQUEST_ID_HEADER; } });
23
+ Object.defineProperty(exports, "requestIdMiddleware", { enumerable: true, get: function () { return request_id_1.requestIdMiddleware; } });
10
24
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../brightchain-api-lib/src/lib/middlewares/index.ts"],"names":[],"mappings":";;;AAAA,0EAI6C;AAH3C,wHAAA,kBAAkB,OAAA;AAClB,uHAAA,iBAAiB,OAAA;AACjB,mHAAA,aAAa,OAAA;AAEf,mDAAiD;AAAxC,+GAAA,aAAa,OAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../brightchain-api-lib/src/lib/middlewares/index.ts"],"names":[],"mappings":";;;AAAA,0EAI6C;AAH3C,wHAAA,kBAAkB,OAAA;AAClB,uHAAA,iBAAiB,OAAA;AACjB,mHAAA,aAAa,OAAA;AAEf,mDAe0B;AAVxB,yHAAA,uBAAuB,OAAA;AACvB,sHAAA,oBAAoB,OAAA;AACpB,8GAAA,YAAY,OAAA;AACZ,8GAAA,YAAY,OAAA;AACZ,iHAAA,eAAe,OAAA;AACf,6GAAA,WAAW,OAAA;AACX,4HAAA,0BAA0B,OAAA;AAC1B,sHAAA,oBAAoB,OAAA;AACpB,oHAAA,kBAAkB,OAAA;AAClB,8GAAA,YAAY,OAAA;AAEd,mDAAiD;AAAxC,+GAAA,aAAa,OAAA;AACtB,2CAAsE;AAA7D,+GAAA,iBAAiB,OAAA;AAAE,iHAAA,mBAAmB,OAAA"}
@@ -0,0 +1,18 @@
1
+ import { NextFunction, Request, Response } from 'express';
2
+ /**
3
+ * Header name for the request ID
4
+ */
5
+ export declare const REQUEST_ID_HEADER = "X-Request-ID";
6
+ /**
7
+ * Middleware to generate and attach a UUID v4 request ID to each request.
8
+ * The request ID is:
9
+ * - Generated using crypto.randomUUID() for each incoming request
10
+ * - Attached to the request context via req.requestId
11
+ * - Included in response headers as X-Request-ID
12
+ *
13
+ * This enables request tracing across logs and error responses.
14
+ *
15
+ * @requirements 9.5
16
+ */
17
+ export declare function requestIdMiddleware(req: Request, res: Response, next: NextFunction): void;
18
+ //# sourceMappingURL=request-id.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"request-id.d.ts","sourceRoot":"","sources":["../../../../../brightchain-api-lib/src/lib/middlewares/request-id.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAE1D;;GAEG;AACH,eAAO,MAAM,iBAAiB,iBAAiB,CAAC;AAEhD;;;;;;;;;;GAUG;AACH,wBAAgB,mBAAmB,CACjC,GAAG,EAAE,OAAO,EACZ,GAAG,EAAE,QAAQ,EACb,IAAI,EAAE,YAAY,GACjB,IAAI,CAWN"}
@@ -0,0 +1,30 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.REQUEST_ID_HEADER = void 0;
4
+ exports.requestIdMiddleware = requestIdMiddleware;
5
+ const crypto_1 = require("crypto");
6
+ /**
7
+ * Header name for the request ID
8
+ */
9
+ exports.REQUEST_ID_HEADER = 'X-Request-ID';
10
+ /**
11
+ * Middleware to generate and attach a UUID v4 request ID to each request.
12
+ * The request ID is:
13
+ * - Generated using crypto.randomUUID() for each incoming request
14
+ * - Attached to the request context via req.requestId
15
+ * - Included in response headers as X-Request-ID
16
+ *
17
+ * This enables request tracing across logs and error responses.
18
+ *
19
+ * @requirements 9.5
20
+ */
21
+ function requestIdMiddleware(req, res, next) {
22
+ // Generate a new UUID v4 for this request
23
+ const requestId = (0, crypto_1.randomUUID)();
24
+ // Attach to request context
25
+ req.requestId = requestId;
26
+ // Set response header so clients can correlate responses
27
+ res.setHeader(exports.REQUEST_ID_HEADER, requestId);
28
+ next();
29
+ }
30
+ //# sourceMappingURL=request-id.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"request-id.js","sourceRoot":"","sources":["../../../../../brightchain-api-lib/src/lib/middlewares/request-id.ts"],"names":[],"mappings":";;;AAmBA,kDAeC;AAlCD,mCAAoC;AAGpC;;GAEG;AACU,QAAA,iBAAiB,GAAG,cAAc,CAAC;AAEhD;;;;;;;;;;GAUG;AACH,SAAgB,mBAAmB,CACjC,GAAY,EACZ,GAAa,EACb,IAAkB;IAElB,0CAA0C;IAC1C,MAAM,SAAS,GAAG,IAAA,mBAAU,GAAE,CAAC;IAE/B,4BAA4B;IAC5B,GAAG,CAAC,SAAS,GAAG,SAAS,CAAC;IAE1B,yDAAyD;IACzD,GAAG,CAAC,SAAS,CAAC,yBAAiB,EAAE,SAAS,CAAC,CAAC;IAE5C,IAAI,EAAE,CAAC;AACT,CAAC"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * OpenAPI module for BrightChain API.
3
+ * Re-exports from node-express-suite and adds BrightChain-specific schemas.
4
+ */
5
+ export { CommonSchemas, CommonSecuritySchemes, ControllerRegistry, OpenAPIBuilder, OpenAPIController, OpenAPISchemaRegistry, } from '@digitaldefiance/node-express-suite';
6
+ export type { OpenAPIBuilderConfig, OpenAPIResponseDef, OpenAPISpec, RegisteredController, } from '@digitaldefiance/node-express-suite';
7
+ export { BrightChainSchemas, BrightChainSecuritySchemes, registerBrightChainSchemas, } from './schemas';
8
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../brightchain-api-lib/src/lib/openapi/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EACL,aAAa,EACb,qBAAqB,EACrB,kBAAkB,EAClB,cAAc,EACd,iBAAiB,EACjB,qBAAqB,GACtB,MAAM,qCAAqC,CAAC;AAE7C,YAAY,EACV,oBAAoB,EACpB,kBAAkB,EAClB,WAAW,EACX,oBAAoB,GACrB,MAAM,qCAAqC,CAAC;AAG7C,OAAO,EACL,kBAAkB,EAClB,0BAA0B,EAC1B,0BAA0B,GAC3B,MAAM,WAAW,CAAC"}
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+ /**
3
+ * OpenAPI module for BrightChain API.
4
+ * Re-exports from node-express-suite and adds BrightChain-specific schemas.
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.registerBrightChainSchemas = exports.BrightChainSecuritySchemes = exports.BrightChainSchemas = exports.OpenAPISchemaRegistry = exports.OpenAPIController = exports.OpenAPIBuilder = exports.ControllerRegistry = exports.CommonSecuritySchemes = exports.CommonSchemas = void 0;
8
+ // Re-export from node-express-suite
9
+ var node_express_suite_1 = require("@digitaldefiance/node-express-suite");
10
+ Object.defineProperty(exports, "CommonSchemas", { enumerable: true, get: function () { return node_express_suite_1.CommonSchemas; } });
11
+ Object.defineProperty(exports, "CommonSecuritySchemes", { enumerable: true, get: function () { return node_express_suite_1.CommonSecuritySchemes; } });
12
+ Object.defineProperty(exports, "ControllerRegistry", { enumerable: true, get: function () { return node_express_suite_1.ControllerRegistry; } });
13
+ Object.defineProperty(exports, "OpenAPIBuilder", { enumerable: true, get: function () { return node_express_suite_1.OpenAPIBuilder; } });
14
+ Object.defineProperty(exports, "OpenAPIController", { enumerable: true, get: function () { return node_express_suite_1.OpenAPIController; } });
15
+ Object.defineProperty(exports, "OpenAPISchemaRegistry", { enumerable: true, get: function () { return node_express_suite_1.OpenAPISchemaRegistry; } });
16
+ // Export BrightChain-specific schemas (auto-registers on import)
17
+ var schemas_1 = require("./schemas");
18
+ Object.defineProperty(exports, "BrightChainSchemas", { enumerable: true, get: function () { return schemas_1.BrightChainSchemas; } });
19
+ Object.defineProperty(exports, "BrightChainSecuritySchemes", { enumerable: true, get: function () { return schemas_1.BrightChainSecuritySchemes; } });
20
+ Object.defineProperty(exports, "registerBrightChainSchemas", { enumerable: true, get: function () { return schemas_1.registerBrightChainSchemas; } });
21
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../brightchain-api-lib/src/lib/openapi/index.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAEH,oCAAoC;AACpC,0EAO6C;AAN3C,mHAAA,aAAa,OAAA;AACb,2HAAA,qBAAqB,OAAA;AACrB,wHAAA,kBAAkB,OAAA;AAClB,oHAAA,cAAc,OAAA;AACd,uHAAA,iBAAiB,OAAA;AACjB,2HAAA,qBAAqB,OAAA;AAUvB,iEAAiE;AACjE,qCAImB;AAHjB,6GAAA,kBAAkB,OAAA;AAClB,qHAAA,0BAA0B,OAAA;AAC1B,qHAAA,0BAA0B,OAAA"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * OpenAPI component schemas for the BrightChain API.
3
+ * These are referenced by controllers via schema name strings.
4
+ */
5
+ export declare const BrightChainSchemas: Record<string, any>;
6
+ /**
7
+ * Security schemes for the API
8
+ */
9
+ export declare const BrightChainSecuritySchemes: Record<string, any>;
10
+ /**
11
+ * Register all BrightChain schemas with the OpenAPI registry.
12
+ * Call this during application initialization.
13
+ */
14
+ export declare function registerBrightChainSchemas(): void;
15
+ //# sourceMappingURL=schemas.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schemas.d.ts","sourceRoot":"","sources":["../../../../../brightchain-api-lib/src/lib/openapi/schemas.ts"],"names":[],"mappings":"AACA;;;GAGG;AAIH,eAAO,MAAM,kBAAkB,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CA4kBlD,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,0BAA0B,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAO1D,CAAC;AAEF;;;GAGG;AACH,wBAAgB,0BAA0B,IAAI,IAAI,CAGjD"}