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.

37 lines (34 loc) 1.27 kB
import { err } from './ternary-result-err.mjs'; import { isOk } from './ternary-result-is-ok.mjs'; import { isWarn } from './ternary-result-is-warn.mjs'; import { ok } from './ternary-result-ok.mjs'; import { warn } from './ternary-result-warn.mjs'; function fold(...args) { switch (args.length) { case 4: { const [result, mapOk, mapWarn, mapErr] = args; return foldImpl(result, mapOk, mapWarn, mapErr); } case 3: { const [mapOk, mapWarn, mapErr] = args; return (result) => foldImpl(result, mapOk, mapWarn, mapErr); } } } const foldImpl = (result, mapOk, mapWarnFn, mapErrFn) => { if (isOk(result)) { // eslint-disable-next-line total-functions/no-unsafe-type-assertion return ok(mapOk(result.value)); } if (isWarn(result)) { return warn( // eslint-disable-next-line total-functions/no-unsafe-type-assertion mapOk(result.value), // eslint-disable-next-line total-functions/no-unsafe-type-assertion mapWarnFn(result.warning)); } // eslint-disable-next-line total-functions/no-unsafe-type-assertion return err(mapErrFn(result.value)); }; export { fold }; //# sourceMappingURL=ternary-result-fold.mjs.map