ts-data-forge
Version:
[](https://www.npmjs.com/package/ts-data-forge) [](https://www.npmjs.com/package/ts-data-forge) [ • 1.27 kB
JavaScript
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