hackages
Version:
CLI tool for learning software development concepts through test-driven development
82 lines (81 loc) • 3.12 kB
JavaScript
import chalk from "chalk";
export function clearScreen() {
console.clear();
}
export function printHeader(title) {
console.log(chalk.bold.blue(`🎯 ${title}`));
console.log(chalk.cyan("=".repeat(50)));
}
export function printSubHeader(title) {
console.log(chalk.bold.cyan(title));
}
export function printSuccess(message) {
console.log(chalk.green(message));
}
export function printError(message) {
console.log(chalk.red(message));
}
export function printWarning(message) {
console.log(chalk.yellow(message));
}
export function printInfo(message) {
console.log(chalk.blue(message));
}
export function printDim(message) {
console.log(chalk.dim(message));
}
/**
* Formats an error into a user-friendly message
*/
export function formatError(error) {
// Handle AxiosError specifically
if (error && typeof error === "object" && "isAxiosError" in error) {
const axiosError = error;
if (axiosError.response) {
const status = axiosError.response.status;
switch (status) {
case 400:
return "Invalid request. Please check your input and try again.";
case 401:
return "Authentication required. Please log in again.";
case 403:
return "You don't have permission to perform this action.";
case 404:
return "The requested resource was not found.";
case 405:
return "This action is not allowed. Please check if you're using the correct command.";
case 408:
return "Request timed out. Please check your internet connection and try again.";
case 429:
return "Too many requests. Please wait a moment and try again.";
case 500:
case 502:
case 503:
case 504:
return "The server is experiencing issues. Please try again in a few moments.";
default:
return `Server error (${status}). Please try again later.`;
}
}
else if (axiosError.request) {
return "Unable to connect to the server. Please check your internet connection.";
}
else {
return "An unexpected error occurred. Please try again.";
}
}
// Handle standard Error objects
if (error instanceof Error) {
// Don't expose technical error messages to users
if (error.message.includes("ECONNREFUSED") || error.message.includes("ENOTFOUND")) {
return "Unable to connect to the server. Please check your internet connection.";
}
if (error.message.includes("timeout")) {
return "Request timed out. Please check your internet connection and try again.";
}
// For other errors, return a generic message
return "An unexpected error occurred. Please try again.";
}
// Fallback for unknown error types
return "An unexpected error occurred. Please try again.";
}