/** * Configuration Error * * Error thrown when SDK configuration is invalid * * @module errors/ConfigurationError */ import { OrbisError, OrbisErrorCode } from './OrbisError'; /** * ConfigurationError class * * Thrown when the SDK configuration is invalid or missing required fields. */ export class ConfigurationError extends OrbisError { /** Configuration field that caused the error */ public readonly field?: string; /** Validation errors */ public readonly validationErrors?: string[]; /** * Create a ConfigurationError * * @param message - Error message * @param field - Configuration field that caused the error * @param validationErrors - Validation errors * @param originalError - Original error (if any) */ constructor( message: string, field?: string, validationErrors?: string[], originalError?: Error ) { super(message, OrbisErrorCode.CONFIGURATION, originalError, { field, validationErrors, }); this.name = 'ConfigurationError'; this.field = field; this.validationErrors = validationErrors; // Maintains proper stack trace for where our error was thrown (only available on V8) if (Error.captureStackTrace) { Error.captureStackTrace(this, ConfigurationError); } } /** * Create a ConfigurationError for missing field * * @param field - Missing field name * @returns ConfigurationError instance */ static missingField(field: string): ConfigurationError { return new ConfigurationError( `Configuration field '${field}' is required but missing`, field ); } /** * Create a ConfigurationError for invalid field * * @param field - Invalid field name * @param reason - Reason why the field is invalid * @returns ConfigurationError instance */ static invalidField(field: string, reason: string): ConfigurationError { return new ConfigurationError( `Configuration field '${field}' is invalid: ${reason}`, field ); } /** * Create a ConfigurationError for multiple validation errors * * @param errors - Array of validation error messages * @returns ConfigurationError instance */ static validationFailed(errors: string[]): ConfigurationError { return new ConfigurationError( `Configuration validation failed:\n- ${errors.join('\n- ')}`, undefined, errors ); } /** * Convert error to JSON */ toJSON(): Record { return { ...super.toJSON(), field: this.field, validationErrors: this.validationErrors, }; } }