UNPKG

@ehrelein/nothrow

Version:
30 lines (28 loc) 1.3 kB
interface Helper<T> { readonly flat: unknown; map<U>(fn: (arg: T) => U): Result<U>; log(): Result<T>; log(end: number): Result<T>; log(start: number, end: number): Result<T>; slice(): string; slice(end: number): string; slice(start: number, end: number): string; } interface OkResult<T> extends Helper<T> { readonly ok: true; readonly invert: null; readonly value: T; } interface ErrResult<T> extends Helper<T> { readonly ok: false; readonly invert: true; readonly error: Error; } type Result<T> = OkResult<T> | ErrResult<T>; declare function Ok<T>(value: T): Result<T>; declare function Err(error: Error | string): Result<never>; declare function safeCall<TArgs extends unknown[], TReturn>(fn: (...args: TArgs) => Promise<TReturn>, ...args: TArgs): Promise<Result<Awaited<TReturn>>>; declare function safeCall<TArgs extends unknown[], TReturn>(fn: (...args: TArgs) => TReturn, ...args: TArgs): Result<TReturn>; declare function wrap<TArgs extends unknown[], TReturn>(fn: (...args: TArgs) => Promise<TReturn>): (...args: TArgs) => Promise<Result<Awaited<TReturn>>>; declare function wrap<TArgs extends unknown[], TReturn>(fn: (...args: TArgs) => TReturn): (...args: TArgs) => Result<TReturn>; export { Err, Ok, type Result, safeCall, wrap };