{"version":3,"file":"try-catch.mjs","sources":["../../src/utilities/try-catch.ts"],"sourcesContent":["/**\n * Successful result returned by {@link tryCatch}.\n */\nexport type Success<T> = {\n  data: T;\n  error: null;\n};\n\n/**\n * Failed result returned by {@link tryCatch}.\n */\nexport type Failure<E> = {\n  data: null;\n  error: E;\n};\n\n/**\n * Discriminated result shape returned by {@link tryCatch}.\n */\nexport type Result<T, E = Error> = Success<T> | Failure<E>;\n\n/**\n * Resolves a promise into a result object instead of throwing on rejection.\n *\n * This is mainly useful for flattening async control flow when you want to avoid repetitive or\n * nested `try/catch` blocks around promise-based work.\n *\n * @param promise The promise to resolve.\n * @returns An object with either `data` or `error` populated.\n */\nexport async function tryCatch<T, E = Error>(promise: Promise<T>): Promise<Result<T, E>> {\n  try {\n    const data = await promise;\n    return { data, error: null };\n  } catch (error) {\n    return { data: null, error: error as E };\n  }\n}\n"],"names":["tryCatch","promise","error"],"mappings":"AA8BA,eAAsBA,EAAuBC,GAA4C;AACvF,MAAI;AAEF,WAAO,EAAE,MADI,MAAMA,GACJ,OAAO,KAAA;AAAA,EACxB,SAASC,GAAO;AACd,WAAO,EAAE,MAAM,MAAM,OAAAA,EAAA;AAAA,EACvB;AACF;"}