UNPKG

hackages

Version:

CLI tool for learning software development concepts through test-driven development

82 lines (81 loc) 3.12 kB
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."; }