UNPKG

ts-data-forge

Version:

[![npm version](https://img.shields.io/npm/v/ts-data-forge.svg)](https://www.npmjs.com/package/ts-data-forge) [![npm downloads](https://img.shields.io/npm/dm/ts-data-forge.svg)](https://www.npmjs.com/package/ts-data-forge) [![License](https://img.shields.

41 lines (38 loc) 1.15 kB
import { isOk } from './result-is-ok.mjs'; import { ok } from './result-ok.mjs'; /** * Combines two `Result` values into a single `Result` containing a tuple. If * either `Result` is `Err`, returns the first `Err` encountered. * * @example * * ```ts * const first = Result.ok('left'); * * const second = Result.ok(1); * * const expected = ['left', 1] as const; * * assert.deepStrictEqual(Result.zip(first, second), Result.ok(expected)); * * assert.deepStrictEqual( * Result.zip(first, Result.err('error')), * Result.err('error'), * ); * ``` * * @template S1 The success type of the first `Result`. * @template E1 The error type of the first `Result`. * @template S2 The success type of the second `Result`. * @template E2 The error type of the second `Result`. * @param resultA The first `Result`. * @param resultB The second `Result`. * @returns A `Result` containing a tuple of both values, or the first `Err`. */ const zip = (resultA, resultB) => isOk(resultA) ? isOk(resultB) ? ok([resultA.value, resultB.value]) : resultB : resultA; export { zip }; //# sourceMappingURL=result-zip.mjs.map