{"version":3,"sources":["../src/errors.ts"],"sourcesContent":["export interface WextsErrorOptions {\n    code: string;\n    message: string;\n    cause?: unknown;\n    suggestedFix?: string;\n    docsSlug?: string;\n}\n\nexport class WextsError extends Error {\n    readonly code: string;\n    readonly suggestedFix?: string;\n    readonly docsSlug?: string;\n\n    constructor(options: WextsErrorOptions) {\n        super(options.message, options.cause === undefined ? undefined : { cause: options.cause });\n        this.name = 'WextsError';\n        this.code = options.code;\n        this.suggestedFix = options.suggestedFix;\n        this.docsSlug = options.docsSlug;\n    }\n\n    get docsUrl(): string | undefined {\n        return this.docsSlug ? `https://github.com/ziadmustafa1/wexts/blob/main/docs/${this.docsSlug}.md` : undefined;\n    }\n}\n\nexport class WextsRpcError extends WextsError {\n    constructor(options: Omit<WextsErrorOptions, 'code'> & { code?: string }) {\n        super({ code: options.code ?? 'WEXTS_RPC_ERROR', ...options });\n        this.name = 'WextsRpcError';\n    }\n}\n\nexport class WextsCodegenError extends WextsError {\n    constructor(options: Omit<WextsErrorOptions, 'code'> & { code?: string }) {\n        super({ code: options.code ?? 'WEXTS_CODEGEN_ERROR', ...options });\n        this.name = 'WextsCodegenError';\n    }\n}\n\nexport class WextsRuntimeError extends WextsError {\n    constructor(options: Omit<WextsErrorOptions, 'code'> & { code?: string }) {\n        super({ code: options.code ?? 'WEXTS_RUNTIME_ERROR', ...options });\n        this.name = 'WextsRuntimeError';\n    }\n}\n\nexport class WextsSecurityError extends WextsError {\n    constructor(options: Omit<WextsErrorOptions, 'code'> & { code?: string }) {\n        super({ code: options.code ?? 'WEXTS_SECURITY_ERROR', ...options });\n        this.name = 'WextsSecurityError';\n    }\n}\n\nexport function formatWextsError(error: unknown): string {\n    if (!(error instanceof WextsError)) {\n        return error instanceof Error ? error.message : String(error);\n    }\n\n    const lines = [`${error.code}: ${error.message}`];\n    if (error.suggestedFix) lines.push(`Suggested fix: ${error.suggestedFix}`);\n    if (error.docsUrl) lines.push(`Docs: ${error.docsUrl}`);\n    return lines.join('\\n');\n}\n"],"mappings":";;;;;AAQO,IAAMA,aAAN,cAAyBC,MAAAA;EAAhC,OAAgCA;;;EACnBC;EACAC;EACAC;EAET,YAAYC,SAA4B;AACpC,UAAMA,QAAQC,SAASD,QAAQE,UAAUC,SAAYA,SAAY;MAAED,OAAOF,QAAQE;IAAM,CAAA;AACxF,SAAKE,OAAO;AACZ,SAAKP,OAAOG,QAAQH;AACpB,SAAKC,eAAeE,QAAQF;AAC5B,SAAKC,WAAWC,QAAQD;EAC5B;EAEA,IAAIM,UAA8B;AAC9B,WAAO,KAAKN,WAAW,wDAAwD,KAAKA,QAAQ,QAAQI;EACxG;AACJ;AAEO,IAAMG,gBAAN,cAA4BX,WAAAA;EAlBnC,OAkBmCA;;;EAC/B,YAAYK,SAA8D;AACtE,UAAM;MAAEH,MAAMG,QAAQH,QAAQ;MAAmB,GAAGG;IAAQ,CAAA;AAC5D,SAAKI,OAAO;EAChB;AACJ;AAEO,IAAMG,oBAAN,cAAgCZ,WAAAA;EAzBvC,OAyBuCA;;;EACnC,YAAYK,SAA8D;AACtE,UAAM;MAAEH,MAAMG,QAAQH,QAAQ;MAAuB,GAAGG;IAAQ,CAAA;AAChE,SAAKI,OAAO;EAChB;AACJ;AAEO,IAAMI,oBAAN,cAAgCb,WAAAA;EAhCvC,OAgCuCA;;;EACnC,YAAYK,SAA8D;AACtE,UAAM;MAAEH,MAAMG,QAAQH,QAAQ;MAAuB,GAAGG;IAAQ,CAAA;AAChE,SAAKI,OAAO;EAChB;AACJ;AAEO,IAAMK,qBAAN,cAAiCd,WAAAA;EAvCxC,OAuCwCA;;;EACpC,YAAYK,SAA8D;AACtE,UAAM;MAAEH,MAAMG,QAAQH,QAAQ;MAAwB,GAAGG;IAAQ,CAAA;AACjE,SAAKI,OAAO;EAChB;AACJ;AAEO,SAASM,iBAAiBC,OAAc;AAC3C,MAAI,EAAEA,iBAAiBhB,aAAa;AAChC,WAAOgB,iBAAiBf,QAAQe,MAAMV,UAAUW,OAAOD,KAAAA;EAC3D;AAEA,QAAME,QAAQ;IAAC,GAAGF,MAAMd,IAAI,KAAKc,MAAMV,OAAO;;AAC9C,MAAIU,MAAMb,aAAce,OAAMC,KAAK,kBAAkBH,MAAMb,YAAY,EAAE;AACzE,MAAIa,MAAMN,QAASQ,OAAMC,KAAK,SAASH,MAAMN,OAAO,EAAE;AACtD,SAAOQ,MAAME,KAAK,IAAA;AACtB;AATgBL;","names":["WextsError","Error","code","suggestedFix","docsSlug","options","message","cause","undefined","name","docsUrl","WextsRpcError","WextsCodegenError","WextsRuntimeError","WextsSecurityError","formatWextsError","error","String","lines","push","join"]}