safe-result
Version:
Create safe results that are either successes or failures
80 lines • 2.4 kB
TypeScript
import { FailureResult, SuccessAndFailureResult, SuccessResult } from './result';
import type { ValueType } from './types';
/**
* Creates a `Promise` that resovles after all values have either resolved or
* rejected.
*
* @note The returned [[SuccessAndFailureResult]] object can indicate being
* both a `success` and `failure`.
*
* If `SuccessAndFailureResult.success` is `true` there are one or more resovled
* promises.
*
* Likewise, if `SuccessAndFailureResult.failure` is `true` there are one or
* more rejected promises.
*
* @example
*
* ```ts
* const args = [
* Promise.resolve(success(1)),
* Promise.resolve(success(2)),
* Promise.reject(failure(new Error('First failure'))),
* ]
*
* const res = await Result.allSettled(args)
*
* if (res.success) { // Will be `true` in this case
* console.log('Values:', res.result.join(', '))
* // Values: 1, 2
* }
*
* if (res.failure) { // Will also be true in this case
* console.error('Errors:', res.error.map((e) => e.message).join(', '))
* // Errors: First failure
* }
* ```
*
* @param values
*/
export declare function allSettled<T>(values: Array<T | Promise<T>>): Promise<SuccessAndFailureResult<ValueType<T>[], Error[]>>;
/**
* Creates a `Promise` that resolves to either a [[SuccessResult]] or a
* [[FailureResult]].
*
* This behaves pretty much the same as `Promise.all()`, so it will abort and
* return a [[FailureResult]] as soon as a value is a rejected value.
*
* @example _Example with all resolved promises_
*
* ```ts
* const values = [Promise.resolve(1), Promise.resolve(2), Promise.resolve(3)]
* const [res, err] = (await Result.all(values)).unwrap()
*
* if (err) { // This will never be `true` in this case
* return
* }
*
* console.log(
* res.map((num) => `Result ${num}`).join(', ')
* )
*
* // Result 1, Result 2, Result 3
* ```
*
* @example _Example where one or more promises are rejected_
*
* ```ts
* const values = [Promise.resolve(1), Promise.reject(2), Promise.resolve(3)]
* const [res, err] = (await Result.all(values)).unwrap()
*
* if (err) { // This will always be `true` in this case
* console.error('An error occured:', err.message)
* return
* }
* ```
*
* @param values
*/
export declare function all<T>(values: (T | PromiseLike<T>)[]): Promise<SuccessResult<ValueType<T>[]> | FailureResult>;
//# sourceMappingURL=collection.d.ts.map