import { GenericCallback } from "../models.mjs"; //#region src/result/models.d.ts /** * An unknown result */ type AnyResult = Err | ExtendedErr | Ok; /** * An error result */ type Err = { ok: false; error: Error; }; /** * An extended error result */ type ExtendedErr = Err & { original: Error; }; /** * An extended, unknown result */ type ExtendedResult = ExtendedErr | Ok; /** * A successful result */ type Ok = { ok: true; value: Value; }; /** * An unknown result */ type Result = Err | Ok; /** * Match callbacks for a result */ type ResultMatch = { /** * Callback for error result * * @param error Error value * @param original Original error, if available * @returns Value to return */ error: (error: E, original?: Error) => Returned; /** * Callback for ok result * * @param value Ok value * @returns Value to return */ ok: (value: Value) => Returned; }; /** * Unwrap a result value */ type UnwrapResult> = Original extends Ok ? Value : never; /** * Unwrap any value */ type UnwrapValue = Original extends GenericCallback ? ReturnType extends Result ? UnwrapResult> : ReturnType : Original extends Result ? UnwrapResult : Original extends Promise ? Awaited : Original; //#endregion export { AnyResult, Err, ExtendedErr, ExtendedResult, Ok, Result, ResultMatch, UnwrapValue };