{"version":3,"sources":["../../../../src/api/base/errors.ts"],"sourcesContent":["import type { PipeErrorHandler } from './types'\n\ntype PipeErrorMessage = { message: string; path?: string; value: unknown }\n\nfunction formatError(message: PipeErrorMessage) {\n\treturn `${message.path ? `${message.path}: ` : ''}${message.message}`\n}\n\nexport class PipeError {\n\tconstructor(public messages: PipeErrorMessage[]) {}\n\n\ttoString() {\n\t\treturn this.messages.map(formatError).join('\\n')\n\t}\n\n\tstatic root(message: string, value: unknown, path?: string) {\n\t\treturn new PipeError([{ message, path, value }])\n\t}\n\n\tstatic rootFrom(errors: PipeError[]) {\n\t\treturn new PipeError(errors.flatMap((error) => error.messages))\n\t}\n\n\tstatic path(path: PropertyKey, key: string, error: PipeError) {\n\t\tif (path === undefined || path === null) return error\n\t\treturn new PipeError(\n\t\t\terror.messages.map((message) => ({\n\t\t\t\t...message,\n\t\t\t\tpath: message.path\n\t\t\t\t\t?.split('.')\n\t\t\t\t\t.map((p) => (p == key ? path.toString() : p))\n\t\t\t\t\t.join('.'),\n\t\t\t})),\n\t\t)\n\t}\n\n\tstatic wrap(path: PropertyKey, error: PipeError) {\n\t\tif (path === undefined || path === null) return error\n\t\treturn new PipeError(\n\t\t\terror.messages.map((message) => ({\n\t\t\t\t...message,\n\t\t\t\tpath: [path.toString(), message.path].filter(Boolean).join('.'),\n\t\t\t})),\n\t\t)\n\t}\n}\n\nexport function createErrorHandler(input: string, type: 'return' | 'throw' | 'assign'): PipeErrorHandler {\n\tconst handler: PipeErrorHandler = Object.assign(\n\t\t(...args: Parameters<PipeErrorHandler>) =>\n\t\t\t(lines: string[]) => {\n\t\t\t\tswitch (type) {\n\t\t\t\t\tcase 'return':\n\t\t\t\t\tcase 'throw':\n\t\t\t\t\t\treturn [`if (${args[0]}) ${handler.format(args[1])}`, ...lines]\n\t\t\t\t\tcase 'assign':\n\t\t\t\t\t\treturn [\n\t\t\t\t\t\t\t`if (${args[0]}) ${handler.format(args[1])}`,\n\t\t\t\t\t\t\t...(lines.length ? [`else {`, ...lines.map((l) => `\t${l}`), `}`] : []),\n\t\t\t\t\t\t]\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tthrow new Error(`Unknown error handling type: ${type satisfies never}`)\n\t\t\t\t}\n\t\t\t},\n\t\t{\n\t\t\ttype,\n\t\t\tformat: (error: string) => {\n\t\t\t\tswitch (type) {\n\t\t\t\t\tcase 'return':\n\t\t\t\t\t\treturn `return ${error}`\n\t\t\t\t\tcase 'throw':\n\t\t\t\t\t\treturn `throw ${error}`\n\t\t\t\t\tcase 'assign':\n\t\t\t\t\t\treturn `${input} = ${error}`\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tthrow new Error(`Unknown error handling type: ${type satisfies never}`)\n\t\t\t\t}\n\t\t\t},\n\t\t},\n\t)\n\n\treturn handler\n}\n"],"mappings":"AAIA,SAASA,EAAYC,EAA2B,CAC/C,MAAO,GAAGA,EAAQ,KAAO,GAAGA,EAAQ,IAAI,KAAO,EAAE,GAAGA,EAAQ,OAAO,EACpE,CAEO,MAAMC,CAAU,CACtB,YAAmBC,EAA8B,CAA9B,cAAAA,CAA+B,CAElD,UAAW,CACV,OAAO,KAAK,SAAS,IAAIH,CAAW,EAAE,KAAK;AAAA,CAAI,CAChD,CAEA,OAAO,KAAKC,EAAiBG,EAAgBC,EAAe,CAC3D,OAAO,IAAIH,EAAU,CAAC,CAAE,QAAAD,EAAS,KAAAI,EAAM,MAAAD,CAAM,CAAC,CAAC,CAChD,CAEA,OAAO,SAASE,EAAqB,CACpC,OAAO,IAAIJ,EAAUI,EAAO,QAASC,GAAUA,EAAM,QAAQ,CAAC,CAC/D,CAEA,OAAO,KAAKF,EAAmBG,EAAaD,EAAkB,CAC7D,OAA0BF,GAAS,KAAaE,EACzC,IAAIL,EACVK,EAAM,SAAS,IAAKN,IAAa,CAChC,GAAGA,EACH,KAAMA,EAAQ,MACX,MAAM,GAAG,EACV,IAAKQ,GAAOA,GAAKD,EAAMH,EAAK,SAAS,EAAII,CAAE,EAC3C,KAAK,GAAG,CACX,EAAE,CACH,CACD,CAEA,OAAO,KAAKJ,EAAmBE,EAAkB,CAChD,OAA0BF,GAAS,KAAaE,EACzC,IAAIL,EACVK,EAAM,SAAS,IAAKN,IAAa,CAChC,GAAGA,EACH,KAAM,CAACI,EAAK,SAAS,EAAGJ,EAAQ,IAAI,EAAE,OAAO,OAAO,EAAE,KAAK,GAAG,CAC/D,EAAE,CACH,CACD,CACD,CAEO,SAASS,EAAmBC,EAAeC,EAAuD,CACxG,MAAMC,EAA4B,OAAO,OACxC,IAAIC,IACFC,GAAoB,CACpB,OAAQH,EAAM,CACb,IAAK,SACL,IAAK,QACJ,MAAO,CAAC,OAAOE,EAAK,CAAC,CAAC,KAAKD,EAAQ,OAAOC,EAAK,CAAC,CAAC,CAAC,GAAI,GAAGC,CAAK,EAC/D,IAAK,SACJ,MAAO,CACN,OAAOD,EAAK,CAAC,CAAC,KAAKD,EAAQ,OAAOC,EAAK,CAAC,CAAC,CAAC,GAC1C,GAAIC,EAAM,OAAS,CAAC,SAAU,GAAGA,EAAM,IAAKC,GAAM,IAAIA,CAAC,EAAE,EAAG,GAAG,EAAI,CAAC,CACrE,EACD,QACC,MAAM,IAAI,MAAM,gCAAgCJ,CAAoB,EAAE,CACxE,CACD,EACD,CACC,KAAAA,EACA,OAASL,GAAkB,CAC1B,OAAQK,EAAM,CACb,IAAK,SACJ,MAAO,UAAUL,CAAK,GACvB,IAAK,QACJ,MAAO,SAASA,CAAK,GACtB,IAAK,SACJ,MAAO,GAAGI,CAAK,MAAMJ,CAAK,GAC3B,QACC,MAAM,IAAI,MAAM,gCAAgCK,CAAoB,EAAE,CACxE,CACD,CACD,CACD,EAEA,OAAOC,CACR","names":["formatError","message","PipeError","messages","value","path","errors","error","key","p","createErrorHandler","input","type","handler","args","lines","l"]}