powr-sdk-api 1.3.2 → 1.3.4

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.
@@ -1,10 +1,22 @@
1
1
  "use strict";
2
2
 
3
3
  const errorCatcher = fn => (req, res, next) => {
4
- Promise.resolve(fn(req, res, next)).catch(res.error);
4
+ Promise.resolve(fn(req, res, next)).catch(error => {
5
+ // Extract error message and status code
6
+ const message = error.message || 'Internal Server Error';
7
+ const statusCode = error.statusCode || 500;
8
+
9
+ // Pass error details to res.error
10
+ return res.error(message, statusCode, error);
11
+ });
5
12
  };
6
13
  const errorHandler = (err, req, res, next) => {
7
- return res.error(err);
14
+ // Extract error message and status code
15
+ const message = err.message || 'Internal Server Error';
16
+ const statusCode = err.statusCode || 500;
17
+
18
+ // Pass error details to res.error
19
+ return res.error(message, statusCode, err);
8
20
  };
9
21
  module.exports = {
10
22
  errorCatcher,
@@ -40,30 +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
- errorDetails = {
47
- message: error.message,
48
- stack: error.stack
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
+ }
64
+ } else if (typeof error === 'object') {
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
+ }
50
79
  } else {
51
- // If error is already an object, use it directly
52
- errorDetails = error;
80
+ // If error is a primitive, convert to string
81
+ errorDetails = String(error);
82
+ logger.error(message, {
83
+ statusCode,
84
+ requestId: req.requestId,
85
+ error: errorDetails
86
+ });
87
+
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
+ }
53
92
  }
54
- }
93
+ } else {
94
+ // Log without error details
95
+ logger.error(message, {
96
+ statusCode,
97
+ requestId: req.requestId
98
+ });
55
99
 
56
- // Log the error with details
57
- logger.error(message, {
58
- statusCode,
59
- requestId: req.requestId,
60
- error: errorDetails
61
- });
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
+ }
62
105
 
63
106
  // Create response object
64
107
  const response = {
65
108
  success: false,
66
- message: typeof message === 'string' ? message : JSON.stringify(message),
109
+ message: userFriendlyMessage,
67
110
  requestId: req.requestId
68
111
  };
69
112
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "powr-sdk-api",
3
- "version": "1.3.2",
3
+ "version": "1.3.4",
4
4
  "description": "Shared API core library for PowrStack projects",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",