UNPKG

@basictech/cli

Version:

Basic CLI for creating & managing your projects

74 lines 2.45 kB
export class BasicCliError extends Error { code; suggestions; constructor(message, code, suggestions) { super(message); this.code = code; this.suggestions = suggestions; this.name = 'BasicCliError'; } } export class AuthError extends BasicCliError { constructor(message, suggestions) { super(message, 'AUTH_ERROR', suggestions); this.name = 'AuthError'; } } export class ApiError extends BasicCliError { statusCode; constructor(message, statusCode, suggestions) { super(message, 'API_ERROR', suggestions); this.statusCode = statusCode; this.name = 'ApiError'; } } export class SchemaError extends BasicCliError { constructor(message, suggestions) { super(message, 'SCHEMA_ERROR', suggestions); this.name = 'SchemaError'; } } export class NetworkError extends BasicCliError { constructor(message = 'Network connection failed') { super(message, 'NETWORK_ERROR', [ 'Check your internet connection', 'Try again in a moment' ]); this.name = 'NetworkError'; } } export function handleError(error) { if (error instanceof BasicCliError) { return error; } if (error instanceof Error) { if (error.message.includes('ENOTFOUND') || error.message.includes('network')) { return new NetworkError(); } if (error.message.includes('unauthorized') || error.message.includes('401')) { return new AuthError('Authentication failed', [ 'Try logging in again with \'basic login\'', 'Check if your token has expired' ]); } if (error.message.includes('invalid character')) { return new SchemaError('Invalid schema format', [ 'Check for trailing commas in your schema', 'Ensure valid JSON syntax' ]); } return new BasicCliError(error.message, 'UNKNOWN_ERROR'); } return new BasicCliError('An unknown error occurred', 'UNKNOWN_ERROR'); } export function formatError(error) { let output = `Error: ${error.message}`; if (error.suggestions && error.suggestions.length > 0) { output += '\n\nSuggestions:'; error.suggestions.forEach(suggestion => { output += `\n - ${suggestion}`; }); } return output; } //# sourceMappingURL=errors.js.map