perlica
Version:
> [!WARNING] > 🚧 Work in progress!
4 lines (2 loc) • 4.24 kB
JavaScript
var m=Object.defineProperty;var E=(t,e)=>{for(var i in e)m(t,i,{get:e[i],enumerable:!0,configurable:!0,set:(f)=>e[i]=()=>f})};var c={};E(c,{tryPromise:()=>g,tryCatch:()=>y,ok:()=>s,isOk:()=>T,isErr:()=>a,fromOption:()=>k,fromNullable:()=>b,err:()=>o,bind:()=>N,ResultProto:()=>O});var v={};E(v,{OnceIterator:()=>p});class p{value;done=!1;constructor(t){this.value=t}next(t){if(this.done)return{done:!0,value:t};return this.done=!0,{done:!1,value:this.value}}[Symbol.iterator](){return new p(this.value)}}var R={};E(R,{tryPromise:()=>x,tryCatch:()=>_,some:()=>u,none:()=>n,isSome:()=>r,isNone:()=>l,fromResult:()=>d,fromNullable:()=>U,bind:()=>w,OptionProto:()=>h});var r=(t)=>t.tag==="some",l=(t)=>t.tag==="none",h=()=>({and(t){return r(this)?t:n()},andThen(t){return r(this)?t(this.value):n()},expect(t){if(r(this))return this.value;else throw new Error(t)},filter(t){return l(this)?n():t(this.value)?this:n()},flatten(){return r(this)?this.value:n()},inspect(t){if(r(this))return t(this.value),u(this.value);else return n()},isNone(){return l(this)},isNoneOr(t){return l(this)||t(this.value)},isSome(){return r(this)},isSomeAnd(t){return l(this)?!1:t(this.value)},map(t){return r(this)?u(t(this.value)):n()},mapOr(t,e){return r(this)?e(this.value):t},mapOrElse(t,e){return r(this)?e(this.value):t()},okOr(t){return r(this)?s(this.value):o(t)},okOrElse(t){return r(this)?s(this.value):o(t())},or(t){return r(this)?this:t},orElse(t){return r(this)?this:t()},transpose(){return l(this)?s(n()):a(this.value)?o(this.value.value):s(u(this.value.value))},unwrap(){if(r(this))return this.value;else throw new Error("called `Option.unwrap()` on a `None` value")},unwrapOr(t){return r(this)?this.value:t},unwrapOrElse(t){return r(this)?this.value:t()},xor(t){return r(this)&&r(t)?this:l(this)&&r(t)?t:n()},[Symbol.iterator](){return new p(this)}}),U=(t)=>t==null?n():u(t),d=(t)=>t.ok(),_=(t)=>{try{return u(t())}catch(e){return n()}},x=async(t)=>t.then((e)=>u(e)).catch((e)=>n()),u=(t)=>{let e=Object.create(h());return e.value=t,e.tag="some",e},n=()=>{let t=Object.create(h());return t.tag="none",t},w=(t)=>{let e=t(),i=e.next();while(!0){if(i.done)return u(i.value);if(r(i.value))i=e.next(i.value.value);else return i.value}};var T=(t)=>t.tag==="ok",a=(t)=>t.tag==="err",O=()=>({and(t){return T(this)?s(t(this.value)):o(this.value)},andThen(t){return T(this)?t(this.value):o(this.value)},err(){return a(this)?u(this.value):n()},expect(t){if(T(this))return this.value;else throw new Error(t)},expectErr(t){if(a(this))return this.value;else throw new Error(t)},flatten(){return this.andThen((t)=>t)},inspect(t){if(T(this))return t(this.value),s(this.value);else return o(this.value)},inspectErr(t){if(a(this))return t(this.value),o(this.value);else return s(this.value)},isErr(){return a(this)},isErrAnd(t){return a(this)&&t(this.value)},isOk(){return T(this)},isOkAnd(t){return T(this)&&t(this.value)},map(t){return T(this)?s(t(this.value)):o(this.value)},mapErr(t){return a(this)?o(t(this.value)):s(this.value)},mapOr(t,e){return T(this)?e(this.value):t},mapOrElse(t,e){return T(this)?e(this.value):t(this.value)},ok(){return T(this)?u(this.value):n()},or(t){return a(this)?o(t(this.value)):s(this.value)},orElse(t){return a(this)?t(this.value):s(this.value)},transpose(){return a(this)?u(o(this.value)):l(this.value)?n():u(s(this.value.value))},unwrap(){if(T(this))return this.value;else throw new Error(`called \`Result.unwrap()\` on an \`Err\` value: ${String(this.value)}`)},unwrapErr(){if(a(this))return this.value;else throw new Error(`called \`Result.unwrap()\` on an \`Ok\` value: ${String(this.value)}`)},unwrapOr(t){return T(this)?this.value:t},unwrapOrElse(t){return T(this)?this.value:t(this.value)},[Symbol.iterator](){return new p(this)}}),b=(t,e)=>t==null?o(e()):s(t),k=(t,e)=>t.okOr(e()),y=(t)=>{try{return s(t())}catch(e){return o(e)}},g=async(t)=>t.then((e)=>s(e)).catch((e)=>o(e)),s=(t)=>{let e=Object.create(O());return e.value=t,e.tag="ok",e},o=(t)=>{let e=Object.create(O());return e.value=t,e.tag="err",e},N=(t)=>{let e=t(),i=e.next();while(!0){if(i.done)return s(i.value);if(T(i.value))i=e.next(i.value.value);else return i.value}};export{c as Result,R as Option,v as Iterator};
//# debugId=693B3DD2DDD0CDA764756E2164756E21