This commit is contained in:
Raven Scott
2025-12-17 20:05:50 -05:00
commit 742e27d3f7
276 changed files with 89838 additions and 0 deletions
+77
View File
@@ -0,0 +1,77 @@
const { logError } = require('./logger');
/**
* Creates a user-friendly error message from an error object
* @param {Error} err - Error object
* @returns {string} - User-friendly error message
*/
function getUserFriendlyError(err) {
if (!err) {
return 'An unknown error occurred';
}
// Handle specific error types
if (err.code === 'EADDRINUSE') {
return 'The requested port is already in use. Please choose a different port.';
}
if (err.code === 'ENOENT') {
return 'The requested file or directory was not found.';
}
if (err.code === 'EACCES') {
return 'Permission denied. Please ensure you have the necessary permissions.';
}
if (err.code === 'ECONNREFUSED') {
return 'Connection refused. The service may not be running.';
}
if (err.code === 'ETIMEDOUT') {
return 'Operation timed out. Please try again.';
}
// Check for validation errors
if (err.message && err.message.includes('validation') || err.message.includes('Invalid')) {
return err.message;
}
// Generic error message
if (err.message) {
// Don't expose internal error details in production
if (process.env.NODE_ENV === 'production') {
return 'An error occurred processing your request. Please try again.';
}
return err.message;
}
return 'An unexpected error occurred. Please try again.';
}
/**
* Creates an error response object
* @param {Error} err - Error object
* @param {number} defaultStatusCode - Default HTTP status code
* @returns {object} - Error response object
*/
function createErrorResponse(err, defaultStatusCode = 500) {
const message = getUserFriendlyError(err);
const statusCode = err.statusCode || err.status || defaultStatusCode;
logError('ErrorHandler', `Error: ${err.message || err} (Status: ${statusCode})`);
return {
statusCode,
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify({
error: err.name || 'Error',
message: message,
...(process.env.NODE_ENV !== 'production' && err.stack ? { stack: err.stack } : {})
})
};
}
module.exports = { getUserFriendlyError, createErrorResponse };