@morojs/moro 1.5.17 → 1.6.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +48 -65
- package/dist/core/auth/morojs-adapter.js +12 -16
- package/dist/core/auth/morojs-adapter.js.map +1 -1
- package/dist/core/config/file-loader.d.ts +5 -0
- package/dist/core/config/file-loader.js +171 -0
- package/dist/core/config/file-loader.js.map +1 -1
- package/dist/core/config/index.d.ts +10 -39
- package/dist/core/config/index.js +29 -66
- package/dist/core/config/index.js.map +1 -1
- package/dist/core/config/loader.d.ts +7 -0
- package/dist/core/config/loader.js +269 -0
- package/dist/core/config/loader.js.map +1 -0
- package/dist/core/config/schema.js +31 -41
- package/dist/core/config/schema.js.map +1 -1
- package/dist/core/config/utils.d.ts +2 -9
- package/dist/core/config/utils.js +32 -19
- package/dist/core/config/utils.js.map +1 -1
- package/dist/core/config/validation.d.ts +17 -0
- package/dist/core/config/validation.js +131 -0
- package/dist/core/config/validation.js.map +1 -0
- package/dist/core/database/adapters/mongodb.d.ts +0 -10
- package/dist/core/database/adapters/mongodb.js +2 -23
- package/dist/core/database/adapters/mongodb.js.map +1 -1
- package/dist/core/database/adapters/mysql.d.ts +0 -11
- package/dist/core/database/adapters/mysql.js +0 -1
- package/dist/core/database/adapters/mysql.js.map +1 -1
- package/dist/core/database/adapters/postgresql.d.ts +1 -9
- package/dist/core/database/adapters/postgresql.js +1 -1
- package/dist/core/database/adapters/postgresql.js.map +1 -1
- package/dist/core/database/adapters/redis.d.ts +0 -9
- package/dist/core/database/adapters/redis.js +4 -14
- package/dist/core/database/adapters/redis.js.map +1 -1
- package/dist/core/framework.d.ts +7 -6
- package/dist/core/framework.js +16 -131
- package/dist/core/framework.js.map +1 -1
- package/dist/core/http/http-server.d.ts +0 -12
- package/dist/core/http/http-server.js +23 -151
- package/dist/core/http/http-server.js.map +1 -1
- package/dist/core/http/router.d.ts +0 -12
- package/dist/core/http/router.js +36 -114
- package/dist/core/http/router.js.map +1 -1
- package/dist/core/logger/filters.js +4 -12
- package/dist/core/logger/filters.js.map +1 -1
- package/dist/core/logger/index.d.ts +1 -1
- package/dist/core/logger/index.js +1 -2
- package/dist/core/logger/index.js.map +1 -1
- package/dist/core/logger/logger.d.ts +13 -29
- package/dist/core/logger/logger.js +203 -380
- package/dist/core/logger/logger.js.map +1 -1
- package/dist/core/logger/outputs.js +2 -0
- package/dist/core/logger/outputs.js.map +1 -1
- package/dist/core/middleware/built-in/auth.js +17 -88
- package/dist/core/middleware/built-in/auth.js.map +1 -1
- package/dist/core/middleware/built-in/cache.js +1 -3
- package/dist/core/middleware/built-in/cache.js.map +1 -1
- package/dist/core/middleware/built-in/index.d.ts +0 -1
- package/dist/core/middleware/built-in/index.js +1 -6
- package/dist/core/middleware/built-in/index.js.map +1 -1
- package/dist/core/middleware/built-in/request-logger.js +2 -3
- package/dist/core/middleware/built-in/request-logger.js.map +1 -1
- package/dist/core/middleware/built-in/sse.js +7 -9
- package/dist/core/middleware/built-in/sse.js.map +1 -1
- package/dist/core/modules/auto-discovery.d.ts +0 -17
- package/dist/core/modules/auto-discovery.js +12 -367
- package/dist/core/modules/auto-discovery.js.map +1 -1
- package/dist/core/modules/modules.js +2 -12
- package/dist/core/modules/modules.js.map +1 -1
- package/dist/core/networking/adapters/ws-adapter.d.ts +1 -1
- package/dist/core/networking/adapters/ws-adapter.js +2 -2
- package/dist/core/networking/adapters/ws-adapter.js.map +1 -1
- package/dist/core/networking/service-discovery.js +7 -7
- package/dist/core/networking/service-discovery.js.map +1 -1
- package/dist/core/routing/index.d.ts +0 -20
- package/dist/core/routing/index.js +13 -178
- package/dist/core/routing/index.js.map +1 -1
- package/dist/core/runtime/node-adapter.js +6 -12
- package/dist/core/runtime/node-adapter.js.map +1 -1
- package/dist/moro.d.ts +0 -48
- package/dist/moro.js +148 -456
- package/dist/moro.js.map +1 -1
- package/dist/types/config.d.ts +2 -58
- package/dist/types/core.d.ts +40 -34
- package/dist/types/http.d.ts +1 -16
- package/dist/types/logger.d.ts +0 -7
- package/dist/types/module.d.ts +0 -11
- package/package.json +2 -2
- package/src/core/auth/morojs-adapter.ts +13 -18
- package/src/core/config/file-loader.ts +233 -0
- package/src/core/config/index.ts +32 -77
- package/src/core/config/loader.ts +633 -0
- package/src/core/config/schema.ts +31 -41
- package/src/core/config/utils.ts +29 -22
- package/src/core/config/validation.ts +140 -0
- package/src/core/database/README.md +16 -26
- package/src/core/database/adapters/mongodb.ts +2 -30
- package/src/core/database/adapters/mysql.ts +0 -14
- package/src/core/database/adapters/postgresql.ts +2 -12
- package/src/core/database/adapters/redis.ts +4 -27
- package/src/core/framework.ts +23 -163
- package/src/core/http/http-server.ts +36 -176
- package/src/core/http/router.ts +38 -127
- package/src/core/logger/filters.ts +4 -12
- package/src/core/logger/index.ts +0 -1
- package/src/core/logger/logger.ts +216 -427
- package/src/core/logger/outputs.ts +2 -0
- package/src/core/middleware/built-in/auth.ts +17 -98
- package/src/core/middleware/built-in/cache.ts +1 -3
- package/src/core/middleware/built-in/index.ts +0 -8
- package/src/core/middleware/built-in/request-logger.ts +1 -3
- package/src/core/middleware/built-in/sse.ts +7 -9
- package/src/core/modules/auto-discovery.ts +13 -476
- package/src/core/modules/modules.ts +9 -20
- package/src/core/networking/adapters/ws-adapter.ts +5 -2
- package/src/core/networking/service-discovery.ts +7 -6
- package/src/core/routing/index.ts +14 -198
- package/src/core/runtime/node-adapter.ts +6 -12
- package/src/moro.ts +166 -554
- package/src/types/config.ts +2 -59
- package/src/types/core.ts +45 -47
- package/src/types/http.ts +1 -23
- package/src/types/logger.ts +0 -9
- package/src/types/module.ts +0 -12
- package/dist/core/config/config-manager.d.ts +0 -44
- package/dist/core/config/config-manager.js +0 -114
- package/dist/core/config/config-manager.js.map +0 -1
- package/dist/core/config/config-sources.d.ts +0 -21
- package/dist/core/config/config-sources.js +0 -502
- package/dist/core/config/config-sources.js.map +0 -1
- package/dist/core/config/config-validator.d.ts +0 -21
- package/dist/core/config/config-validator.js +0 -765
- package/dist/core/config/config-validator.js.map +0 -1
- package/dist/core/middleware/built-in/jwt-helpers.d.ts +0 -118
- package/dist/core/middleware/built-in/jwt-helpers.js +0 -221
- package/dist/core/middleware/built-in/jwt-helpers.js.map +0 -1
- package/src/core/config/config-manager.ts +0 -133
- package/src/core/config/config-sources.ts +0 -596
- package/src/core/config/config-validator.ts +0 -1078
- package/src/core/middleware/built-in/jwt-helpers.ts +0 -240
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"config-validator.js","sourceRoot":"","sources":["../../../src/core/config/config-validator.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,118 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* JWT Error Handling Utilities for Custom Middleware
|
|
3
|
-
*
|
|
4
|
-
* This module provides utilities to help users handle JWT errors gracefully
|
|
5
|
-
* in their custom authentication middleware.
|
|
6
|
-
*/
|
|
7
|
-
export interface JWTVerificationResult {
|
|
8
|
-
success: boolean;
|
|
9
|
-
payload?: any;
|
|
10
|
-
error?: {
|
|
11
|
-
type: 'expired' | 'invalid' | 'malformed' | 'missing_secret' | 'unknown';
|
|
12
|
-
message: string;
|
|
13
|
-
expiredAt?: Date;
|
|
14
|
-
date?: Date;
|
|
15
|
-
};
|
|
16
|
-
}
|
|
17
|
-
/**
|
|
18
|
-
* Safely verify a JWT token with proper error handling
|
|
19
|
-
*
|
|
20
|
-
* @param token - The JWT token to verify
|
|
21
|
-
* @param secret - The secret key for verification
|
|
22
|
-
* @param options - Additional JWT verification options
|
|
23
|
-
* @returns JWTVerificationResult with success status and payload or error details
|
|
24
|
-
*/
|
|
25
|
-
export declare function safeVerifyJWT(token: string, secret: string, options?: any): JWTVerificationResult;
|
|
26
|
-
/**
|
|
27
|
-
* Extract JWT token from Authorization header
|
|
28
|
-
*
|
|
29
|
-
* @param authHeader - The Authorization header value
|
|
30
|
-
* @returns The JWT token or null if not found/invalid format
|
|
31
|
-
*/
|
|
32
|
-
export declare function extractJWTFromHeader(authHeader: string | undefined): string | null;
|
|
33
|
-
/**
|
|
34
|
-
* Create a standardized auth middleware error response
|
|
35
|
-
*
|
|
36
|
-
* @param error - The JWT verification error
|
|
37
|
-
* @returns Standardized error response object
|
|
38
|
-
*/
|
|
39
|
-
export declare function createAuthErrorResponse(error: JWTVerificationResult['error']): {
|
|
40
|
-
success: boolean;
|
|
41
|
-
error: string;
|
|
42
|
-
message: string;
|
|
43
|
-
expiredAt?: undefined;
|
|
44
|
-
availableAt?: undefined;
|
|
45
|
-
} | {
|
|
46
|
-
success: boolean;
|
|
47
|
-
error: string;
|
|
48
|
-
message: string;
|
|
49
|
-
expiredAt: Date | undefined;
|
|
50
|
-
availableAt?: undefined;
|
|
51
|
-
} | {
|
|
52
|
-
success: boolean;
|
|
53
|
-
error: string;
|
|
54
|
-
message: string;
|
|
55
|
-
availableAt: Date | undefined;
|
|
56
|
-
expiredAt?: undefined;
|
|
57
|
-
};
|
|
58
|
-
/**
|
|
59
|
-
* Example usage for custom middleware with elegant error handling:
|
|
60
|
-
*
|
|
61
|
-
* ```typescript
|
|
62
|
-
* import { safeVerifyJWT, extractJWTFromHeader, createAuthErrorResponse } from '@morojs/moro';
|
|
63
|
-
*
|
|
64
|
-
* const authMiddleware = async (req: any, res: any, next: any) => {
|
|
65
|
-
* const token = extractJWTFromHeader(req.headers.authorization);
|
|
66
|
-
*
|
|
67
|
-
* if (!token) {
|
|
68
|
-
* return res.status(401).json({
|
|
69
|
-
* success: false,
|
|
70
|
-
* error: 'Missing token',
|
|
71
|
-
* message: 'Authorization header with Bearer token is required'
|
|
72
|
-
* });
|
|
73
|
-
* }
|
|
74
|
-
*
|
|
75
|
-
* const result = safeVerifyJWT(token, process.env.JWT_SECRET!);
|
|
76
|
-
*
|
|
77
|
-
* if (!result.success) {
|
|
78
|
-
* // This provides elegant, user-friendly error messages instead of stack traces
|
|
79
|
-
* const errorResponse = createAuthErrorResponse(result.error);
|
|
80
|
-
* return res.status(401).json(errorResponse);
|
|
81
|
-
* }
|
|
82
|
-
*
|
|
83
|
-
* // Token is valid - attach user info to request
|
|
84
|
-
* req.user = result.payload;
|
|
85
|
-
* req.auth = {
|
|
86
|
-
* user: result.payload,
|
|
87
|
-
* isAuthenticated: true,
|
|
88
|
-
* token
|
|
89
|
-
* };
|
|
90
|
-
*
|
|
91
|
-
* next();
|
|
92
|
-
* };
|
|
93
|
-
* ```
|
|
94
|
-
*
|
|
95
|
-
* Benefits of using safeVerifyJWT vs raw jsonwebtoken.verify():
|
|
96
|
-
*
|
|
97
|
-
* ❌ Raw approach (shows ugly error messages to users):
|
|
98
|
-
* ```typescript
|
|
99
|
-
* try {
|
|
100
|
-
* const decoded = jwt.verify(token, secret);
|
|
101
|
-
* req.user = decoded;
|
|
102
|
-
* } catch (error) {
|
|
103
|
-
* // This exposes technical details and stack traces to users:
|
|
104
|
-
* // "Invalid token: TokenExpiredError: jwt expired at /node_modules/jsonwebtoken/verify.js:190:21..."
|
|
105
|
-
* throw error; // BAD - exposes internal details
|
|
106
|
-
* }
|
|
107
|
-
* ```
|
|
108
|
-
*
|
|
109
|
-
* ✅ Safe approach (shows clean, user-friendly messages):
|
|
110
|
-
* ```typescript
|
|
111
|
-
* const result = safeVerifyJWT(token, secret);
|
|
112
|
-
* if (!result.success) {
|
|
113
|
-
* // This returns clean messages like:
|
|
114
|
-
* // { "error": "Token expired", "message": "Your session has expired. Please sign in again." }
|
|
115
|
-
* return res.status(401).json(createAuthErrorResponse(result.error));
|
|
116
|
-
* }
|
|
117
|
-
* ```
|
|
118
|
-
*/
|
|
@@ -1,221 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
/**
|
|
3
|
-
* JWT Error Handling Utilities for Custom Middleware
|
|
4
|
-
*
|
|
5
|
-
* This module provides utilities to help users handle JWT errors gracefully
|
|
6
|
-
* in their custom authentication middleware.
|
|
7
|
-
*/
|
|
8
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
-
exports.safeVerifyJWT = safeVerifyJWT;
|
|
10
|
-
exports.extractJWTFromHeader = extractJWTFromHeader;
|
|
11
|
-
exports.createAuthErrorResponse = createAuthErrorResponse;
|
|
12
|
-
/**
|
|
13
|
-
* Safely verify a JWT token with proper error handling
|
|
14
|
-
*
|
|
15
|
-
* @param token - The JWT token to verify
|
|
16
|
-
* @param secret - The secret key for verification
|
|
17
|
-
* @param options - Additional JWT verification options
|
|
18
|
-
* @returns JWTVerificationResult with success status and payload or error details
|
|
19
|
-
*/
|
|
20
|
-
function safeVerifyJWT(token, secret, options = {}) {
|
|
21
|
-
// Check if jsonwebtoken is available
|
|
22
|
-
let jwt;
|
|
23
|
-
try {
|
|
24
|
-
jwt = require('jsonwebtoken');
|
|
25
|
-
}
|
|
26
|
-
catch (error) {
|
|
27
|
-
return {
|
|
28
|
-
success: false,
|
|
29
|
-
error: {
|
|
30
|
-
type: 'missing_secret',
|
|
31
|
-
message: 'JWT verification requires the "jsonwebtoken" package. ' +
|
|
32
|
-
'Please install it with: npm install jsonwebtoken @types/jsonwebtoken',
|
|
33
|
-
},
|
|
34
|
-
};
|
|
35
|
-
}
|
|
36
|
-
if (!secret) {
|
|
37
|
-
return {
|
|
38
|
-
success: false,
|
|
39
|
-
error: {
|
|
40
|
-
type: 'missing_secret',
|
|
41
|
-
message: 'JWT verification requires a secret. ' +
|
|
42
|
-
'Please provide a secret for token verification.',
|
|
43
|
-
},
|
|
44
|
-
};
|
|
45
|
-
}
|
|
46
|
-
try {
|
|
47
|
-
const payload = jwt.verify(token, secret, options);
|
|
48
|
-
return {
|
|
49
|
-
success: true,
|
|
50
|
-
payload,
|
|
51
|
-
};
|
|
52
|
-
}
|
|
53
|
-
catch (error) {
|
|
54
|
-
// Handle specific JWT errors gracefully
|
|
55
|
-
if (error.name === 'TokenExpiredError') {
|
|
56
|
-
return {
|
|
57
|
-
success: false,
|
|
58
|
-
error: {
|
|
59
|
-
type: 'expired',
|
|
60
|
-
message: 'JWT token has expired',
|
|
61
|
-
expiredAt: error.expiredAt,
|
|
62
|
-
},
|
|
63
|
-
};
|
|
64
|
-
}
|
|
65
|
-
else if (error.name === 'JsonWebTokenError') {
|
|
66
|
-
return {
|
|
67
|
-
success: false,
|
|
68
|
-
error: {
|
|
69
|
-
type: 'invalid',
|
|
70
|
-
message: 'Invalid JWT token format or signature',
|
|
71
|
-
},
|
|
72
|
-
};
|
|
73
|
-
}
|
|
74
|
-
else if (error.name === 'NotBeforeError') {
|
|
75
|
-
return {
|
|
76
|
-
success: false,
|
|
77
|
-
error: {
|
|
78
|
-
type: 'malformed',
|
|
79
|
-
message: 'JWT token is not active yet',
|
|
80
|
-
date: error.date,
|
|
81
|
-
},
|
|
82
|
-
};
|
|
83
|
-
}
|
|
84
|
-
else {
|
|
85
|
-
return {
|
|
86
|
-
success: false,
|
|
87
|
-
error: {
|
|
88
|
-
type: 'unknown',
|
|
89
|
-
message: `JWT verification failed: ${error.message}`,
|
|
90
|
-
},
|
|
91
|
-
};
|
|
92
|
-
}
|
|
93
|
-
}
|
|
94
|
-
}
|
|
95
|
-
/**
|
|
96
|
-
* Extract JWT token from Authorization header
|
|
97
|
-
*
|
|
98
|
-
* @param authHeader - The Authorization header value
|
|
99
|
-
* @returns The JWT token or null if not found/invalid format
|
|
100
|
-
*/
|
|
101
|
-
function extractJWTFromHeader(authHeader) {
|
|
102
|
-
if (!authHeader) {
|
|
103
|
-
return null;
|
|
104
|
-
}
|
|
105
|
-
if (!authHeader.startsWith('Bearer ')) {
|
|
106
|
-
return null;
|
|
107
|
-
}
|
|
108
|
-
const token = authHeader.substring(7);
|
|
109
|
-
return token.trim() || null;
|
|
110
|
-
}
|
|
111
|
-
/**
|
|
112
|
-
* Create a standardized auth middleware error response
|
|
113
|
-
*
|
|
114
|
-
* @param error - The JWT verification error
|
|
115
|
-
* @returns Standardized error response object
|
|
116
|
-
*/
|
|
117
|
-
function createAuthErrorResponse(error) {
|
|
118
|
-
if (!error) {
|
|
119
|
-
return {
|
|
120
|
-
success: false,
|
|
121
|
-
error: 'Authentication failed',
|
|
122
|
-
message: 'Unknown authentication error',
|
|
123
|
-
};
|
|
124
|
-
}
|
|
125
|
-
switch (error.type) {
|
|
126
|
-
case 'expired':
|
|
127
|
-
return {
|
|
128
|
-
success: false,
|
|
129
|
-
error: 'Token expired',
|
|
130
|
-
message: 'Your session has expired. Please sign in again.',
|
|
131
|
-
expiredAt: error.expiredAt,
|
|
132
|
-
};
|
|
133
|
-
case 'invalid':
|
|
134
|
-
return {
|
|
135
|
-
success: false,
|
|
136
|
-
error: 'Invalid token',
|
|
137
|
-
message: 'The provided authentication token is invalid.',
|
|
138
|
-
};
|
|
139
|
-
case 'malformed':
|
|
140
|
-
return {
|
|
141
|
-
success: false,
|
|
142
|
-
error: 'Token not ready',
|
|
143
|
-
message: 'The authentication token is not yet valid.',
|
|
144
|
-
availableAt: error.date,
|
|
145
|
-
};
|
|
146
|
-
case 'missing_secret':
|
|
147
|
-
return {
|
|
148
|
-
success: false,
|
|
149
|
-
error: 'Configuration error',
|
|
150
|
-
message: 'Authentication service is not properly configured.',
|
|
151
|
-
};
|
|
152
|
-
default:
|
|
153
|
-
return {
|
|
154
|
-
success: false,
|
|
155
|
-
error: 'Authentication failed',
|
|
156
|
-
message: error.message || 'Authentication verification failed.',
|
|
157
|
-
};
|
|
158
|
-
}
|
|
159
|
-
}
|
|
160
|
-
/**
|
|
161
|
-
* Example usage for custom middleware with elegant error handling:
|
|
162
|
-
*
|
|
163
|
-
* ```typescript
|
|
164
|
-
* import { safeVerifyJWT, extractJWTFromHeader, createAuthErrorResponse } from '@morojs/moro';
|
|
165
|
-
*
|
|
166
|
-
* const authMiddleware = async (req: any, res: any, next: any) => {
|
|
167
|
-
* const token = extractJWTFromHeader(req.headers.authorization);
|
|
168
|
-
*
|
|
169
|
-
* if (!token) {
|
|
170
|
-
* return res.status(401).json({
|
|
171
|
-
* success: false,
|
|
172
|
-
* error: 'Missing token',
|
|
173
|
-
* message: 'Authorization header with Bearer token is required'
|
|
174
|
-
* });
|
|
175
|
-
* }
|
|
176
|
-
*
|
|
177
|
-
* const result = safeVerifyJWT(token, process.env.JWT_SECRET!);
|
|
178
|
-
*
|
|
179
|
-
* if (!result.success) {
|
|
180
|
-
* // This provides elegant, user-friendly error messages instead of stack traces
|
|
181
|
-
* const errorResponse = createAuthErrorResponse(result.error);
|
|
182
|
-
* return res.status(401).json(errorResponse);
|
|
183
|
-
* }
|
|
184
|
-
*
|
|
185
|
-
* // Token is valid - attach user info to request
|
|
186
|
-
* req.user = result.payload;
|
|
187
|
-
* req.auth = {
|
|
188
|
-
* user: result.payload,
|
|
189
|
-
* isAuthenticated: true,
|
|
190
|
-
* token
|
|
191
|
-
* };
|
|
192
|
-
*
|
|
193
|
-
* next();
|
|
194
|
-
* };
|
|
195
|
-
* ```
|
|
196
|
-
*
|
|
197
|
-
* Benefits of using safeVerifyJWT vs raw jsonwebtoken.verify():
|
|
198
|
-
*
|
|
199
|
-
* ❌ Raw approach (shows ugly error messages to users):
|
|
200
|
-
* ```typescript
|
|
201
|
-
* try {
|
|
202
|
-
* const decoded = jwt.verify(token, secret);
|
|
203
|
-
* req.user = decoded;
|
|
204
|
-
* } catch (error) {
|
|
205
|
-
* // This exposes technical details and stack traces to users:
|
|
206
|
-
* // "Invalid token: TokenExpiredError: jwt expired at /node_modules/jsonwebtoken/verify.js:190:21..."
|
|
207
|
-
* throw error; // BAD - exposes internal details
|
|
208
|
-
* }
|
|
209
|
-
* ```
|
|
210
|
-
*
|
|
211
|
-
* ✅ Safe approach (shows clean, user-friendly messages):
|
|
212
|
-
* ```typescript
|
|
213
|
-
* const result = safeVerifyJWT(token, secret);
|
|
214
|
-
* if (!result.success) {
|
|
215
|
-
* // This returns clean messages like:
|
|
216
|
-
* // { "error": "Token expired", "message": "Your session has expired. Please sign in again." }
|
|
217
|
-
* return res.status(401).json(createAuthErrorResponse(result.error));
|
|
218
|
-
* }
|
|
219
|
-
* ```
|
|
220
|
-
*/
|
|
221
|
-
//# sourceMappingURL=jwt-helpers.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"jwt-helpers.js","sourceRoot":"","sources":["../../../../src/core/middleware/built-in/jwt-helpers.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,133 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Configuration Manager - Immutable Single Source of Truth
|
|
3
|
-
*
|
|
4
|
-
* This module provides centralized, immutable configuration state management.
|
|
5
|
-
* Configuration is locked at createApp() initialization and cannot be changed afterward.
|
|
6
|
-
*
|
|
7
|
-
* Precedence: Environment Variables > createApp Options > Config File > Defaults
|
|
8
|
-
*/
|
|
9
|
-
|
|
10
|
-
import { AppConfig } from '../../types/config';
|
|
11
|
-
import { createFrameworkLogger } from '../logger';
|
|
12
|
-
|
|
13
|
-
const logger = createFrameworkLogger('ConfigManager');
|
|
14
|
-
|
|
15
|
-
/**
|
|
16
|
-
* Global configuration state - immutable after initialization
|
|
17
|
-
*/
|
|
18
|
-
let globalConfig: Readonly<AppConfig> | null = null;
|
|
19
|
-
let isLocked = false;
|
|
20
|
-
|
|
21
|
-
/**
|
|
22
|
-
* Initialize and lock global configuration state
|
|
23
|
-
* This should only be called once during createApp() initialization
|
|
24
|
-
*/
|
|
25
|
-
export function initializeAndLockConfig(config: AppConfig): void {
|
|
26
|
-
if (isLocked) {
|
|
27
|
-
throw new Error(
|
|
28
|
-
'Configuration is already locked and cannot be changed. ' +
|
|
29
|
-
'Configuration can only be set once during createApp() initialization.'
|
|
30
|
-
);
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
// Deep freeze the configuration to make it truly immutable
|
|
34
|
-
globalConfig = deepFreeze(config);
|
|
35
|
-
isLocked = true;
|
|
36
|
-
|
|
37
|
-
logger.info(
|
|
38
|
-
`Configuration locked and initialized: ${process.env.NODE_ENV || 'development'}:${config.server.port}`
|
|
39
|
-
);
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
/**
|
|
43
|
-
* Get the current global configuration
|
|
44
|
-
* Throws if configuration hasn't been initialized
|
|
45
|
-
*/
|
|
46
|
-
export function getGlobalConfig(): Readonly<AppConfig> {
|
|
47
|
-
if (!globalConfig || !isLocked) {
|
|
48
|
-
throw new Error(
|
|
49
|
-
'Configuration not initialized. Call createApp() to initialize the configuration system.'
|
|
50
|
-
);
|
|
51
|
-
}
|
|
52
|
-
return globalConfig;
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
/**
|
|
56
|
-
* Check if configuration has been initialized and locked
|
|
57
|
-
*/
|
|
58
|
-
export function isConfigLocked(): boolean {
|
|
59
|
-
return isLocked && globalConfig !== null;
|
|
60
|
-
}
|
|
61
|
-
|
|
62
|
-
/**
|
|
63
|
-
* Reset configuration state (for testing only)
|
|
64
|
-
* @internal - This should only be used in tests
|
|
65
|
-
*/
|
|
66
|
-
export function resetConfigForTesting(): void {
|
|
67
|
-
if (
|
|
68
|
-
process.env.NODE_ENV !== 'test' &&
|
|
69
|
-
!process.env.MORO_ALLOW_CONFIG_RESET &&
|
|
70
|
-
!process.env.JEST_WORKER_ID
|
|
71
|
-
) {
|
|
72
|
-
throw new Error(
|
|
73
|
-
'Configuration reset is only allowed in test environments. ' +
|
|
74
|
-
'Set MORO_ALLOW_CONFIG_RESET=true to override this check.'
|
|
75
|
-
);
|
|
76
|
-
}
|
|
77
|
-
|
|
78
|
-
globalConfig = null;
|
|
79
|
-
isLocked = false;
|
|
80
|
-
logger.debug('Configuration state reset for testing');
|
|
81
|
-
}
|
|
82
|
-
|
|
83
|
-
/**
|
|
84
|
-
* Deep freeze an object to make it truly immutable
|
|
85
|
-
* This prevents any accidental mutations to the configuration
|
|
86
|
-
*/
|
|
87
|
-
function deepFreeze<T>(obj: T): Readonly<T> {
|
|
88
|
-
// Get property names
|
|
89
|
-
const propNames = Object.getOwnPropertyNames(obj);
|
|
90
|
-
|
|
91
|
-
// Freeze properties before freezing self
|
|
92
|
-
for (const name of propNames) {
|
|
93
|
-
const value = (obj as any)[name];
|
|
94
|
-
|
|
95
|
-
if (value && typeof value === 'object') {
|
|
96
|
-
deepFreeze(value);
|
|
97
|
-
}
|
|
98
|
-
}
|
|
99
|
-
|
|
100
|
-
return Object.freeze(obj);
|
|
101
|
-
}
|
|
102
|
-
|
|
103
|
-
/**
|
|
104
|
-
* Get a specific configuration value using dot notation
|
|
105
|
-
* This provides a safe way to access nested config values
|
|
106
|
-
*
|
|
107
|
-
* @example
|
|
108
|
-
* getConfigValue('server.port') // Returns the server port
|
|
109
|
-
* getConfigValue('database.redis.url') // Returns the Redis URL
|
|
110
|
-
*/
|
|
111
|
-
export function getConfigValue<T = any>(path: string): T | undefined {
|
|
112
|
-
const config = getGlobalConfig();
|
|
113
|
-
|
|
114
|
-
return path.split('.').reduce((obj: any, key: string) => {
|
|
115
|
-
return obj && obj[key] !== undefined ? obj[key] : undefined;
|
|
116
|
-
}, config);
|
|
117
|
-
}
|
|
118
|
-
|
|
119
|
-
/**
|
|
120
|
-
* Utility functions for common environment checks
|
|
121
|
-
* These now read NODE_ENV directly for consistency with Node.js ecosystem
|
|
122
|
-
*/
|
|
123
|
-
export function isDevelopment(): boolean {
|
|
124
|
-
return process.env.NODE_ENV === 'development';
|
|
125
|
-
}
|
|
126
|
-
|
|
127
|
-
export function isProduction(): boolean {
|
|
128
|
-
return process.env.NODE_ENV === 'production';
|
|
129
|
-
}
|
|
130
|
-
|
|
131
|
-
export function isStaging(): boolean {
|
|
132
|
-
return process.env.NODE_ENV === 'staging';
|
|
133
|
-
}
|