@remcostoeten/fync
Version:
Unified TypeScript library for 9 popular APIs with consistent functional architecture
31 lines • 1.21 kB
TypeScript
/**
* Result type for predictable error handling
* Following the pattern specified in architecture.md
*/
type TSuccess<T> = {
ok: true;
value: T;
};
type TFailure<E = string> = {
ok: false;
error: E;
};
export type TResult<T, E = string> = TSuccess<T> | TFailure<E>;
export type TApiError = {
message: string;
statusCode?: number;
details?: Record<string, any>;
};
/**
* Helper functions for creating and handling results
*/
export declare function success<T>(value: T): TSuccess<T>;
export declare function failure<E = string>(error: E): TFailure<E>;
export declare function isSuccess<T, E>(result: TResult<T, E>): result is TSuccess<T>;
export declare function isFailure<T, E>(result: TResult<T, E>): result is TFailure<E>;
export declare function unwrap<T, E>(result: TResult<T, E>): T;
export declare function unwrapOr<T, E>(result: TResult<T, E>, defaultValue: T): T;
export declare function mapResult<T, U, E>(result: TResult<T, E>, fn: (value: T) => U): TResult<U, E>;
export declare function tryCatch<T>(fn: () => Promise<T>, errorTransform?: (error: any) => string | TApiError): Promise<TResult<T, string | TApiError>>;
export {};
//# sourceMappingURL=result.d.ts.map