UNPKG

meld

Version:

Meld: A template language for LLM prompts

54 lines (46 loc) 1.62 kB
import { MeldError, ErrorSeverity } from './MeldError.js'; export interface ImportErrorDetails { importChain?: string[]; filePath?: string; cause?: Error; variableName?: string; } export interface MeldImportErrorOptions { code?: string; details?: ImportErrorDetails; cause?: Error; severity?: ErrorSeverity; context?: any; } /** * Error thrown when import operations fail */ export class MeldImportError extends MeldError { public readonly details?: ImportErrorDetails; constructor( message: string, options: MeldImportErrorOptions = {} ) { const importChainStr = options.details?.importChain ? ` (chain: ${options.details.importChain.join(' → ')})` : ''; // Circular imports are fatal, other import errors are typically recoverable const isCyclic = options.code === 'CIRCULAR_IMPORT' || message.includes('circular'); const severity = options.severity || (isCyclic ? ErrorSeverity.Fatal : ErrorSeverity.Recoverable); super(`Import error${options.code ? ` (${options.code})` : ''}: ${message}${importChainStr}`, { code: options.code || 'IMPORT_FAILED', filePath: options.details?.filePath, cause: options.cause || options.details?.cause, severity, context: { ...options.context, importChain: options.details?.importChain, variableName: options.details?.variableName } }); this.name = 'MeldImportError'; this.details = options.details; // Ensure proper prototype chain for instanceof checks Object.setPrototypeOf(this, MeldImportError.prototype); } }