@naman_deep_singh/server-utils 1.4.4 → 1.5.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 +1 -1
- package/dist/cjs/core/server.js +6 -6
- package/dist/cjs/middleware/cache.middleware.js +2 -2
- package/dist/cjs/middleware/errorHandler.middleware.js +11 -9
- package/dist/cjs/middleware/session.middleware.js +8 -8
- package/dist/esm/core/server.js +6 -6
- package/dist/esm/middleware/cache.middleware.js +2 -2
- package/dist/esm/middleware/errorHandler.middleware.js +11 -9
- package/dist/esm/middleware/session.middleware.js +8 -8
- package/package.json +4 -4
package/README.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# @naman_deep_singh/server-utils
|
|
2
2
|
|
|
3
|
-
**Version:** 1.
|
|
3
|
+
**Version:** 1.5.1 (with integrated cache & session support)
|
|
4
4
|
|
|
5
5
|
Extensible server utilities for Express.js microservices with multi-protocol support, integrated caching, session management, and TypeScript.
|
|
6
6
|
|
package/dist/cjs/core/server.js
CHANGED
|
@@ -179,8 +179,8 @@ class ExpressServer {
|
|
|
179
179
|
});
|
|
180
180
|
console.log(`✅ [${serverName}] Cache initialized successfully (adapter: ${cacheConfig.adapter || 'memory'})`);
|
|
181
181
|
}
|
|
182
|
-
catch (
|
|
183
|
-
console.error(`❌ [${serverName}] Failed to initialize cache (fallback to memory if enabled):`,
|
|
182
|
+
catch (error) {
|
|
183
|
+
console.error(`❌ [${serverName}] Failed to initialize cache (fallback to memory if enabled):`, error instanceof Error ? error.message : error);
|
|
184
184
|
// Cache initialization error is critical but we continue to allow graceful fallback
|
|
185
185
|
}
|
|
186
186
|
}
|
|
@@ -218,14 +218,14 @@ class ExpressServer {
|
|
|
218
218
|
this.app.use((0, middleware_1.useSession)(cookieName));
|
|
219
219
|
console.log(`✅ [${serverName}] Session middleware enabled (cookie: ${cookieName}, TTL: ${ttl}s)`);
|
|
220
220
|
}
|
|
221
|
-
catch (
|
|
222
|
-
console.error(`❌ [${serverName}] Session middleware not available:`,
|
|
221
|
+
catch (error) {
|
|
222
|
+
console.error(`❌ [${serverName}] Session middleware not available:`, error instanceof Error ? error.message : error);
|
|
223
223
|
}
|
|
224
224
|
}
|
|
225
225
|
}
|
|
226
226
|
}
|
|
227
|
-
catch (
|
|
228
|
-
console.error(`❌ [${serverName}] Error during cache/session setup:`,
|
|
227
|
+
catch (error) {
|
|
228
|
+
console.error(`❌ [${serverName}] Error during cache/session setup:`, error instanceof Error ? error.message : error);
|
|
229
229
|
}
|
|
230
230
|
}
|
|
231
231
|
setupPeriodicHealthMonitoring() {
|
|
@@ -50,8 +50,8 @@ function cacheResponse(ttl) {
|
|
|
50
50
|
};
|
|
51
51
|
next();
|
|
52
52
|
}
|
|
53
|
-
catch (
|
|
54
|
-
console.error('[Cache] Unexpected error in cacheResponse middleware:',
|
|
53
|
+
catch (error) {
|
|
54
|
+
console.error('[Cache] Unexpected error in cacheResponse middleware:', error);
|
|
55
55
|
next();
|
|
56
56
|
}
|
|
57
57
|
};
|
|
@@ -3,31 +3,33 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.createErrorHandler = createErrorHandler;
|
|
4
4
|
const errors_utils_1 = require("@naman_deep_singh/errors-utils");
|
|
5
5
|
function createErrorHandler() {
|
|
6
|
-
return (
|
|
6
|
+
return (error, _req, res, next) => {
|
|
7
7
|
if (res.headersSent) {
|
|
8
|
-
return next(
|
|
8
|
+
return next(error);
|
|
9
9
|
}
|
|
10
10
|
// Use responder if available
|
|
11
11
|
const responder = res.responder?.() ?? null;
|
|
12
12
|
// Known application error
|
|
13
|
-
if (
|
|
13
|
+
if (error instanceof errors_utils_1.AppError) {
|
|
14
14
|
if (responder) {
|
|
15
|
-
return responder
|
|
15
|
+
return responder
|
|
16
|
+
.status(error.statusCode)
|
|
17
|
+
.error(error.code, error.details);
|
|
16
18
|
}
|
|
17
19
|
// Fallback (if responder middleware is not mounted)
|
|
18
|
-
return res.status(
|
|
20
|
+
return res.status(error.statusCode).json({
|
|
19
21
|
success: false,
|
|
20
|
-
message:
|
|
22
|
+
message: error.code,
|
|
21
23
|
error: {
|
|
22
|
-
message:
|
|
23
|
-
details:
|
|
24
|
+
message: error.code,
|
|
25
|
+
details: error.details,
|
|
24
26
|
},
|
|
25
27
|
data: undefined,
|
|
26
28
|
meta: null,
|
|
27
29
|
});
|
|
28
30
|
}
|
|
29
31
|
// Unknown / unhandled error
|
|
30
|
-
console.error('Unhandled error:',
|
|
32
|
+
console.error('Unhandled error:', error);
|
|
31
33
|
const status = 500;
|
|
32
34
|
const message = 'Internal Server Error';
|
|
33
35
|
if (responder) {
|
|
@@ -29,24 +29,24 @@ function useSession(cookieName) {
|
|
|
29
29
|
try {
|
|
30
30
|
return await store.get(sid);
|
|
31
31
|
}
|
|
32
|
-
catch (
|
|
33
|
-
console.error(`[Session] Failed to get session "${sid}":`,
|
|
34
|
-
throw
|
|
32
|
+
catch (error) {
|
|
33
|
+
console.error(`[Session] Failed to get session "${sid}":`, error);
|
|
34
|
+
throw error;
|
|
35
35
|
}
|
|
36
36
|
};
|
|
37
37
|
req.createSession = async (id, data, ttl) => {
|
|
38
38
|
try {
|
|
39
39
|
return await store.create(id, data, ttl);
|
|
40
40
|
}
|
|
41
|
-
catch (
|
|
42
|
-
console.error(`[Session] Failed to create session "${id}":`,
|
|
43
|
-
throw
|
|
41
|
+
catch (error) {
|
|
42
|
+
console.error(`[Session] Failed to create session "${id}":`, error);
|
|
43
|
+
throw error;
|
|
44
44
|
}
|
|
45
45
|
};
|
|
46
46
|
next();
|
|
47
47
|
}
|
|
48
|
-
catch (
|
|
49
|
-
console.error('[Session] Unexpected error in useSession middleware:',
|
|
48
|
+
catch (error) {
|
|
49
|
+
console.error('[Session] Unexpected error in useSession middleware:', error);
|
|
50
50
|
next();
|
|
51
51
|
}
|
|
52
52
|
};
|
package/dist/esm/core/server.js
CHANGED
|
@@ -139,8 +139,8 @@ export class ExpressServer {
|
|
|
139
139
|
});
|
|
140
140
|
console.log(`✅ [${serverName}] Cache initialized successfully (adapter: ${cacheConfig.adapter || 'memory'})`);
|
|
141
141
|
}
|
|
142
|
-
catch (
|
|
143
|
-
console.error(`❌ [${serverName}] Failed to initialize cache (fallback to memory if enabled):`,
|
|
142
|
+
catch (error) {
|
|
143
|
+
console.error(`❌ [${serverName}] Failed to initialize cache (fallback to memory if enabled):`, error instanceof Error ? error.message : error);
|
|
144
144
|
// Cache initialization error is critical but we continue to allow graceful fallback
|
|
145
145
|
}
|
|
146
146
|
}
|
|
@@ -178,14 +178,14 @@ export class ExpressServer {
|
|
|
178
178
|
this.app.use(useSession(cookieName));
|
|
179
179
|
console.log(`✅ [${serverName}] Session middleware enabled (cookie: ${cookieName}, TTL: ${ttl}s)`);
|
|
180
180
|
}
|
|
181
|
-
catch (
|
|
182
|
-
console.error(`❌ [${serverName}] Session middleware not available:`,
|
|
181
|
+
catch (error) {
|
|
182
|
+
console.error(`❌ [${serverName}] Session middleware not available:`, error instanceof Error ? error.message : error);
|
|
183
183
|
}
|
|
184
184
|
}
|
|
185
185
|
}
|
|
186
186
|
}
|
|
187
|
-
catch (
|
|
188
|
-
console.error(`❌ [${serverName}] Error during cache/session setup:`,
|
|
187
|
+
catch (error) {
|
|
188
|
+
console.error(`❌ [${serverName}] Error during cache/session setup:`, error instanceof Error ? error.message : error);
|
|
189
189
|
}
|
|
190
190
|
}
|
|
191
191
|
setupPeriodicHealthMonitoring() {
|
|
@@ -47,8 +47,8 @@ export function cacheResponse(ttl) {
|
|
|
47
47
|
};
|
|
48
48
|
next();
|
|
49
49
|
}
|
|
50
|
-
catch (
|
|
51
|
-
console.error('[Cache] Unexpected error in cacheResponse middleware:',
|
|
50
|
+
catch (error) {
|
|
51
|
+
console.error('[Cache] Unexpected error in cacheResponse middleware:', error);
|
|
52
52
|
next();
|
|
53
53
|
}
|
|
54
54
|
};
|
|
@@ -1,30 +1,32 @@
|
|
|
1
1
|
import { AppError } from '@naman_deep_singh/errors-utils';
|
|
2
2
|
export function createErrorHandler() {
|
|
3
|
-
return (
|
|
3
|
+
return (error, _req, res, next) => {
|
|
4
4
|
if (res.headersSent) {
|
|
5
|
-
return next(
|
|
5
|
+
return next(error);
|
|
6
6
|
}
|
|
7
7
|
// Use responder if available
|
|
8
8
|
const responder = res.responder?.() ?? null;
|
|
9
9
|
// Known application error
|
|
10
|
-
if (
|
|
10
|
+
if (error instanceof AppError) {
|
|
11
11
|
if (responder) {
|
|
12
|
-
return responder
|
|
12
|
+
return responder
|
|
13
|
+
.status(error.statusCode)
|
|
14
|
+
.error(error.code, error.details);
|
|
13
15
|
}
|
|
14
16
|
// Fallback (if responder middleware is not mounted)
|
|
15
|
-
return res.status(
|
|
17
|
+
return res.status(error.statusCode).json({
|
|
16
18
|
success: false,
|
|
17
|
-
message:
|
|
19
|
+
message: error.code,
|
|
18
20
|
error: {
|
|
19
|
-
message:
|
|
20
|
-
details:
|
|
21
|
+
message: error.code,
|
|
22
|
+
details: error.details,
|
|
21
23
|
},
|
|
22
24
|
data: undefined,
|
|
23
25
|
meta: null,
|
|
24
26
|
});
|
|
25
27
|
}
|
|
26
28
|
// Unknown / unhandled error
|
|
27
|
-
console.error('Unhandled error:',
|
|
29
|
+
console.error('Unhandled error:', error);
|
|
28
30
|
const status = 500;
|
|
29
31
|
const message = 'Internal Server Error';
|
|
30
32
|
if (responder) {
|
|
@@ -26,24 +26,24 @@ export function useSession(cookieName) {
|
|
|
26
26
|
try {
|
|
27
27
|
return await store.get(sid);
|
|
28
28
|
}
|
|
29
|
-
catch (
|
|
30
|
-
console.error(`[Session] Failed to get session "${sid}":`,
|
|
31
|
-
throw
|
|
29
|
+
catch (error) {
|
|
30
|
+
console.error(`[Session] Failed to get session "${sid}":`, error);
|
|
31
|
+
throw error;
|
|
32
32
|
}
|
|
33
33
|
};
|
|
34
34
|
req.createSession = async (id, data, ttl) => {
|
|
35
35
|
try {
|
|
36
36
|
return await store.create(id, data, ttl);
|
|
37
37
|
}
|
|
38
|
-
catch (
|
|
39
|
-
console.error(`[Session] Failed to create session "${id}":`,
|
|
40
|
-
throw
|
|
38
|
+
catch (error) {
|
|
39
|
+
console.error(`[Session] Failed to create session "${id}":`, error);
|
|
40
|
+
throw error;
|
|
41
41
|
}
|
|
42
42
|
};
|
|
43
43
|
next();
|
|
44
44
|
}
|
|
45
|
-
catch (
|
|
46
|
-
console.error('[Session] Unexpected error in useSession middleware:',
|
|
45
|
+
catch (error) {
|
|
46
|
+
console.error('[Session] Unexpected error in useSession middleware:', error);
|
|
47
47
|
next();
|
|
48
48
|
}
|
|
49
49
|
};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@naman_deep_singh/server-utils",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.5.1",
|
|
4
4
|
"description": "Extensible server utilities for Express.js microservices with TypeScript",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/cjs/index.js",
|
|
@@ -27,9 +27,9 @@
|
|
|
27
27
|
"author": "Naman Deep Singh",
|
|
28
28
|
"license": "ISC",
|
|
29
29
|
"dependencies": {
|
|
30
|
-
"@naman_deep_singh/cache": "^1.
|
|
31
|
-
"@naman_deep_singh/errors-utils": "^1.
|
|
32
|
-
"@naman_deep_singh/security": "^1.
|
|
30
|
+
"@naman_deep_singh/cache": "^1.4.0",
|
|
31
|
+
"@naman_deep_singh/errors-utils": "^1.4.2",
|
|
32
|
+
"@naman_deep_singh/security": "^1.5.1",
|
|
33
33
|
"@types/express": "^5.0.5",
|
|
34
34
|
"cookie-parser": "^1.4.6",
|
|
35
35
|
"cors": "^2.8.5",
|