{"version":3,"file":"result.mjs","names":["result"],"sources":["../src/result.ts"],"sourcesContent":["import { isThenable } from \"./is-thenable.ts\";\n\nexport interface Ok<T> {\n\tvalue: T;\n\terror: null;\n}\n\nexport interface Err<E> {\n\tvalue: null;\n\terror: E;\n}\n\nexport type Result<T, E> = Ok<T> | Err<E>;\n\nexport function ok<T>(value: T): Ok<T> {\n\treturn { value, error: null };\n}\n\nexport function err<E>(error: E): Err<E> {\n\treturn { value: null, error };\n}\n\nexport function isOk<T, E>(result: Result<T, E>): result is Ok<T> {\n\treturn result.error == null;\n}\n\nexport function isErr<T, E>(result: Result<T, E>): result is Err<E> {\n\treturn result.error != null;\n}\n\nexport type MaybePromise<T> = T | Promise<T>;\n\nexport function result<T, E>(fn: () => Promise<T>): Promise<Result<T, E>>;\nexport function result<T, E>(fn: () => T): Result<T, E>;\nexport function result<T, E>(fn: () => MaybePromise<T>): MaybePromise<Result<T, E>> {\n\ttry {\n\t\tconst value = fn();\n\t\tif (isThenable(value)) {\n\t\t\treturn value.then(ok).catch(err<E>);\n\t\t}\n\t\treturn ok(value);\n\t} catch (error) {\n\t\treturn err(error as E);\n\t}\n}\n"],"mappings":";;;AAcA,SAAgB,GAAM,OAAiB;AACtC,QAAO;EAAE;EAAO,OAAO;EAAM;;AAG9B,SAAgB,IAAO,OAAkB;AACxC,QAAO;EAAE,OAAO;EAAM;EAAO;;AAG9B,SAAgB,KAAW,UAAuC;AACjE,QAAOA,SAAO,SAAS;;AAGxB,SAAgB,MAAY,UAAwC;AACnE,QAAOA,SAAO,SAAS;;AAOxB,SAAgB,OAAa,IAAuD;AACnF,KAAI;EACH,MAAM,QAAQ,IAAI;AAClB,MAAI,WAAW,MAAM,CACpB,QAAO,MAAM,KAAK,GAAG,CAAC,MAAM,IAAO;AAEpC,SAAO,GAAG,MAAM;UACR,OAAO;AACf,SAAO,IAAI,MAAW"}