@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.
- package/package.json +4 -4
- package/src/lib/application-base.d.ts +1 -1
- package/src/lib/application-base.d.ts.map +1 -1
- package/src/lib/application.d.ts +52 -0
- package/src/lib/application.d.ts.map +1 -1
- package/src/lib/application.js +104 -0
- package/src/lib/application.js.map +1 -1
- package/src/lib/controllers/api/blocks.d.ts.map +1 -1
- package/src/lib/controllers/api/blocks.js +62 -0
- package/src/lib/controllers/api/blocks.js.map +1 -1
- package/src/lib/controllers/api/docs.d.ts +67 -0
- package/src/lib/controllers/api/docs.d.ts.map +1 -0
- package/src/lib/controllers/api/docs.js +86 -0
- package/src/lib/controllers/api/docs.js.map +1 -0
- package/src/lib/controllers/api/energy.d.ts.map +1 -1
- package/src/lib/controllers/api/energy.js +35 -7
- package/src/lib/controllers/api/energy.js.map +1 -1
- package/src/lib/controllers/api/health.d.ts +95 -0
- package/src/lib/controllers/api/health.d.ts.map +1 -0
- package/src/lib/controllers/api/health.js +319 -0
- package/src/lib/controllers/api/health.js.map +1 -0
- package/src/lib/controllers/api/index.d.ts +6 -0
- package/src/lib/controllers/api/index.d.ts.map +1 -1
- package/src/lib/controllers/api/index.js +6 -0
- package/src/lib/controllers/api/index.js.map +1 -1
- package/src/lib/controllers/api/messages.d.ts +119 -0
- package/src/lib/controllers/api/messages.d.ts.map +1 -0
- package/src/lib/controllers/api/messages.js +269 -0
- package/src/lib/controllers/api/messages.js.map +1 -0
- package/src/lib/controllers/api/nodes.d.ts +152 -0
- package/src/lib/controllers/api/nodes.d.ts.map +1 -0
- package/src/lib/controllers/api/nodes.js +378 -0
- package/src/lib/controllers/api/nodes.js.map +1 -0
- package/src/lib/controllers/api/quorum.d.ts +12 -8
- package/src/lib/controllers/api/quorum.d.ts.map +1 -1
- package/src/lib/controllers/api/quorum.js +83 -17
- package/src/lib/controllers/api/quorum.js.map +1 -1
- package/src/lib/controllers/api/scbl.d.ts +80 -0
- package/src/lib/controllers/api/scbl.d.ts.map +1 -0
- package/src/lib/controllers/api/scbl.js +325 -0
- package/src/lib/controllers/api/scbl.js.map +1 -0
- package/src/lib/controllers/api/sync.d.ts +140 -0
- package/src/lib/controllers/api/sync.d.ts.map +1 -0
- package/src/lib/controllers/api/sync.js +352 -0
- package/src/lib/controllers/api/sync.js.map +1 -0
- package/src/lib/controllers/api/user.d.ts +2 -0
- package/src/lib/controllers/api/user.d.ts.map +1 -1
- package/src/lib/controllers/api/user.js +122 -7
- package/src/lib/controllers/api/user.js.map +1 -1
- package/src/lib/enumerations/brightChainApiStrings.d.ts.map +1 -1
- package/src/lib/enumerations/brightChainApiStrings.js.map +1 -1
- package/src/lib/errors/symmetric.d.ts +2 -2
- package/src/lib/errors/symmetric.d.ts.map +1 -1
- package/src/lib/errors/symmetric.js.map +1 -1
- package/src/lib/errors/typed-error-local.d.ts +3 -3
- package/src/lib/errors/typed-error-local.d.ts.map +1 -1
- package/src/lib/errors/typed-error-local.js.map +1 -1
- package/src/lib/interfaces/application.d.ts +2 -1
- package/src/lib/interfaces/application.d.ts.map +1 -1
- package/src/lib/interfaces/backend-objects/index.d.ts +4 -4
- package/src/lib/interfaces/backend-objects/index.d.ts.map +1 -1
- package/src/lib/interfaces/backend-objects/index.js +0 -5
- package/src/lib/interfaces/backend-objects/index.js.map +1 -1
- package/src/lib/interfaces/bases/index.d.ts +4 -4
- package/src/lib/interfaces/bases/index.d.ts.map +1 -1
- package/src/lib/interfaces/bases/index.js +0 -5
- package/src/lib/interfaces/bases/index.js.map +1 -1
- package/src/lib/interfaces/index.d.ts +32 -32
- package/src/lib/interfaces/index.d.ts.map +1 -1
- package/src/lib/interfaces/index.js +0 -33
- package/src/lib/interfaces/index.js.map +1 -1
- package/src/lib/interfaces/member/index.d.ts +3 -3
- package/src/lib/interfaces/member/index.d.ts.map +1 -1
- package/src/lib/interfaces/member/index.js +0 -4
- package/src/lib/interfaces/member/index.js.map +1 -1
- package/src/lib/interfaces/requests/deleteMessagesRequest.d.ts +12 -0
- package/src/lib/interfaces/requests/deleteMessagesRequest.d.ts.map +1 -0
- package/src/lib/interfaces/requests/deleteMessagesRequest.js +3 -0
- package/src/lib/interfaces/requests/deleteMessagesRequest.js.map +1 -0
- package/src/lib/interfaces/requests/discoverBlockRequest.d.ts +10 -0
- package/src/lib/interfaces/requests/discoverBlockRequest.d.ts.map +1 -0
- package/src/lib/interfaces/requests/discoverBlockRequest.js +3 -0
- package/src/lib/interfaces/requests/discoverBlockRequest.js.map +1 -0
- package/src/lib/interfaces/requests/getBlockLocationRequest.d.ts +9 -0
- package/src/lib/interfaces/requests/getBlockLocationRequest.d.ts.map +1 -0
- package/src/lib/interfaces/requests/getBlockLocationRequest.js +3 -0
- package/src/lib/interfaces/requests/getBlockLocationRequest.js.map +1 -0
- package/src/lib/interfaces/requests/getMessageRequest.d.ts +12 -0
- package/src/lib/interfaces/requests/getMessageRequest.d.ts.map +1 -0
- package/src/lib/interfaces/requests/getMessageRequest.js +3 -0
- package/src/lib/interfaces/requests/getMessageRequest.js.map +1 -0
- package/src/lib/interfaces/requests/getNodeRequest.d.ts +9 -0
- package/src/lib/interfaces/requests/getNodeRequest.d.ts.map +1 -0
- package/src/lib/interfaces/{membersResponse.js → requests/getNodeRequest.js} +1 -1
- package/src/lib/interfaces/requests/getNodeRequest.js.map +1 -0
- package/src/lib/interfaces/requests/index.d.ts +12 -0
- package/src/lib/interfaces/requests/index.d.ts.map +1 -0
- package/src/lib/interfaces/requests/index.js +3 -0
- package/src/lib/interfaces/requests/index.js.map +1 -0
- package/src/lib/interfaces/requests/messageRequest.d.ts +10 -0
- package/src/lib/interfaces/requests/messageRequest.d.ts.map +1 -0
- package/src/lib/interfaces/requests/messageRequest.js +3 -0
- package/src/lib/interfaces/requests/messageRequest.js.map +1 -0
- package/src/lib/interfaces/requests/queryMessagesRequest.d.ts +16 -0
- package/src/lib/interfaces/requests/queryMessagesRequest.d.ts.map +1 -0
- package/src/lib/interfaces/requests/queryMessagesRequest.js +3 -0
- package/src/lib/interfaces/requests/queryMessagesRequest.js.map +1 -0
- package/src/lib/interfaces/requests/registerNodeRequest.d.ts +11 -0
- package/src/lib/interfaces/requests/registerNodeRequest.d.ts.map +1 -0
- package/src/lib/interfaces/requests/registerNodeRequest.js +3 -0
- package/src/lib/interfaces/requests/registerNodeRequest.js.map +1 -0
- package/src/lib/interfaces/requests/replicateBlockRequest.d.ts +13 -0
- package/src/lib/interfaces/requests/replicateBlockRequest.d.ts.map +1 -0
- package/src/lib/interfaces/requests/replicateBlockRequest.js +3 -0
- package/src/lib/interfaces/requests/replicateBlockRequest.js.map +1 -0
- package/src/lib/interfaces/requests/sendMessageRequest.d.ts +24 -0
- package/src/lib/interfaces/requests/sendMessageRequest.d.ts.map +1 -0
- package/src/lib/interfaces/requests/sendMessageRequest.js +3 -0
- package/src/lib/interfaces/requests/sendMessageRequest.js.map +1 -0
- package/src/lib/interfaces/requests/storeSCBLRequestBody.d.ts +9 -0
- package/src/lib/interfaces/requests/storeSCBLRequestBody.d.ts.map +1 -0
- package/src/lib/interfaces/requests/storeSCBLRequestBody.js +3 -0
- package/src/lib/interfaces/requests/storeSCBLRequestBody.js.map +1 -0
- package/src/lib/interfaces/requests/syncRequestBody.d.ts +10 -0
- package/src/lib/interfaces/requests/syncRequestBody.d.ts.map +1 -0
- package/src/lib/interfaces/requests/syncRequestBody.js +3 -0
- package/src/lib/interfaces/requests/syncRequestBody.js.map +1 -0
- package/src/lib/interfaces/responses/index.d.ts +7 -7
- package/src/lib/interfaces/responses/index.d.ts.map +1 -1
- package/src/lib/interfaces/responses/index.js +0 -8
- package/src/lib/interfaces/responses/index.js.map +1 -1
- package/src/lib/middlewares/authentication.d.ts +133 -0
- package/src/lib/middlewares/authentication.d.ts.map +1 -0
- package/src/lib/middlewares/authentication.js +224 -0
- package/src/lib/middlewares/authentication.js.map +1 -0
- package/src/lib/middlewares/index.d.ts +2 -0
- package/src/lib/middlewares/index.d.ts.map +1 -1
- package/src/lib/middlewares/index.js +15 -1
- package/src/lib/middlewares/index.js.map +1 -1
- package/src/lib/middlewares/request-id.d.ts +18 -0
- package/src/lib/middlewares/request-id.d.ts.map +1 -0
- package/src/lib/middlewares/request-id.js +30 -0
- package/src/lib/middlewares/request-id.js.map +1 -0
- package/src/lib/openapi/index.d.ts +8 -0
- package/src/lib/openapi/index.d.ts.map +1 -0
- package/src/lib/openapi/index.js +21 -0
- package/src/lib/openapi/index.js.map +1 -0
- package/src/lib/openapi/schemas.d.ts +15 -0
- package/src/lib/openapi/schemas.d.ts.map +1 -0
- package/src/lib/openapi/schemas.js +610 -0
- package/src/lib/openapi/schemas.js.map +1 -0
- package/src/lib/routers/api.d.ts +62 -0
- package/src/lib/routers/api.d.ts.map +1 -1
- package/src/lib/routers/api.js +85 -0
- package/src/lib/routers/api.js.map +1 -1
- package/src/lib/services/diskQuorumService.d.ts +7 -6
- package/src/lib/services/diskQuorumService.d.ts.map +1 -1
- package/src/lib/services/diskQuorumService.js.map +1 -1
- package/src/lib/services/email.d.ts +2 -1
- package/src/lib/services/email.d.ts.map +1 -1
- package/src/lib/services/email.js.map +1 -1
- package/src/lib/services/eventNotificationSystem.d.ts +88 -6
- package/src/lib/services/eventNotificationSystem.d.ts.map +1 -1
- package/src/lib/services/eventNotificationSystem.js +132 -17
- package/src/lib/services/eventNotificationSystem.js.map +1 -1
- package/src/lib/services/fec.js +1 -1
- package/src/lib/services/fec.js.map +1 -1
- package/src/lib/types/backend-id.d.ts +2 -1
- package/src/lib/types/backend-id.d.ts.map +1 -1
- package/src/lib/utils/errorResponse.d.ts +227 -2
- package/src/lib/utils/errorResponse.d.ts.map +1 -1
- package/src/lib/utils/errorResponse.js +292 -3
- package/src/lib/utils/errorResponse.js.map +1 -1
- package/src/lib/i18n/index.d.ts +0 -7
- package/src/lib/i18n/index.d.ts.map +0 -1
- package/src/lib/i18n/index.js +0 -29
- package/src/lib/i18n/index.js.map +0 -1
- package/src/lib/i18n/strings/index.d.ts +0 -6
- package/src/lib/i18n/strings/index.d.ts.map +0 -1
- package/src/lib/i18n/strings/index.js +0 -17
- package/src/lib/i18n/strings/index.js.map +0 -1
- package/src/lib/interfaces/membersResponse.d.ts +0 -12
- package/src/lib/interfaces/membersResponse.d.ts.map +0 -1
- 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":"
|
|
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":"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"}
|
|
@@ -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"}
|