@hexadrop/either
Version:
Hexagonal architecture utils library
2 lines • 1.1 kB
JavaScript
var h=class r{constructor(t){this.value=t}static left(t){return t||t===0?new r({kind:"left",leftValue:t}):new r({kind:"left",leftValue:void 0})}static right(t){return t||t===0?new r({kind:"right",rightValue:t}):new r({kind:"right",rightValue:void 0})}flatMapLeft(t){return this.fold(e=>t(e),e=>r.right(e))}flatMapRight(t){return this.fold(e=>r.left(e),e=>t(e))}fold(t,e){switch(this.value.kind){case"left":return t(this.value.leftValue);case"right":return e(this.value.rightValue)}}getLeft(t){let e=()=>{throw t?new Error(t):new Error(`The value is right: ${JSON.stringify(this.value)}`)};return this.fold(i=>i,()=>e())}getLeftOrElse(t){return this.fold(e=>e,()=>t)}getRight(t){let e=()=>{throw t?new Error(t):new Error(`The value is left: ${JSON.stringify(this.value)}`)};return this.fold(()=>e(),i=>i)}getRightOrElse(t){return this.fold(()=>t,e=>e)}isLeft(){return this.value.kind==="left"}isRight(){return this.value.kind==="right"}mapLeft(t){return this.flatMapLeft(e=>r.left(t(e)))}mapRight(t){return this.flatMapRight(e=>r.right(t(e)))}};export{h as default};
//# sourceMappingURL=either.js.map