lorehub
Version:
Capture and surface the collective wisdom of your codebase
51 lines • 2.41 kB
JavaScript
import React from 'react';
import { Box, Text } from 'ink';
export function ErrorMessage({ error, context, suggestions }) {
const errorMessage = error instanceof Error ? error.message : error;
// Map common errors to user-friendly messages
const friendlyMessages = {
'ENOENT': {
message: 'File or directory not found',
suggestions: ['Check if you\'re in the right directory', 'Ensure the realm exists'],
},
'EACCES': {
message: 'Permission denied',
suggestions: ['Check file permissions', 'Try running with appropriate permissions'],
},
'SQLITE_BUSY': {
message: 'Database is locked',
suggestions: ['Another process might be using the database', 'Try again in a moment'],
},
'Content is required': {
message: 'Lore content cannot be empty',
suggestions: ['Enter a meaningful lore description', 'Press Tab to navigate to the content field'],
},
'Failed to load realm': {
message: 'Could not load realm information',
suggestions: ['Ensure you\'re in a valid realm directory', 'Check if package.json exists'],
},
};
// Find matching friendly message
let displayMessage = errorMessage;
let displaySuggestions = suggestions || [];
for (const [key, value] of Object.entries(friendlyMessages)) {
if (errorMessage.includes(key)) {
displayMessage = value.message;
displaySuggestions = [...value.suggestions, ...(suggestions || [])];
break;
}
}
return (React.createElement(Box, { flexDirection: "column", marginY: 1 },
React.createElement(Box, null,
React.createElement(Text, { color: "red", bold: true },
"\u26A0 Error",
context ? ` (${context})` : '',
": "),
React.createElement(Text, { color: "red" }, displayMessage)),
displaySuggestions.length > 0 && (React.createElement(Box, { flexDirection: "column", marginTop: 1, marginLeft: 2 },
React.createElement(Text, { dimColor: true }, "Suggestions:"),
displaySuggestions.map((suggestion, index) => (React.createElement(Text, { key: index, dimColor: true },
"\u2022 ",
suggestion)))))));
}
//# sourceMappingURL=ErrorMessage.js.map