ts-data-forge
Version:
[](https://www.npmjs.com/package/ts-data-forge) [](https://www.npmjs.com/package/ts-data-forge) [ • 1.29 kB
JavaScript
import { isOk } from './ternary-result-is-ok.mjs';
import { isWarn } from './ternary-result-is-warn.mjs';
import { warn } from './ternary-result-warn.mjs';
function flatMap(...args) {
switch (args.length) {
case 2: {
const [result, flatMapFn] = args;
return flatMapImpl(result, flatMapFn);
}
case 1: {
const [flatMapFn] = args;
return (result) => flatMapImpl(result, flatMapFn);
}
}
}
const flatMapImpl = (result, flatMapFn) => {
if (isOk(result)) {
// eslint-disable-next-line total-functions/no-unsafe-type-assertion
return flatMapFn(result.value);
}
if (isWarn(result)) {
const next = flatMapFn(
// eslint-disable-next-line total-functions/no-unsafe-type-assertion
result.value);
if (isOk(next)) {
return warn(next.value,
// eslint-disable-next-line total-functions/no-unsafe-type-assertion
result.warning);
}
if (isWarn(next)) {
return warn(next.value, next.warning);
}
return next;
}
// eslint-disable-next-line total-functions/no-unsafe-type-assertion
return result;
};
export { flatMap };
//# sourceMappingURL=ternary-result-flat-map.mjs.map