@openstage/monadyssey-core 3.0.0-beta.2 → 3.0.0-beta.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/monadyssey.cjs +1 -1
- package/dist/monadyssey.cjs.map +1 -1
- package/dist/monadyssey.d.ts +266 -99
- package/dist/monadyssey.mjs +92 -13
- package/dist/monadyssey.mjs.map +1 -1
- package/dist/monadyssey.umd.js +1 -1
- package/dist/monadyssey.umd.js.map +1 -1
- package/package.json +1 -1
- package/readme.md +3 -2
package/dist/monadyssey.cjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});var e=class{static catch(e,r){try{return n.pure(e())}catch(e){return r?t.pure(r(e)):t.pure((e=>typeof e==`string`?e:e&&typeof e.message==`string`?e.message:String(e))(e))}}},t=class t extends e{type=`Left`;self=this;constructor(e){super(),this.value=e}static pure(e){return new t(e)}map(e){return this}mapLeft(e){return new t(e(this.value))}flatMap(e){return this}getOrElse(e){return e(this.value)}getOrNull(){return null}swap(){return n.pure(this.value)}fold(e,t){return e(this.value)}tap(e){return this}tapLeft(e){return e(this.value),this}},n=class n extends e{type=`Right`;self=this;constructor(e){super(),this.value=e}static pure(e){return new n(e)}map(e){return new n(e(this.value))}mapLeft(e){return this}flatMap(e){return e(this.value)}getOrElse(e){return this.value}getOrNull(){return this.value}swap(){return t.pure(this.value)}fold(e,t){return t(this.value)}tap(e){return e(this.value),this}tapLeft(e){return this}};function r(e){return e}var i=class{static ofNullable(e){return e==null?a.Instance:o.pure(e)}static pure(e){return o.pure(e)}map(e){return this.flatMap(t=>{let n=e(t);return n==null?a.Instance:o.pure(n)})}getOrNull(){return this.fold(()=>null,r)}getOrElse(e){return this.fold(()=>e(),r)}},a=class e extends i{type=`None`;self=this;static instance=new e;constructor(){super()}static get Instance(){return e.instance}flatMap(e){return this}filter(e){return this}fold(e,t){return e()}getOrElse(e){return e()}getOrNull(){return null}tap(e){return this}tapNone(e){return e(),this}},o=class e extends i{type=`Some`;self=this;constructor(e){super(),this.value=e}static pure(t){return new e(t)}flatMap(e){return e(this.value)}filter(e){return e(this.value)?this:a.Instance}fold(e,t){return t(this.value)}getOrElse(e){return this.value}getOrNull(){return this.value}tap(e){return e(this.value),this}tapNone(e){return this}},s=class r{constructor(e,t){this.head=e,this.tail=t}static pure(e){return new r(e,c.empty())}static fromArray(e){return!e||e.length===0?a.Instance:o.pure(new r(e[0],c._unsafeFromArray(e.slice(1))))}static _unsafeFromArray(e){return new r(e[0],c._unsafeFromArray(e.slice(1)))}static of(e,...t){return new r(e,c._unsafeFromArray(t))}get size(){return 1+this.tail.size}get last(){return this.tail.isEmpty?this.head:this.tail.last.value}get init(){return this.tail.isEmpty?c.empty():c._unsafeFromArray([this.head,...this.tail.toArray().slice(0,-1)])}get uncons(){return[this.head,this.tail]}toArray(){return[this.head,...this.tail.toArray()]}toList(){return c._unsafeFromArray(this.toArray())}get(e){return e<0||e>=this.size?a.Instance:e===0?o.pure(this.head):this.tail.get(e-1)}map(e){return new r(e(this.head),this.tail.map(e))}flatMap(e){let t=e(this.head),n=[];for(let t of this.tail.toArray()){let r=e(t);n.push(r.head,...r.tail.toArray())}return new r(t.head,c._unsafeFromArray([...t.tail.toArray(),...n]))}foldLeft(e,t){return this.tail.foldLeft(t(e,this.head),t)}foldRight(e,t){return t(this.head,this.tail.foldRight(e,t))}reduce(e){return this.tail.foldLeft(this.head,e)}forEach(e){e(this.head),this.tail.forEach(e)}count(e){return+!!e(this.head)+this.tail.count(e)}exists(e){return e(this.head)||this.tail.exists(e)}forall(e){return e(this.head)&&this.tail.forall(e)}contains(e,t=Object.is){return t(this.head,e)?!0:this.tail.contains(e,t)}find(e){return e(this.head)?o.pure(this.head):this.tail.find(e)}filter(e){let t=[];e(this.head)&&t.push(this.head);for(let n of this.tail.toArray())e(n)&&t.push(n);return c._unsafeFromArray(t)}filterNot(e){return this.filter(t=>!e(t))}collect(e){let t=[],n=e(this.head);n instanceof o&&t.push(n.value);for(let n of this.tail.toArray()){let r=e(n);r instanceof o&&t.push(r.value)}return c._unsafeFromArray(t)}partition(e){return this.toList().partition(e)}take(e){return this.toList().take(e)}drop(e){return this.toList().drop(e)}takeWhile(e){return this.toList().takeWhile(e)}dropWhile(e){return this.toList().dropWhile(e)}slice(e,t){return this.toList().slice(e,t)}append(e){return new r(this.head,c._unsafeFromArray([...this.tail.toArray(),e]))}prepend(e){return new r(e,c._unsafeFromArray([this.head,...this.tail.toArray()]))}concat(e){return new r(this.head,c._unsafeFromArray([...this.tail.toArray(),...e.toArray()]))}reverse(){let e=this.toArray().reverse();return new r(e[0],c._unsafeFromArray(e.slice(1)))}sort(e){let t=this.toArray().sort((t,n)=>e(t,n).value);return new r(t[0],c._unsafeFromArray(t.slice(1)))}sortBy(e,t){let n=this.toArray().sort((n,r)=>t(e(n),e(r)).value);return new r(n[0],c._unsafeFromArray(n.slice(1)))}distinct(e=Object.is){let t=this.toList().distinct(e).toArray();return new r(t[0],c._unsafeFromArray(t.slice(1)))}intersperse(e){if(this.tail.isEmpty)return this;let t=this.tail.toArray(),n=[];for(let r=0;r<t.length;r++)n.push(e,t[r]);return new r(this.head,c._unsafeFromArray(n))}mkString(e=``){return this.toArray().join(e)}zip(e){if(e instanceof r){let t=this.tail.toArray(),n=e.tail.toArray(),i=Math.min(t.length,n.length),a=Array(i);for(let e=0;e<i;e++)a[e]=[t[e],n[e]];return new r([this.head,e.head],c._unsafeFromArray(a))}return this.toList().zip(e)}zipWith(e,t){if(e instanceof r){let n=this.tail.toArray(),i=e.tail.toArray(),a=Math.min(n.length,i.length),o=Array(a);for(let e=0;e<a;e++)o[e]=t(n[e],i[e]);return new r(t(this.head,e.head),c._unsafeFromArray(o))}return this.toList().zipWith(e,t)}zipWithIndex(){let e=this.tail.toArray(),t=Array(e.length);for(let n=0;n<e.length;n++)t[n]=[e[n],n+1];return new r([this.head,0],c._unsafeFromArray(t))}groupBy(e){return this.toList().groupBy(e)}chunk(e){if(e<=0)throw Error(`NonEmptyList.chunk size must be positive.`);let t=this.toArray(),n=[];for(let i=0;i<t.length;i+=e){let a=t.slice(i,i+e);n.push(new r(a[0],c._unsafeFromArray(a.slice(1))))}return new r(n[0],c._unsafeFromArray(n.slice(1)))}traverse(s,l){if(s===O)return O.traverse(this.toArray(),l).map(e=>r._unsafeFromArray(e.toArray()));if(s===e){let e=l(this.head);if(e instanceof t)return e;let i=[];for(let e of this.tail.toArray()){let n=l(e);if(n instanceof t)return n;i.push(n.value)}return n.pure(new r(e.value,c._unsafeFromArray(i)))}if(s===i){let e=l(this.head);if(!(e instanceof o))return a.Instance;let t=[];for(let e of this.tail.toArray()){let n=l(e);if(!(n instanceof o))return a.Instance;t.push(n.value)}return o.pure(new r(e.value,c._unsafeFromArray(t)))}if(s===Promise){let e=l;return Promise.all([e(this.head),...this.tail.toArray().map(e)]).then(([e,...t])=>new r(e,c._unsafeFromArray(t)))}throw Error(`NonEmptyList.traverse: unknown effect type — expected IO, Either, Option, or Promise, got ${String(s)}`)}toString(){return`[${this.toArray().join(`, `)}]`}},c=class r{constructor(e){this._items=e}static _unsafeFromArray(e){return new r(e)}static empty(){return new r([])}static pure(e){return new r([e])}static of(...e){return new r(e.slice())}static fromArray(e){return new r(e.slice())}static fromNel(e){return new r(e.toArray())}static range(e,t,n=1){if(n===0)throw Error(`List.range step must be non-zero.`);let i=[];if(n>0)for(let r=e;r<t;r+=n)i.push(r);else for(let r=e;r>t;r+=n)i.push(r);return new r(i)}static fill(e,t){return e<=0?r.empty():new r(Array(e).fill(t))}get size(){return this._items.length}get isEmpty(){return this._items.length===0}get nonEmpty(){return this._items.length>0}get head(){return this._items.length===0?a.Instance:o.pure(this._items[0])}get last(){return this._items.length===0?a.Instance:o.pure(this._items[this._items.length-1])}get tail(){return this._items.length<=1?r.empty():new r(this._items.slice(1))}get init(){return this._items.length<=1?r.empty():new r(this._items.slice(0,-1))}get uncons(){if(this._items.length===0)return a.Instance;let e=[this._items[0],new r(this._items.slice(1))];return o.pure(e)}get(e){return e<0||e>=this._items.length?a.Instance:o.pure(this._items[e])}toArray(){return this._items.slice()}toNel(){return this._items.length===0?a.Instance:o.pure(new s(this._items[0],new r(this._items.slice(1))))}map(e){return new r(this._items.map(e))}flatMap(e){let t=[];for(let n of this._items)for(let r of e(n)._items)t.push(r);return new r(t)}flatten(){return this.flatMap(e=>e)}foldLeft(e,t){return this._items.reduce(t,e)}foldRight(e,t){return this._items.reduceRight((e,n)=>t(n,e),e)}reduce(e){if(this._items.length===0)return a.Instance;let t=this._items[0];for(let n=1;n<this._items.length;n++)t=e(t,this._items[n]);return o.pure(t)}forEach(e){for(let t of this._items)e(t)}count(e){let t=0;for(let n of this._items)e(n)&&t++;return t}exists(e){return this._items.some(e)}forall(e){return this._items.every(e)}contains(e,t=Object.is){for(let n of this._items)if(t(n,e))return!0;return!1}find(e){let t=this._items.findIndex(e);return t===-1?a.Instance:o.pure(this._items[t])}findIndex(e){let t=this._items.findIndex(e);return t===-1?a.Instance:o.pure(t)}filter(e){return new r(this._items.filter(e))}filterNot(e){return new r(this._items.filter(t=>!e(t)))}collect(e){let t=[];for(let n of this._items){let r=e(n);r instanceof o&&t.push(r.value)}return new r(t)}partition(e){let t=[],n=[];for(let r of this._items)(e(r)?t:n).push(r);return[new r(t),new r(n)]}take(e){return e<=0?r.empty():new r(this._items.slice(0,e))}drop(e){return e<=0?new r(this._items.slice()):new r(this._items.slice(e))}takeWhile(e){let t=[];for(let n of this._items){if(!e(n))break;t.push(n)}return new r(t)}dropWhile(e){let t=0;for(;t<this._items.length&&e(this._items[t]);)t++;return new r(this._items.slice(t))}slice(e,t){return new r(this._items.slice(Math.max(0,e),Math.max(0,t)))}append(e){return this._items.length===0?new s(e,r.empty()):new s(this._items[0],new r([...this._items.slice(1),e]))}prepend(e){return new s(e,new r(this._items.slice()))}concat(e){if(e instanceof s){let t=e.toArray();return this._items.length===0?new s(t[0],new r(t.slice(1))):new s(this._items[0],new r([...this._items.slice(1),...t]))}return new r([...this._items,...e._items])}reverse(){return new r(this._items.slice().reverse())}sort(e){return new r(this._items.slice().sort((t,n)=>e(t,n).value))}sortBy(e,t){return new r(this._items.slice().sort((n,r)=>t(e(n),e(r)).value))}distinct(e=Object.is){let t=[];for(let n of this._items)t.some(t=>e(t,n))||t.push(n);return new r(t)}intersperse(e){if(this._items.length<=1)return new r(this._items.slice());let t=[];for(let n=0;n<this._items.length;n++)n>0&&t.push(e),t.push(this._items[n]);return new r(t)}mkString(e=``){return this._items.join(e)}zip(e){let t=e instanceof s?e.toArray():e._items,n=Math.min(this._items.length,t.length),i=Array(n);for(let e=0;e<n;e++)i[e]=[this._items[e],t[e]];return new r(i)}zipWith(e,t){let n=Math.min(this._items.length,e._items.length),i=Array(n);for(let r=0;r<n;r++)i[r]=t(this._items[r],e._items[r]);return new r(i)}zipWithIndex(){let e=Array(this._items.length);for(let t=0;t<this._items.length;t++)e[t]=[this._items[t],t];return new r(e)}unzip(){let e=Array(this._items.length),t=Array(this._items.length);for(let n=0;n<this._items.length;n++)e[n]=this._items[n][0],t[n]=this._items[n][1];return[new r(e),new r(t)]}groupBy(e){let t=new Map;for(let n of this._items){let r=e(n),i=t.get(r);i?i.push(n):t.set(r,[n])}let n=new Map;for(let[e,i]of t)n.set(e,new s(i[0],new r(i.slice(1))));return n}chunk(e){if(e<=0)throw Error(`List.chunk size must be positive.`);let t=[];for(let n=0;n<this._items.length;n+=e){let i=this._items.slice(n,n+e);t.push(new s(i[0],new r(i.slice(1))))}return new r(t)}sliding(e){if(e<=0)throw Error(`List.sliding size must be positive.`);if(e>this._items.length)return r.empty();let t=[];for(let n=0;n+e<=this._items.length;n++){let i=this._items.slice(n,n+e);t.push(new s(i[0],new r(i.slice(1))))}return new r(t)}traverse(s,c){if(s===O)return O.traverse(this._items.slice(),c);if(s===e){let e=[];for(let n of this._items){let r=c(n);if(r instanceof t)return r;e.push(r.value)}return n.pure(new r(e))}if(s===i){let e=[];for(let t of this._items){let n=c(t);if(n instanceof o)e.push(n.value);else return a.Instance}return o.pure(new r(e))}if(s===Promise)return Promise.all(this._items.map(c)).then(e=>new r(e));throw Error(`List.traverse: unknown effect type — expected IO, Either, Option, or Promise, got ${String(s)}`)}toString(){return`[${this._items.join(`, `)}]`}},l=(e=3,t=1.2,n=1e3,r,i=0)=>({recurs:e,factor:t,delay:n,timeout:r,jitter:i}),u=(e,t,n)=>new Promise((r,i)=>{if(t.aborted){i(n(new v(`Operation was cancelled`)));return}let a=setTimeout(()=>{t.removeEventListener(`abort`,o),r()},e);function o(){clearTimeout(a),i(n(new v(`Operation was cancelled`)))}t.addEventListener(`abort`,o,{once:!0})}),d=class{policy;controller=new AbortController;constructor(e=l()){if(e.recurs!==1/0&&(!Number.isFinite(e.recurs)||e.recurs<1))throw new p(`Policy validation error: 'recurs' must be a positive number >= 1 (or Infinity)`);if(!Number.isFinite(e.factor)||e.factor<1)throw new p(`Policy validation error: 'factor' must be a finite number >= 1`);if(!Number.isFinite(e.delay)||e.delay<0)throw new p(`Policy validation error: 'delay' must be a finite non-negative number`);if(e.timeout!==void 0&&(!Number.isFinite(e.timeout)||e.timeout<0))throw new p(`Policy validation error: 'timeout' must be a finite non-negative number`);if(e.jitter!==void 0&&(!Number.isFinite(e.jitter)||e.jitter<0||e.jitter>1))throw new p(`Policy validation error: 'jitter' must be a finite number between 0 and 1`);this.policy=e}retryIf(e,t,n){let r=this.policy,i=this.controller.signal;return O.cancellable(async a=>{let o=new AbortController,s=()=>o.abort();if(a.aborted||i.aborted)throw n(new v(`Operation was cancelled`));a.addEventListener(`abort`,s,{once:!0}),i.addEventListener(`abort`,s,{once:!0});try{let i=0,a=r.delay;for(;i<r.recurs;){if(o.signal.aborted)throw n(new v(`Operation was cancelled`));let s=await this.withTimeout(e,n).unsafeRun();if(s.type===`Ok`)return s.value;let c=s.error,l;try{l=t(c)}catch(e){throw n(new h(`Retry condition threw: ${e instanceof Error?e.message:String(e)}`))}if(!l)throw n(new h(`Retry condition not met: ${c}`));if(i>=r.recurs-1)throw n(new g(`Retry limit reached without success: ${c}`));await u(this.applyJitter(a),o.signal,n),a*=r.factor,i++}throw n(new g(`Retry limit reached without success`))}finally{a.removeEventListener(`abort`,s),i.removeEventListener(`abort`,s)}},e=>f(e)?e:n(e instanceof Error?e:Error(String(e))))}repeat(e,t){let n=this.policy,r=this.controller.signal;return O.cancellable(async i=>{let a=new AbortController,o=()=>a.abort();if(i.aborted||r.aborted)throw t(new v(`Operation was cancelled`));i.addEventListener(`abort`,o,{once:!0}),r.addEventListener(`abort`,o,{once:!0});try{let r=!1,i,o=n.delay;for(let s=0;s<n.recurs;s++){if(a.signal.aborted)throw t(new v(`Operation was cancelled`));let c=await this.withTimeout(e,t).unsafeRun();if(c.type===`Ok`)r=!0,i=c.value,s<n.recurs-1&&(await u(this.applyJitter(o),a.signal,t),o*=n.factor);else throw t(new _(`Failed to execute repeat: ${c.error}`))}if(r)return i;throw t(new _(`The function provided never succeeded`))}finally{i.removeEventListener(`abort`,o),r.removeEventListener(`abort`,o)}},e=>f(e)?e:t(e instanceof Error?e:Error(String(e))))}withTimeout(e,t){let n=this.policy.timeout;return!n||n<1?e:O.lift(async()=>{let r=null,i=!1,a=new Promise((e,a)=>{r=setTimeout(()=>{i||(i=!0,a(t(new m(`The operation timed out after ${n} milliseconds`))))},n)}),o=e.unsafeRun().then(e=>{if(i)return e.type===`Ok`?e.value:Promise.reject(e.error);switch(i=!0,r&&clearTimeout(r),e.type){case`Ok`:return e.value;case`Err`:return Promise.reject(e.error)}});try{return await Promise.race([o,a])}catch(e){return r&&clearTimeout(r),Promise.reject(e)}})}cancel(){this.controller.abort()}applyJitter(e){if(!this.policy.jitter)return e;let t=e*this.policy.jitter,n=(Math.random()*2-1)*t;return Math.max(0,e+n)}},f=e=>!(e instanceof v||e instanceof g||e instanceof _||e instanceof h||e instanceof m||e instanceof p),p=class extends Error{constructor(e){super(e),this.name=`PolicyValidationError`}},m=class extends Error{constructor(e){super(e),this.name=`TimeoutError`}},h=class extends Error{constructor(e){super(e),this.name=`ConditionalRetryError`}},g=class extends Error{constructor(e){super(e),this.name=`RetryError`}},_=class extends Error{constructor(e){super(e),this.name=`RepeatError`}},v=class extends Error{constructor(e){super(e),this.name=`CancellationError`}},y=Symbol(`IO.node`),b=Symbol(`IO.escape`);function x(e){return{[b]:!0,error:e}}function S(e){return typeof e==`object`&&!!e&&b in e}var C=Symbol(`IO.cancelled`);function w(){throw{[C]:!0}}function T(e){return typeof e==`object`&&!!e&&C in e}function E(e){return e!=null&&typeof e.then==`function`}async function D(e,t){let n=[],r=e;for(;;){if(t?.aborted){let e=[];for(;n.length>0;){let t=n.pop();t.tag===`OnCancel`&&e.push(t.finalizer)}for(let t of e)try{let e=t();E(e)&&await e}catch{}return{type:`Cancelled`}}switch(r.tag){case`Map`:n.push({tag:`Map`,f:r.f}),r=r.io;break;case`FlatMap`:n.push({tag:`FlatMap`,f:r.f}),r=r.io;break;case`MapErr`:n.push({tag:`MapErr`,f:r.f}),r=r.io;break;case`FlatMapErr`:n.push({tag:`FlatMapErr`,f:r.f}),r=r.io;break;case`Tap`:n.push({tag:`Tap`,f:r.f}),r=r.io;break;case`TapErr`:n.push({tag:`TapErr`,f:r.f}),r=r.io;break;case`FoldM`:n.push({tag:`FoldM`,onOk:r.onOk,onErr:r.onErr}),r=r.io;break;case`Ensure`:n.push({tag:`Ensure`,predicate:r.predicate,liftE:r.liftE}),r=r.io;break;case`OnCancel`:n.push({tag:`OnCancel`,finalizer:r.finalizer}),r=r.io;break;case`Lift`:{let{run:e,liftE:n}=r;try{let n=e(t);r={tag:`Pure`,value:E(n)?await n:n}}catch(e){if(T(e)){r={tag:`Pure`,value:void 0};break}r={tag:`Fail`,error:n?n(e):e}}break}case`Pure`:{if(n.length===0)return{type:`Ok`,value:r.value};let e=n.pop();switch(e.tag){case`Map`:try{r={tag:`Pure`,value:e.f(r.value)}}catch(e){r={tag:`Fail`,error:e}}break;case`FlatMap`:try{r=e.f(r.value)[y]}catch(e){r={tag:`Fail`,error:e}}break;case`Tap`:try{let t=e.f(r.value);E(t)&&await t}catch{}break;case`Ensure`:{let t=r.value;try{e.predicate(t)||(r={tag:`Fail`,error:e.liftE(t)})}catch{r={tag:`Fail`,error:e.liftE(t)}}break}case`FoldM`:try{r=e.onOk(r.value)[y]}catch(e){r={tag:`Fail`,error:e}}break;case`MapErr`:case`FlatMapErr`:case`TapErr`:case`OnCancel`:break}break}case`Fail`:{if(n.length===0)return{type:`Err`,error:r.error};let e=n.pop();switch(e.tag){case`MapErr`:try{r={tag:`Fail`,error:e.f(r.error)}}catch(e){r={tag:`Fail`,error:e}}break;case`FlatMapErr`:try{r=e.f(r.error)[y]}catch(e){r={tag:`Fail`,error:e}}break;case`TapErr`:try{let t=e.f(r.error);E(t)&&await t}catch{}break;case`FoldM`:try{r=e.onErr(r.error)[y]}catch(e){r={tag:`Fail`,error:e}}break;case`Map`:case`FlatMap`:case`Tap`:case`Ensure`:case`OnCancel`:break}break}}}}var O=class e{[y];constructor(e){this[y]=e}static wrap(t){return new e(t)}static lift(t,n){return new e({tag:`Lift`,run:t,liftE:n})}static cancellable(t,n){return new e({tag:`Lift`,run:e=>t(e??new AbortController().signal),liftE:n})}static bracket(t,n,r){return e.lift(async e=>{let i=await D(t[y],e);if(i.type===`Cancelled`&&w(),i.type===`Err`)throw x(i.error);let a=i.value,o;try{o=await D(n(a)[y],e)}catch(e){throw await D(r(a)[y]).catch(()=>{}),e}if(await D(r(a)[y]).catch(()=>{}),o.type===`Cancelled`&&w(),o.type===`Err`)throw x(o.error);return o.value},e=>{if(T(e))throw e;return S(e)?e.error:e})}static pure(t){return new e({tag:`Pure`,value:t})}static fail(t){return new e({tag:`Fail`,error:t})}static unit=new e({tag:`Pure`,value:void 0});static ok(e){return{type:`Ok`,value:e}}static err(e){return{type:`Err`,error:e}}map(t){return e.wrap({tag:`Map`,io:this[y],f:t})}flatMap(t){return e.wrap({tag:`FlatMap`,io:this[y],f:t})}mapErr(t){return e.wrap({tag:`MapErr`,io:this[y],f:t})}bimap(e,t){return this.map(t).mapErr(e)}flatMapErr(t){return e.wrap({tag:`FlatMapErr`,io:this[y],f:t})}tap(t){return e.wrap({tag:`Tap`,io:this[y],f:t})}tapErr(t){return e.wrap({tag:`TapErr`,io:this[y],f:t})}ensure(t,n){return e.wrap({tag:`Ensure`,io:this[y],predicate:t,liftE:n})}onCancel(t){return e.wrap({tag:`OnCancel`,io:this[y],finalizer:t})}foldM(t,n){return e.wrap({tag:`FoldM`,io:this[y],onOk:n,onErr:t})}attempt(){return this.foldM(n=>e.pure(t.pure(n)),t=>e.pure(n.pure(t)))}ignore(){return this.foldM(()=>e.unit,()=>e.unit)}async unsafeRun(){return D(this[y])}async fold(e,t){let n=await this.unsafeRun();return n.type===`Ok`?t(n.value):e(n.error)}async getOrNull(){let e=await this.unsafeRun();return e.type===`Ok`?e.value:null}async getOrElse(e){let t=await this.unsafeRun();return t.type===`Ok`?t.value:e()}async getOrHandleErr(e){let t=await this.unsafeRun();return t.type===`Ok`?t.value:e(t.error)}retryIf(t,n,r=l()){return e.lift(()=>new d(r),e=>n(e instanceof Error?e:Error(String(e)))).flatMap(e=>e.retryIf(this,t,n))}timeout(t,n){let r=this[y];return e.lift(e=>new Promise((i,a)=>{let o=new AbortController,s;if(e)if(e.aborted)o.abort();else{let t=()=>o.abort();e.addEventListener(`abort`,t,{once:!0}),s=()=>e.removeEventListener(`abort`,t)}let c=!1,l=()=>{c=!0,s&&s()},u=setTimeout(()=>{c||(l(),o.abort(),a(x(n())))},t);D(r,o.signal).then(e=>{c||(l(),clearTimeout(u),e.type===`Ok`?i(e.value):e.type===`Cancelled`?a({[C]:!0}):a(x(e.error)))}),o.signal.addEventListener(`abort`,()=>{clearTimeout(u)},{once:!0})}),e=>{if(T(e))throw e;return S(e)?e.error:e})}fork(){let t=this[y];return e.lift(()=>{let e=new AbortController,n=D(t,e.signal);return{join:()=>n,cancel:async()=>{e.abort(),await n.catch(()=>{})},signal:e.signal}})}static parMapN(...t){if(t.length<3)return e.fail(s._unsafeFromArray([Error(`IO.parMapN requires at least two IO arguments and a combiner function`)]));let n=t.slice(0,-1),r=t[t.length-1];return e.lift(async e=>{let t=await Promise.all(n.map(t=>D(t[y],e)));t.some(e=>e.type===`Cancelled`)&&w();let i=t.filter(e=>e.type===`Err`).map(e=>e.error);if(i.length>0)throw x(s._unsafeFromArray(i));return r(...t.filter(e=>e.type===`Ok`).map(e=>e.value))},e=>S(e)?e.error:s._unsafeFromArray([e]))}static race(...t){return t.length===0?e.fail(s._unsafeFromArray([Error(`IO.race requires at least one IO argument`)])):e.lift(e=>new Promise((n,r)=>{let i=new AbortController,a;if(e)if(e.aborted)i.abort();else{let t=()=>i.abort();e.addEventListener(`abort`,t,{once:!0}),a=()=>e.removeEventListener(`abort`,t)}let o=0,c=!1,l=Array(t.length),u=()=>{c=!0,a&&a()};t.forEach((e,a)=>{D(e[y],i.signal).then(e=>{if(!c){if(e.type===`Ok`)u(),i.abort(),n(e.value);else if(e.type===`Err`){if(l[a]=e.error,o++,o===t.length){u();let e=l.filter(e=>e!==void 0);e.length>0?r(x(s._unsafeFromArray(e))):r({[C]:!0})}}else if(o++,o===t.length&&!c){u();let e=l.filter(e=>e!==void 0);e.length>0?r(x(s._unsafeFromArray(e))):r({[C]:!0})}}})})}),e=>{if(T(e))throw e;return S(e)?e.error:s._unsafeFromArray([e])})}static Do(t,n){let r=n;return e.lift(async e=>await t(async t=>{let n=await D(t[y],e);if(n.type===`Ok`)return n.value;throw n.type===`Cancelled`&&w(),x(n.error)}),e=>{if(T(e))throw e;return S(e)?e.error:r?r(e):e})}static traverse(t,n){return e.Do(async e=>{let r=[];for(let i of t)r.push(await e(n(i)));return c._unsafeFromArray(r)})}static parTraverse(t,n){return e.lift(async e=>{let r=await Promise.all(t.map(t=>D(n(t)[y],e)));r.some(e=>e.type===`Cancelled`)&&w();let i=r.filter(e=>e.type===`Err`).map(e=>e.error);if(i.length>0)throw x(s._unsafeFromArray(i));return c._unsafeFromArray(r.filter(e=>e.type===`Ok`).map(e=>e.value))},e=>S(e)?e.error:s._unsafeFromArray([e]))}static sequence(t){return e.traverse(t,e=>e)}static parSequence(t){return e.parTraverse(t,e=>e)}},k=class{static defer(e){return new j(e)}static pure(e){return new A(e)}static lazy(e){return new M(e)}map(e){return new P(this,e)}flatMap(e){return new N(this,e)}evaluate(){let e=this,t=[];for(;;)if(e instanceof N){let n=e.first;n instanceof N||n instanceof P?(t.push(e.f),e=n):e=e.f(n.value())}else if(e instanceof P){let n=[e.f],r=e.first;for(;r instanceof P;)n.push(r.f),r=r.first;let i=e=>{for(let t=n.length-1;t>=0;t--)e=n[t](e);return e};if(r instanceof N)t.push(e=>new A(i(e))),e=r;else{let n=i(r.value());if(t.length===0)return n;e=t.pop()(n)}}else{let n=e.value();if(t.length===0)return n;e=t.pop()(n)}}},A=class extends k{constructor(e){super(),this._value=e}value(){return this._value}},j=class extends k{constructor(e){super(),this.f=e}value(){return this.f()}},M=class extends k{_value;_evaluated=!1;constructor(e){super(),this.f=e}value(){return this._evaluated||=(this._value=this.f(),!0),this._value}},N=class extends k{constructor(e,t){super(),this.first=e,this.f=t}value(){throw new F(`FlatMap should not be evaluated directly`)}},P=class extends k{constructor(e,t){super(),this.first=e,this.f=t}value(){throw new F(`Map should not be evaluated directly`)}},F=class extends Error{constructor(e){super(),this.error=e,this.name=`EvaluationError`}},I=class e{constructor(e){this.f=e}static pure(t){return new e(()=>t)}map(t){return new e(e=>t(this.run(e)))}flatMap(t){return new e(e=>t(this.run(e)).run(e))}static ask(){return new e(e=>e)}static lift(e){return t=>t.map(e)}static parZip(...t){return new e(e=>t.map(t=>t.run(e)))}static local(t,n){return new e(e=>n.run(t(e)))}run(e){return this.f(e)}},L=class e{constructor(e,t){this.value=e,this.type=t}static LessThan=new e(-1,`LessThan`);static Equal=new e(0,`Equal`);static GreaterThan=new e(1,`GreaterThan`);flatMap(e){return this.type===`Equal`?e():this}match(e,t,n){switch(this.type){case`LessThan`:return e();case`Equal`:return t();case`GreaterThan`:return n()}}reverse(){switch(this.type){case`LessThan`:return e.GreaterThan;case`Equal`:return e.Equal;case`GreaterThan`:return e.LessThan}}tap(e){return e(this),this}concat(e){return this.type===`Equal`?e:this}static from(t){if(isNaN(t))throw Error(`Cannot convert NaN to Ordering.`);return t<0?e.LessThan:t>0?e.GreaterThan:e.Equal}static comparing(t,n){return(r,i)=>{let a=n(t(r),t(i));if(isNaN(a))throw Error(`Comparator function returned NaN.`);return e.from(a)}}static compareBy(...t){return(n,r)=>{for(let e of t){let t=e(n,r);if(t.type!==`Equal`)return t}return e.Equal}}},R=L.LessThan,z=L.Equal,B=L.GreaterThan;exports.CancellationError=v,exports.ConditionalRetryError=h,exports.EQ=z,exports.Either=e,exports.Eval=k,exports.EvaluationError=F,exports.GT=B,exports.IO=O,exports.LT=R,exports.Left=t,exports.List=c,exports.NonEmptyList=s,exports.None=a,exports.Option=i,exports.Ordering=L,exports.PolicyValidationError=p,exports.Reader=I,exports.RepeatError=_,exports.RetryError=g,exports.Right=n,exports.Schedule=d,exports.Some=o,exports.TimeoutError=m,exports.identity=r;
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});var e=class{static catch(e,r){try{return n.pure(e())}catch(e){return r?t.pure(r(e)):t.pure((e=>typeof e==`string`?e:e&&typeof e.message==`string`?e.message:String(e))(e))}}},t=class t extends e{type=`Left`;self=this;constructor(e){super(),this.value=e}static pure(e){return new t(e)}map(e){return this}mapLeft(e){return new t(e(this.value))}flatMap(e){return this}getOrElse(e){return e(this.value)}getOrNull(){return null}swap(){return n.pure(this.value)}fold(e,t){return e(this.value)}tap(e){return this}tapLeft(e){return e(this.value),this}},n=class n extends e{type=`Right`;self=this;constructor(e){super(),this.value=e}static pure(e){return new n(e)}map(e){return new n(e(this.value))}mapLeft(e){return this}flatMap(e){return e(this.value)}getOrElse(e){return this.value}getOrNull(){return this.value}swap(){return t.pure(this.value)}fold(e,t){return t(this.value)}tap(e){return e(this.value),this}tapLeft(e){return this}};function r(e){return e}var i=class{static ofNullable(e){return e==null?a.Instance:o.pure(e)}static pure(e){return o.pure(e)}map(e){return this.flatMap(t=>{let n=e(t);return n==null?a.Instance:o.pure(n)})}getOrNull(){return this.fold(()=>null,r)}getOrElse(e){return this.fold(()=>e(),r)}},a=class e extends i{type=`None`;self=this;static instance=new e;constructor(){super()}static get Instance(){return e.instance}flatMap(e){return this}filter(e){return this}fold(e,t){return e()}getOrElse(e){return e()}getOrNull(){return null}tap(e){return this}tapNone(e){return e(),this}},o=class e extends i{type=`Some`;self=this;constructor(e){super(),this.value=e}static pure(t){return new e(t)}flatMap(e){return e(this.value)}filter(e){return e(this.value)?this:a.Instance}fold(e,t){return t(this.value)}getOrElse(e){return this.value}getOrNull(){return this.value}tap(e){return e(this.value),this}tapNone(e){return this}},s=class r{constructor(e,t){this.head=e,this.tail=t}static pure(e){return new r(e,c.empty())}static from(e){let t=Array.from(e);return t.length===0?a.Instance:o.pure(new r(t[0],c._unsafeFromArray(t.slice(1))))}static _unsafeFromArray(e){return new r(e[0],c._unsafeFromArray(e.slice(1)))}static of(e,...t){return new r(e,c._unsafeFromArray(t))}get size(){return 1+this.tail.size}get last(){return this.tail.isEmpty?this.head:this.tail.last.value}get init(){return this.tail.isEmpty?c.empty():c._unsafeFromArray([this.head,...this.tail.toArray().slice(0,-1)])}get uncons(){return[this.head,this.tail]}toArray(){return[this.head,...this.tail.toArray()]}[Symbol.iterator](){return this.toArray()[Symbol.iterator]()}toList(){return c._unsafeFromArray(this.toArray())}get(e){return e<0||e>=this.size?a.Instance:e===0?o.pure(this.head):this.tail.get(e-1)}map(e){return new r(e(this.head),this.tail.map(e))}flatMap(e){let t=e(this.head),n=[];for(let t of this.tail.toArray()){let r=e(t);n.push(r.head,...r.tail.toArray())}return new r(t.head,c._unsafeFromArray([...t.tail.toArray(),...n]))}foldLeft(e,t){return this.tail.foldLeft(t(e,this.head),t)}foldRight(e,t){return t(this.head,this.tail.foldRight(e,t))}reduce(e){return this.tail.foldLeft(this.head,e)}forEach(e){e(this.head),this.tail.forEach(e)}count(e){return+!!e(this.head)+this.tail.count(e)}exists(e){return e(this.head)||this.tail.exists(e)}forall(e){return e(this.head)&&this.tail.forall(e)}contains(e,t=Object.is){return t(this.head,e)?!0:this.tail.contains(e,t)}find(e){return e(this.head)?o.pure(this.head):this.tail.find(e)}filter(e){let t=[];e(this.head)&&t.push(this.head);for(let n of this.tail.toArray())e(n)&&t.push(n);return c._unsafeFromArray(t)}filterNot(e){return this.filter(t=>!e(t))}collect(e){let t=[],n=e(this.head);n instanceof o&&t.push(n.value);for(let n of this.tail.toArray()){let r=e(n);r instanceof o&&t.push(r.value)}return c._unsafeFromArray(t)}partition(e){return this.toList().partition(e)}take(e){return this.toList().take(e)}drop(e){return this.toList().drop(e)}takeWhile(e){return this.toList().takeWhile(e)}dropWhile(e){return this.toList().dropWhile(e)}slice(e,t){return this.toList().slice(e,t)}append(e){return new r(this.head,c._unsafeFromArray([...this.tail.toArray(),e]))}prepend(e){return new r(e,c._unsafeFromArray([this.head,...this.tail.toArray()]))}concat(e){return new r(this.head,c._unsafeFromArray([...this.tail.toArray(),...e.toArray()]))}reverse(){let e=this.toArray().reverse();return new r(e[0],c._unsafeFromArray(e.slice(1)))}sort(e){let t=this.toArray().sort((t,n)=>e(t,n).value);return new r(t[0],c._unsafeFromArray(t.slice(1)))}sortBy(e,t){let n=this.toArray().sort((n,r)=>t(e(n),e(r)).value);return new r(n[0],c._unsafeFromArray(n.slice(1)))}distinct(e=Object.is){let t=this.toList().distinct(e).toArray();return new r(t[0],c._unsafeFromArray(t.slice(1)))}intersperse(e){if(this.tail.isEmpty)return this;let t=this.tail.toArray(),n=[];for(let r=0;r<t.length;r++)n.push(e,t[r]);return new r(this.head,c._unsafeFromArray(n))}mkString(e=``){return this.toArray().join(e)}zip(e){if(e instanceof r){let t=this.tail.toArray(),n=e.tail.toArray(),i=Math.min(t.length,n.length),a=Array(i);for(let e=0;e<i;e++)a[e]=[t[e],n[e]];return new r([this.head,e.head],c._unsafeFromArray(a))}return this.toList().zip(e)}zipWith(e,t){if(e instanceof r){let n=this.tail.toArray(),i=e.tail.toArray(),a=Math.min(n.length,i.length),o=Array(a);for(let e=0;e<a;e++)o[e]=t(n[e],i[e]);return new r(t(this.head,e.head),c._unsafeFromArray(o))}return this.toList().zipWith(e,t)}zipWithIndex(){let e=this.tail.toArray(),t=Array(e.length);for(let n=0;n<e.length;n++)t[n]=[e[n],n+1];return new r([this.head,0],c._unsafeFromArray(t))}groupBy(e){return this.toList().groupBy(e)}chunk(e){if(e<=0)throw Error(`NonEmptyList.chunk size must be positive.`);let t=this.toArray(),n=[];for(let i=0;i<t.length;i+=e){let a=t.slice(i,i+e);n.push(new r(a[0],c._unsafeFromArray(a.slice(1))))}return new r(n[0],c._unsafeFromArray(n.slice(1)))}traverse(s,l){if(s===O)return O.traverse(this.toArray(),l).map(e=>r._unsafeFromArray(e.toArray()));if(s===e){let e=l(this.head);if(e instanceof t)return e;let i=[];for(let e of this.tail.toArray()){let n=l(e);if(n instanceof t)return n;i.push(n.value)}return n.pure(new r(e.value,c._unsafeFromArray(i)))}if(s===i){let e=l(this.head);if(!(e instanceof o))return a.Instance;let t=[];for(let e of this.tail.toArray()){let n=l(e);if(!(n instanceof o))return a.Instance;t.push(n.value)}return o.pure(new r(e.value,c._unsafeFromArray(t)))}if(s===Promise){let e=l;return Promise.all([e(this.head),...this.tail.toArray().map(e)]).then(([e,...t])=>new r(e,c._unsafeFromArray(t)))}throw Error(`NonEmptyList.traverse: unknown effect type — expected IO, Either, Option, or Promise, got ${String(s)}`)}toString(){return`[${this.toArray().join(`, `)}]`}},c=class r{constructor(e){this._items=e}static _unsafeFromArray(e){return new r(e)}static empty(){return new r([])}static pure(e){return new r([e])}static of(...e){return new r(e.slice())}static from(e){return new r(Array.from(e))}static range(e,t,n=1){if(n===0)throw Error(`List.range step must be non-zero.`);let i=[];if(n>0)for(let r=e;r<t;r+=n)i.push(r);else for(let r=e;r>t;r+=n)i.push(r);return new r(i)}static fill(e,t){return e<=0?r.empty():new r(Array(e).fill(t))}get size(){return this._items.length}get isEmpty(){return this._items.length===0}get nonEmpty(){return this._items.length>0}get head(){return this._items.length===0?a.Instance:o.pure(this._items[0])}get last(){return this._items.length===0?a.Instance:o.pure(this._items[this._items.length-1])}get tail(){return this._items.length<=1?r.empty():new r(this._items.slice(1))}get init(){return this._items.length<=1?r.empty():new r(this._items.slice(0,-1))}get uncons(){if(this._items.length===0)return a.Instance;let e=[this._items[0],new r(this._items.slice(1))];return o.pure(e)}get(e){return e<0||e>=this._items.length?a.Instance:o.pure(this._items[e])}toArray(){return this._items.slice()}[Symbol.iterator](){return this._items[Symbol.iterator]()}toNel(){return this._items.length===0?a.Instance:o.pure(new s(this._items[0],new r(this._items.slice(1))))}map(e){return new r(this._items.map(e))}flatMap(e){let t=[];for(let n of this._items)for(let r of e(n)._items)t.push(r);return new r(t)}flatten(){return this.flatMap(e=>e)}foldLeft(e,t){return this._items.reduce(t,e)}foldRight(e,t){return this._items.reduceRight((e,n)=>t(n,e),e)}reduce(e){if(this._items.length===0)return a.Instance;let t=this._items[0];for(let n=1;n<this._items.length;n++)t=e(t,this._items[n]);return o.pure(t)}forEach(e){for(let t of this._items)e(t)}count(e){let t=0;for(let n of this._items)e(n)&&t++;return t}exists(e){return this._items.some(e)}forall(e){return this._items.every(e)}contains(e,t=Object.is){for(let n of this._items)if(t(n,e))return!0;return!1}find(e){let t=this._items.findIndex(e);return t===-1?a.Instance:o.pure(this._items[t])}findIndex(e){let t=this._items.findIndex(e);return t===-1?a.Instance:o.pure(t)}filter(e){return new r(this._items.filter(e))}filterNot(e){return new r(this._items.filter(t=>!e(t)))}collect(e){let t=[];for(let n of this._items){let r=e(n);r instanceof o&&t.push(r.value)}return new r(t)}partition(e){let t=[],n=[];for(let r of this._items)(e(r)?t:n).push(r);return[new r(t),new r(n)]}take(e){return e<=0?r.empty():new r(this._items.slice(0,e))}drop(e){return e<=0?new r(this._items.slice()):new r(this._items.slice(e))}takeWhile(e){let t=[];for(let n of this._items){if(!e(n))break;t.push(n)}return new r(t)}dropWhile(e){let t=0;for(;t<this._items.length&&e(this._items[t]);)t++;return new r(this._items.slice(t))}slice(e,t){return new r(this._items.slice(Math.max(0,e),Math.max(0,t)))}append(e){return this._items.length===0?new s(e,r.empty()):new s(this._items[0],new r([...this._items.slice(1),e]))}prepend(e){return new s(e,new r(this._items.slice()))}concat(e){if(e instanceof s){let t=e.toArray();return this._items.length===0?new s(t[0],new r(t.slice(1))):new s(this._items[0],new r([...this._items.slice(1),...t]))}return new r([...this._items,...e._items])}reverse(){return new r(this._items.slice().reverse())}sort(e){return new r(this._items.slice().sort((t,n)=>e(t,n).value))}sortBy(e,t){return new r(this._items.slice().sort((n,r)=>t(e(n),e(r)).value))}distinct(e=Object.is){let t=[];for(let n of this._items)t.some(t=>e(t,n))||t.push(n);return new r(t)}intersperse(e){if(this._items.length<=1)return new r(this._items.slice());let t=[];for(let n=0;n<this._items.length;n++)n>0&&t.push(e),t.push(this._items[n]);return new r(t)}mkString(e=``){return this._items.join(e)}zip(e){let t=e instanceof s?e.toArray():e._items,n=Math.min(this._items.length,t.length),i=Array(n);for(let e=0;e<n;e++)i[e]=[this._items[e],t[e]];return new r(i)}zipWith(e,t){let n=Math.min(this._items.length,e._items.length),i=Array(n);for(let r=0;r<n;r++)i[r]=t(this._items[r],e._items[r]);return new r(i)}zipWithIndex(){let e=Array(this._items.length);for(let t=0;t<this._items.length;t++)e[t]=[this._items[t],t];return new r(e)}unzip(){let e=Array(this._items.length),t=Array(this._items.length);for(let n=0;n<this._items.length;n++)e[n]=this._items[n][0],t[n]=this._items[n][1];return[new r(e),new r(t)]}groupBy(e){let t=new Map;for(let n of this._items){let r=e(n),i=t.get(r);i?i.push(n):t.set(r,[n])}let n=new Map;for(let[e,i]of t)n.set(e,new s(i[0],new r(i.slice(1))));return n}chunk(e){if(e<=0)throw Error(`List.chunk size must be positive.`);let t=[];for(let n=0;n<this._items.length;n+=e){let i=this._items.slice(n,n+e);t.push(new s(i[0],new r(i.slice(1))))}return new r(t)}sliding(e){if(e<=0)throw Error(`List.sliding size must be positive.`);if(e>this._items.length)return r.empty();let t=[];for(let n=0;n+e<=this._items.length;n++){let i=this._items.slice(n,n+e);t.push(new s(i[0],new r(i.slice(1))))}return new r(t)}traverse(s,c){if(s===O)return O.traverse(this._items.slice(),c);if(s===e){let e=[];for(let n of this._items){let r=c(n);if(r instanceof t)return r;e.push(r.value)}return n.pure(new r(e))}if(s===i){let e=[];for(let t of this._items){let n=c(t);if(n instanceof o)e.push(n.value);else return a.Instance}return o.pure(new r(e))}if(s===Promise)return Promise.all(this._items.map(c)).then(e=>new r(e));throw Error(`List.traverse: unknown effect type — expected IO, Either, Option, or Promise, got ${String(s)}`)}toString(){return`[${this._items.join(`, `)}]`}},l=(e=3,t=1.2,n=1e3,r,i=0)=>({recurs:e,factor:t,delay:n,timeout:r,jitter:i}),u=(e,t,n)=>new Promise((r,i)=>{if(t.aborted){i(n(new v(`Operation was cancelled`)));return}let a=setTimeout(()=>{t.removeEventListener(`abort`,o),r()},e);function o(){clearTimeout(a),i(n(new v(`Operation was cancelled`)))}t.addEventListener(`abort`,o,{once:!0})}),d=class{policy;controller=new AbortController;constructor(e=l()){if(e.recurs!==1/0&&(!Number.isFinite(e.recurs)||e.recurs<1))throw new p(`Policy validation error: 'recurs' must be a positive number >= 1 (or Infinity)`);if(!Number.isFinite(e.factor)||e.factor<1)throw new p(`Policy validation error: 'factor' must be a finite number >= 1`);if(!Number.isFinite(e.delay)||e.delay<0)throw new p(`Policy validation error: 'delay' must be a finite non-negative number`);if(e.timeout!==void 0&&(!Number.isFinite(e.timeout)||e.timeout<0))throw new p(`Policy validation error: 'timeout' must be a finite non-negative number`);if(e.jitter!==void 0&&(!Number.isFinite(e.jitter)||e.jitter<0||e.jitter>1))throw new p(`Policy validation error: 'jitter' must be a finite number between 0 and 1`);this.policy=e}retryIf(e,t,n){let r=this.policy,i=this.controller.signal;return O.cancellable(async a=>{let o=new AbortController,s=()=>o.abort();if(a.aborted||i.aborted)throw n(new v(`Operation was cancelled`));a.addEventListener(`abort`,s,{once:!0}),i.addEventListener(`abort`,s,{once:!0});try{let i=0,a=r.delay;for(;i<r.recurs;){if(o.signal.aborted)throw n(new v(`Operation was cancelled`));let s=await this.withTimeout(e,n).unsafeRun();if(s.type===`Ok`)return s.value;let c=s.error,l;try{l=t(c)}catch(e){throw n(new h(`Retry condition threw: ${e instanceof Error?e.message:String(e)}`))}if(!l)throw n(new h(`Retry condition not met: ${c}`));if(i>=r.recurs-1)throw n(new g(`Retry limit reached without success: ${c}`));await u(this.applyJitter(a),o.signal,n),a*=r.factor,i++}throw n(new g(`Retry limit reached without success`))}finally{a.removeEventListener(`abort`,s),i.removeEventListener(`abort`,s)}},e=>f(e)?e:n(e instanceof Error?e:Error(String(e))))}repeat(e,t){let n=this.policy,r=this.controller.signal;return O.cancellable(async i=>{let a=new AbortController,o=()=>a.abort();if(i.aborted||r.aborted)throw t(new v(`Operation was cancelled`));i.addEventListener(`abort`,o,{once:!0}),r.addEventListener(`abort`,o,{once:!0});try{let r=!1,i,o=n.delay;for(let s=0;s<n.recurs;s++){if(a.signal.aborted)throw t(new v(`Operation was cancelled`));let c=await this.withTimeout(e,t).unsafeRun();if(c.type===`Ok`)r=!0,i=c.value,s<n.recurs-1&&(await u(this.applyJitter(o),a.signal,t),o*=n.factor);else throw t(new _(`Failed to execute repeat: ${c.error}`))}if(r)return i;throw t(new _(`The function provided never succeeded`))}finally{i.removeEventListener(`abort`,o),r.removeEventListener(`abort`,o)}},e=>f(e)?e:t(e instanceof Error?e:Error(String(e))))}withTimeout(e,t){let n=this.policy.timeout;return!n||n<1?e:O.lift(async()=>{let r=null,i=!1,a=new Promise((e,a)=>{r=setTimeout(()=>{i||(i=!0,a(t(new m(`The operation timed out after ${n} milliseconds`))))},n)}),o=e.unsafeRun().then(e=>{if(i)return e.type===`Ok`?e.value:Promise.reject(e.error);switch(i=!0,r&&clearTimeout(r),e.type){case`Ok`:return e.value;case`Err`:return Promise.reject(e.error)}});try{return await Promise.race([o,a])}catch(e){return r&&clearTimeout(r),Promise.reject(e)}})}cancel(){this.controller.abort()}applyJitter(e){if(!this.policy.jitter)return e;let t=e*this.policy.jitter,n=(Math.random()*2-1)*t;return Math.max(0,e+n)}},f=e=>!(e instanceof v||e instanceof g||e instanceof _||e instanceof h||e instanceof m||e instanceof p),p=class extends Error{constructor(e){super(e),this.name=`PolicyValidationError`}},m=class extends Error{constructor(e){super(e),this.name=`TimeoutError`}},h=class extends Error{constructor(e){super(e),this.name=`ConditionalRetryError`}},g=class extends Error{constructor(e){super(e),this.name=`RetryError`}},_=class extends Error{constructor(e){super(e),this.name=`RepeatError`}},v=class extends Error{constructor(e){super(e),this.name=`CancellationError`}},y=Symbol(`IO.node`),b=Symbol(`IO.escape`);function x(e){return{[b]:!0,error:e}}function S(e){return typeof e==`object`&&!!e&&b in e}var C=Symbol(`IO.cancelled`);function w(){throw{[C]:!0}}function T(e){return typeof e==`object`&&!!e&&C in e}function E(e){return e!=null&&typeof e.then==`function`}async function D(e,t){let n=[],r=e;for(;;){if(t?.aborted){let e=[];for(;n.length>0;){let t=n.pop();t.tag===`OnCancel`&&e.push(t.finalizer)}for(let t of e)try{let e=t();E(e)&&await e}catch{}return{type:`Cancelled`}}switch(r.tag){case`Map`:n.push({tag:`Map`,f:r.f}),r=r.io;break;case`FlatMap`:n.push({tag:`FlatMap`,f:r.f}),r=r.io;break;case`MapErr`:n.push({tag:`MapErr`,f:r.f}),r=r.io;break;case`FlatMapErr`:n.push({tag:`FlatMapErr`,f:r.f}),r=r.io;break;case`Tap`:n.push({tag:`Tap`,f:r.f}),r=r.io;break;case`TapErr`:n.push({tag:`TapErr`,f:r.f}),r=r.io;break;case`FoldM`:n.push({tag:`FoldM`,onOk:r.onOk,onErr:r.onErr}),r=r.io;break;case`Ensure`:n.push({tag:`Ensure`,predicate:r.predicate,liftE:r.liftE}),r=r.io;break;case`OnCancel`:n.push({tag:`OnCancel`,finalizer:r.finalizer}),r=r.io;break;case`Lift`:{let{run:e,liftE:n}=r;try{let n=e(t);r={tag:`Pure`,value:E(n)?await n:n}}catch(e){if(T(e)){r={tag:`Pure`,value:void 0};break}r={tag:`Fail`,error:n?n(e):e}}break}case`Pure`:{if(n.length===0)return{type:`Ok`,value:r.value};let e=n.pop();switch(e.tag){case`Map`:try{r={tag:`Pure`,value:e.f(r.value)}}catch(e){r={tag:`Fail`,error:e}}break;case`FlatMap`:try{r=e.f(r.value)[y]}catch(e){r={tag:`Fail`,error:e}}break;case`Tap`:try{let t=e.f(r.value);E(t)&&await t}catch{}break;case`Ensure`:{let t=r.value;try{e.predicate(t)||(r={tag:`Fail`,error:e.liftE(t)})}catch{r={tag:`Fail`,error:e.liftE(t)}}break}case`FoldM`:try{r=e.onOk(r.value)[y]}catch(e){r={tag:`Fail`,error:e}}break;case`MapErr`:case`FlatMapErr`:case`TapErr`:case`OnCancel`:break}break}case`Fail`:{if(n.length===0)return{type:`Err`,error:r.error};let e=n.pop();switch(e.tag){case`MapErr`:try{r={tag:`Fail`,error:e.f(r.error)}}catch(e){r={tag:`Fail`,error:e}}break;case`FlatMapErr`:try{r=e.f(r.error)[y]}catch(e){r={tag:`Fail`,error:e}}break;case`TapErr`:try{let t=e.f(r.error);E(t)&&await t}catch{}break;case`FoldM`:try{r=e.onErr(r.error)[y]}catch(e){r={tag:`Fail`,error:e}}break;case`Map`:case`FlatMap`:case`Tap`:case`Ensure`:case`OnCancel`:break}break}}}}var O=class e{[y];constructor(e){this[y]=e}static wrap(t){return new e(t)}static lift(t,n){return new e({tag:`Lift`,run:t,liftE:n})}static cancellable(t,n){return new e({tag:`Lift`,run:e=>t(e??new AbortController().signal),liftE:n})}static bracket(t,n,r){return e.lift(async e=>{let i=await D(t[y],e);if(i.type===`Cancelled`&&w(),i.type===`Err`)throw x(i.error);let a=i.value,o;try{o=await D(n(a)[y],e)}catch(e){throw await D(r(a)[y]).catch(()=>{}),e}if(await D(r(a)[y]).catch(()=>{}),o.type===`Cancelled`&&w(),o.type===`Err`)throw x(o.error);return o.value},e=>{if(T(e))throw e;return S(e)?e.error:e})}static pure(t){return new e({tag:`Pure`,value:t})}static fail(t){return new e({tag:`Fail`,error:t})}static unit=new e({tag:`Pure`,value:void 0});static ok(e){return{type:`Ok`,value:e}}static err(e){return{type:`Err`,error:e}}map(t){return e.wrap({tag:`Map`,io:this[y],f:t})}flatMap(t){return e.wrap({tag:`FlatMap`,io:this[y],f:t})}mapErr(t){return e.wrap({tag:`MapErr`,io:this[y],f:t})}bimap(e,t){return this.map(t).mapErr(e)}flatMapErr(t){return e.wrap({tag:`FlatMapErr`,io:this[y],f:t})}tap(t){return e.wrap({tag:`Tap`,io:this[y],f:t})}tapErr(t){return e.wrap({tag:`TapErr`,io:this[y],f:t})}ensure(t,n){return e.wrap({tag:`Ensure`,io:this[y],predicate:t,liftE:n})}onCancel(t){return e.wrap({tag:`OnCancel`,io:this[y],finalizer:t})}foldM(t,n){return e.wrap({tag:`FoldM`,io:this[y],onOk:n,onErr:t})}attempt(){return this.foldM(n=>e.pure(t.pure(n)),t=>e.pure(n.pure(t)))}ignore(){return this.foldM(()=>e.unit,()=>e.unit)}async unsafeRun(){return D(this[y])}async fold(e,t){let n=await this.unsafeRun();return n.type===`Ok`?t(n.value):e(n.error)}async getOrNull(){let e=await this.unsafeRun();return e.type===`Ok`?e.value:null}async getOrElse(e){let t=await this.unsafeRun();return t.type===`Ok`?t.value:e()}async getOrHandleErr(e){let t=await this.unsafeRun();return t.type===`Ok`?t.value:e(t.error)}retryIf(t,n,r=l()){return e.lift(()=>new d(r),e=>n(e instanceof Error?e:Error(String(e)))).flatMap(e=>e.retryIf(this,t,n))}timeout(t,n){let r=this[y];return e.lift(e=>new Promise((i,a)=>{let o=new AbortController,s;if(e)if(e.aborted)o.abort();else{let t=()=>o.abort();e.addEventListener(`abort`,t,{once:!0}),s=()=>e.removeEventListener(`abort`,t)}let c=!1,l=()=>{c=!0,s&&s()},u=setTimeout(()=>{c||(l(),o.abort(),a(x(n())))},t);D(r,o.signal).then(e=>{c||(l(),clearTimeout(u),e.type===`Ok`?i(e.value):e.type===`Cancelled`?a({[C]:!0}):a(x(e.error)))}),o.signal.addEventListener(`abort`,()=>{clearTimeout(u)},{once:!0})}),e=>{if(T(e))throw e;return S(e)?e.error:e})}fork(){let t=this[y];return e.lift(()=>{let e=new AbortController,n=D(t,e.signal);return{join:()=>n,cancel:async()=>{e.abort(),await n.catch(()=>{})},signal:e.signal}})}static forA(...t){if(t.length<3)return e.fail(s._unsafeFromArray([Error(`IO.forA requires at least two IO arguments and a combiner function`)]));let n=t.slice(0,-1),r=t[t.length-1];return e.lift(async e=>{let t=await Promise.all(n.map(t=>D(t[y],e)));t.some(e=>e.type===`Cancelled`)&&w();let i=t.filter(e=>e.type===`Err`).map(e=>e.error);if(i.length>0)throw x(s._unsafeFromArray(i));return r(...t.filter(e=>e.type===`Ok`).map(e=>e.value))},e=>S(e)?e.error:s._unsafeFromArray([e]))}static race(...t){return t.length===0?e.fail(s._unsafeFromArray([Error(`IO.race requires at least one IO argument`)])):e.lift(e=>new Promise((n,r)=>{let i=new AbortController,a;if(e)if(e.aborted)i.abort();else{let t=()=>i.abort();e.addEventListener(`abort`,t,{once:!0}),a=()=>e.removeEventListener(`abort`,t)}let o=0,c=!1,l=Array(t.length),u=()=>{c=!0,a&&a()};t.forEach((e,a)=>{D(e[y],i.signal).then(e=>{if(!c){if(e.type===`Ok`)u(),i.abort(),n(e.value);else if(e.type===`Err`){if(l[a]=e.error,o++,o===t.length){u();let e=l.filter(e=>e!==void 0);e.length>0?r(x(s._unsafeFromArray(e))):r({[C]:!0})}}else if(o++,o===t.length&&!c){u();let e=l.filter(e=>e!==void 0);e.length>0?r(x(s._unsafeFromArray(e))):r({[C]:!0})}}})})}),e=>{if(T(e))throw e;return S(e)?e.error:s._unsafeFromArray([e])})}static forM(t,n){let r=n;return e.lift(async e=>await t(async t=>{let n=await D(t[y],e);if(n.type===`Ok`)return n.value;throw n.type===`Cancelled`&&w(),x(n.error)}),e=>{if(T(e))throw e;return S(e)?e.error:r?r(e):e})}static traverse(t,n){return e.forM(async e=>{let r=[];for(let i of t)r.push(await e(n(i)));return c._unsafeFromArray(r)})}static parTraverse(t,n){return e.lift(async e=>{let r=await Promise.all(t.map(t=>D(n(t)[y],e)));r.some(e=>e.type===`Cancelled`)&&w();let i=r.filter(e=>e.type===`Err`).map(e=>e.error);if(i.length>0)throw x(s._unsafeFromArray(i));return c._unsafeFromArray(r.filter(e=>e.type===`Ok`).map(e=>e.value))},e=>S(e)?e.error:s._unsafeFromArray([e]))}static sequence(t){return e.traverse(t,e=>e)}static parSequence(t){return e.parTraverse(t,e=>e)}},k=class{static defer(e){return new j(e)}static pure(e){return new A(e)}static lazy(e){return new M(e)}map(e){return new P(this,e)}flatMap(e){return new N(this,e)}evaluate(){let e=this,t=[];for(;;)if(e instanceof N){let n=e.first;n instanceof N||n instanceof P?(t.push(e.f),e=n):e=e.f(n.value())}else if(e instanceof P){let n=[e.f],r=e.first;for(;r instanceof P;)n.push(r.f),r=r.first;let i=e=>{for(let t=n.length-1;t>=0;t--)e=n[t](e);return e};if(r instanceof N)t.push(e=>new A(i(e))),e=r;else{let n=i(r.value());if(t.length===0)return n;e=t.pop()(n)}}else{let n=e.value();if(t.length===0)return n;e=t.pop()(n)}}},A=class extends k{constructor(e){super(),this._value=e}value(){return this._value}},j=class extends k{constructor(e){super(),this.f=e}value(){return this.f()}},M=class extends k{_value;_evaluated=!1;constructor(e){super(),this.f=e}value(){return this._evaluated||=(this._value=this.f(),!0),this._value}},N=class extends k{constructor(e,t){super(),this.first=e,this.f=t}value(){throw new F(`FlatMap should not be evaluated directly`)}},P=class extends k{constructor(e,t){super(),this.first=e,this.f=t}value(){throw new F(`Map should not be evaluated directly`)}},F=class extends Error{constructor(e){super(),this.error=e,this.name=`EvaluationError`}},I=class e{constructor(e){this.f=e}static pure(t){return new e(()=>t)}map(t){return new e(e=>t(this.run(e)))}flatMap(t){return new e(e=>t(this.run(e)).run(e))}static ask(){return new e(e=>e)}static lift(e){return t=>t.map(e)}static parZip(...t){return new e(e=>t.map(t=>t.run(e)))}static local(t,n){return new e(e=>n.run(t(e)))}run(e){return this.f(e)}},L=class e{constructor(e,t){this.value=e,this.type=t}static LessThan=new e(-1,`LessThan`);static Equal=new e(0,`Equal`);static GreaterThan=new e(1,`GreaterThan`);flatMap(e){return this.type===`Equal`?e():this}match(e,t,n){switch(this.type){case`LessThan`:return e();case`Equal`:return t();case`GreaterThan`:return n()}}reverse(){switch(this.type){case`LessThan`:return e.GreaterThan;case`Equal`:return e.Equal;case`GreaterThan`:return e.LessThan}}tap(e){return e(this),this}concat(e){return this.type===`Equal`?e:this}static from(t){if(isNaN(t))throw Error(`Cannot convert NaN to Ordering.`);return t<0?e.LessThan:t>0?e.GreaterThan:e.Equal}static comparing(t,n){return(r,i)=>{let a=n(t(r),t(i));if(isNaN(a))throw Error(`Comparator function returned NaN.`);return e.from(a)}}static compareBy(...t){return(n,r)=>{for(let e of t){let t=e(n,r);if(t.type!==`Equal`)return t}return e.Equal}}},R=L.LessThan,z=L.Equal,B=L.GreaterThan,V={_tag:`Done`},H=()=>V,U=(e,t)=>({_tag:`Emit`,head:e,tail:t}),W=class{finalizers=[];closed=!1;register(e){this.finalizers.push(e)}close(){return O.lift(async()=>{if(!this.closed){this.closed=!0;for(let e=this.finalizers.length-1;e>=0;e--)await this.finalizers[e].unsafeRun().catch(()=>{})}})}},G=class e{constructor(e){this.pull=e}static bracket(t,n,r){return new e(e=>t.flatMap(t=>(e.register(r(t)),n(t).pull(e))))}static unfoldEval(t,n){let r=t=>new e(()=>n(t).map(e=>e.fold(()=>H(),([e,t])=>U(e,r(t)))));return r(t)}static eval(t){return new e(()=>t.map(t=>U(t,e.empty())))}static empty(){return new e(()=>O.pure(H()))}static of(...t){return e.fromIterable(t)}static fromIterable(t){let n=Array.from(t),r=t=>new e(()=>O.pure(t<n.length?U(n[t],r(t+1)):H()));return r(0)}map(t){return new e(e=>this.pull(e).map(e=>e._tag===`Emit`?U(t(e.head),e.tail.map(t)):H()))}mapErr(t){return new e(e=>this.pull(e).mapErr(t).map(e=>e._tag===`Emit`?U(e.head,e.tail.mapErr(t)):H()))}filter(t){return new e(e=>this.pull(e).flatMap(n=>n._tag===`Done`?O.pure(H()):t(n.head)?O.pure(U(n.head,n.tail.filter(t))):n.tail.filter(t).pull(e)))}take(t){return new e(e=>t<=0?O.pure(H()):this.pull(e).map(e=>e._tag===`Emit`?U(e.head,e.tail.take(t-1)):H()))}mapAccumulate(t,n){let r=(t,i,a)=>new e(e=>a.length>0?O.pure(U(a[0],r(t,i,a.slice(1)))):t.pull(e).flatMap(t=>{if(t._tag===`Done`)return O.pure(H());let[a,o]=n(t.head,i);return r(t.tail,a,o.toArray()).pull(e)}));return r(this,t,[])}through(e){return e(this)}runForEach(e){let t=(n,r)=>n.pull(r).flatMap(n=>n._tag===`Done`?O.unit:e(n.head).flatMap(()=>t(n.tail,r)));return O.bracket(O.lift(()=>new W),e=>t(this,e),e=>e.close())}drain(){return this.runForEach(()=>O.unit)}toList(){return O.lift(()=>[]).flatMap(e=>this.runForEach(t=>O.lift(()=>void e.push(t))).map(()=>c.from(e)))}};exports.CancellationError=v,exports.ConditionalRetryError=h,exports.EQ=z,exports.Either=e,exports.Eval=k,exports.EvaluationError=F,exports.GT=B,exports.IO=O,exports.LT=R,exports.Left=t,exports.List=c,exports.NonEmptyList=s,exports.None=a,exports.Option=i,exports.Ordering=L,exports.PolicyValidationError=p,exports.Reader=I,exports.RepeatError=_,exports.RetryError=g,exports.Right=n,exports.Schedule=d,exports.Some=o,exports.Stream=G,exports.TimeoutError=m,exports.identity=r;
|
|
2
2
|
//# sourceMappingURL=monadyssey.cjs.map
|