powr-sdk-api 1.3.3 → 1.4.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/dist/middleware/request.js +70 -20
- package/package.json +2 -2
|
@@ -40,38 +40,73 @@ const requestHandler = (req, res, next) => {
|
|
|
40
40
|
res.error = (message, statusCode = 500, error = null) => {
|
|
41
41
|
// Extract error details for logging and response
|
|
42
42
|
let errorDetails = null;
|
|
43
|
+
let userFriendlyMessage = message;
|
|
43
44
|
if (error) {
|
|
44
45
|
// If error is an Error object, extract relevant properties
|
|
45
46
|
if (error instanceof Error) {
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
47
|
+
// For logging, include the stack trace
|
|
48
|
+
logger.error(message, {
|
|
49
|
+
statusCode,
|
|
50
|
+
requestId: req.requestId,
|
|
51
|
+
error: {
|
|
52
|
+
message: error.message,
|
|
53
|
+
stack: error.stack
|
|
54
|
+
}
|
|
55
|
+
});
|
|
56
|
+
|
|
57
|
+
// For response, only include the error message without stack
|
|
58
|
+
errorDetails = error.message;
|
|
59
|
+
|
|
60
|
+
// If no user-friendly message was provided, use a generic one
|
|
61
|
+
if (message === error.message || !message || message === '{}') {
|
|
62
|
+
userFriendlyMessage = 'An error occurred while processing your request';
|
|
63
|
+
}
|
|
50
64
|
} else if (typeof error === 'object') {
|
|
51
|
-
//
|
|
52
|
-
|
|
65
|
+
// Log the full error object
|
|
66
|
+
logger.error(message, {
|
|
67
|
+
statusCode,
|
|
68
|
+
requestId: req.requestId,
|
|
69
|
+
error
|
|
70
|
+
});
|
|
71
|
+
|
|
72
|
+
// For response, use the error message or a stringified version
|
|
73
|
+
errorDetails = error.message || JSON.stringify(error);
|
|
74
|
+
|
|
75
|
+
// If no user-friendly message was provided, use a generic one
|
|
76
|
+
if (!message || message === '{}') {
|
|
77
|
+
userFriendlyMessage = 'An error occurred while processing your request';
|
|
78
|
+
}
|
|
53
79
|
} else {
|
|
54
80
|
// If error is a primitive, convert to string
|
|
55
|
-
errorDetails =
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
81
|
+
errorDetails = String(error);
|
|
82
|
+
logger.error(message, {
|
|
83
|
+
statusCode,
|
|
84
|
+
requestId: req.requestId,
|
|
85
|
+
error: errorDetails
|
|
86
|
+
});
|
|
60
87
|
|
|
61
|
-
|
|
62
|
-
|
|
88
|
+
// If no user-friendly message was provided, use a generic one
|
|
89
|
+
if (!message || message === '{}') {
|
|
90
|
+
userFriendlyMessage = 'An error occurred while processing your request';
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
} else {
|
|
94
|
+
// Log without error details
|
|
95
|
+
logger.error(message, {
|
|
96
|
+
statusCode,
|
|
97
|
+
requestId: req.requestId
|
|
98
|
+
});
|
|
63
99
|
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
});
|
|
100
|
+
// If no user-friendly message was provided, use a generic one
|
|
101
|
+
if (!message || message === '{}') {
|
|
102
|
+
userFriendlyMessage = 'An error occurred while processing your request';
|
|
103
|
+
}
|
|
104
|
+
}
|
|
70
105
|
|
|
71
106
|
// Create response object
|
|
72
107
|
const response = {
|
|
73
108
|
success: false,
|
|
74
|
-
message:
|
|
109
|
+
message: userFriendlyMessage,
|
|
75
110
|
requestId: req.requestId
|
|
76
111
|
};
|
|
77
112
|
|
|
@@ -106,6 +141,21 @@ const requestHandler = (req, res, next) => {
|
|
|
106
141
|
};
|
|
107
142
|
}
|
|
108
143
|
|
|
144
|
+
// Add 404 handler to response object if not already present
|
|
145
|
+
if (!res.notFound) {
|
|
146
|
+
res.notFound = () => {
|
|
147
|
+
// Log the 404 error
|
|
148
|
+
logger.warn(`Route not found: ${req.method} ${req.path}`, {
|
|
149
|
+
requestId: req.requestId,
|
|
150
|
+
ip: req.ip,
|
|
151
|
+
userAgent: req.headers['user-agent']
|
|
152
|
+
});
|
|
153
|
+
|
|
154
|
+
// Return a consistent JSON response
|
|
155
|
+
return res.error('The requested resource was not found', 404, `${req.method} ${req.path}`);
|
|
156
|
+
};
|
|
157
|
+
}
|
|
158
|
+
|
|
109
159
|
// Continue to the next middleware
|
|
110
160
|
next();
|
|
111
161
|
} catch (error) {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "powr-sdk-api",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.4.0",
|
|
4
4
|
"description": "Shared API core library for PowrStack projects",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -38,7 +38,7 @@
|
|
|
38
38
|
"dependencies": {
|
|
39
39
|
"@aws-sdk/client-s3": "^3.787.0",
|
|
40
40
|
"express": "^4.18.2",
|
|
41
|
-
"jsonwebtoken": "^9.0.2",
|
|
41
|
+
"jsonwebtoken": "^9.0.2",
|
|
42
42
|
"swagger-jsdoc": "^6.2.8",
|
|
43
43
|
"swagger-ui-express": "^5.0.0",
|
|
44
44
|
"winston": "^3.17.0"
|