@openstage/monadyssey-core 3.0.0-beta.4 → 3.0.0-beta.6

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.
@@ -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 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;
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});var e=class{static catch(e,r){try{return n.of(e())}catch(e){return r?t.of(r(e)):t.of((e=>typeof e==`string`?e:e&&typeof e.message==`string`?e.message:String(e))(e))}}},t=class t extends e{value;type=`Left`;self=this;constructor(e){super(),this.value=e}static of(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.of(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{value;type=`Right`;self=this;constructor(e){super(),this.value=e}static of(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.of(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 e{static ofNullable(t){return t==null?e.empty():o.of(t)}static of(e){return o.of(e)}static empty(){return a.instance}map(t){return this.flatMap(n=>{let r=t(n);return r==null?e.empty():o.of(r)})}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()}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{value;type=`Some`;self=this;constructor(e){super(),this.value=e}static of(t){return new e(t)}flatMap(e){return e(this.value)}filter(e){return e(this.value)?this:i.empty()}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{head;tail;constructor(e,t){this.head=e,this.tail=t}static from(e){let t=Array.from(e);return t.length===0?i.empty():o.of(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?i.empty():e===0?o.of(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.of(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(a,s){if(a===O)return O.traverse(this.toArray(),s).map(e=>r._unsafeFromArray(e.toArray()));if(a===e){let e=s(this.head);if(e instanceof t)return e;let i=[];for(let e of this.tail.toArray()){let n=s(e);if(n instanceof t)return n;i.push(n.value)}return n.of(new r(e.value,c._unsafeFromArray(i)))}if(a===i){let e=s(this.head);if(!(e instanceof o))return i.empty();let t=[];for(let e of this.tail.toArray()){let n=s(e);if(!(n instanceof o))return i.empty();t.push(n.value)}return o.of(new r(e.value,c._unsafeFromArray(t)))}if(a===Promise){let e=s;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(a)}`)}toString(){return`[${this.toArray().join(`, `)}]`}},c=class r{_items;constructor(e){this._items=e}static _unsafeFromArray(e){return new r(e)}static empty(){return new r([])}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?i.empty():o.of(this._items[0])}get last(){return this._items.length===0?i.empty():o.of(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 i.empty();let e=[this._items[0],new r(this._items.slice(1))];return o.of(e)}get(e){return e<0||e>=this._items.length?i.empty():o.of(this._items[e])}toArray(){return this._items.slice()}[Symbol.iterator](){return this._items[Symbol.iterator]()}toNel(){return this._items.length===0?i.empty():o.of(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 i.empty();let t=this._items[0];for(let n=1;n<this._items.length;n++)t=e(t,this._items[n]);return o.of(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?i.empty():o.of(this._items[t])}findIndex(e){let t=this._items.findIndex(e);return t===-1?i.empty():o.of(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(a,s){if(a===O)return O.traverse(this._items.slice(),s);if(a===e){let e=[];for(let n of this._items){let r=s(n);if(r instanceof t)return r;e.push(r.value)}return n.of(new r(e))}if(a===i){let e=[];for(let t of this._items){let n=s(t);if(n instanceof o)e.push(n.value);else return i.empty()}return o.of(new r(e))}if(a===Promise)return Promise.all(this._items.map(s)).then(e=>new r(e));throw Error(`List.traverse: unknown effect type — expected IO, Either, Option, or Promise, got ${String(a)}`)}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`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}}}}var O=class r{[y];constructor(e){this[y]=e}static wrap(e){return new r(e)}static lift(e,t){return new r({tag:`Lift`,run:e,liftE:t})}static cancellable(e,t){return new r({tag:`Lift`,run:t=>e(t??new AbortController().signal),liftE:t})}static bracket(e,t,n){return r.lift(async r=>{let i=await D(e[y],r);if(i.type===`Cancelled`&&w(),i.type===`Err`)throw x(i.error);let a=i.value,o;try{o=await D(t(a)[y],r)}catch(e){throw await D(n(a)[y]).catch(()=>{}),e}if(await D(n(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 of(e){return new r({tag:`Pure`,value:e})}static fail(e){return new r({tag:`Fail`,error:e})}static from(t,n){return t instanceof e?t.fold(e=>r.fail(e),e=>r.of(e)):n===void 0?r.fail(TypeError(`IO.from(option) requires an onNone function`)):t.fold(()=>r.fail(n()),e=>r.of(e))}static unit=new r({tag:`Pure`,value:void 0});static ok(e){return{type:`Ok`,value:e}}static err(e){return{type:`Err`,error:e}}map(e){return r.wrap({tag:`Map`,io:this[y],f:e})}flatMap(e){return r.wrap({tag:`FlatMap`,io:this[y],f:e})}mapErr(e){return r.wrap({tag:`MapErr`,io:this[y],f:e})}bimap(e,t){return this.map(t).mapErr(e)}flatMapErr(e){return r.wrap({tag:`FlatMapErr`,io:this[y],f:e})}tap(e){return r.wrap({tag:`Tap`,io:this[y],f:e})}tapErr(e){return r.wrap({tag:`TapErr`,io:this[y],f:e})}ensure(e,t){return r.wrap({tag:`Ensure`,io:this[y],predicate:e,liftE:t})}onCancel(e){return r.wrap({tag:`OnCancel`,io:this[y],finalizer:e})}foldM(e,t){return r.wrap({tag:`FoldM`,io:this[y],onOk:t,onErr:e})}attempt(){return this.foldM(e=>r.of(t.of(e)),e=>r.of(n.of(e)))}ignore(){return this.foldM(()=>r.unit,()=>r.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(e,t,n=l()){return r.lift(()=>new d(n),e=>t(e instanceof Error?e:Error(String(e)))).flatMap(n=>n.retryIf(this,e,t))}timeout(e,t){let n=this[y];return r.lift(r=>new Promise((i,a)=>{let o=new AbortController,s;if(r){if(r.aborted)o.abort();else{let e=()=>o.abort();r.addEventListener(`abort`,e,{once:!0}),s=()=>r.removeEventListener(`abort`,e)}}let c=!1,l=()=>{c=!0,s&&s()},u=setTimeout(()=>{c||(l(),o.abort(),a(x(t())))},e);D(n,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 e=this[y];return r.lift(()=>{let t=new AbortController,n=D(e,t.signal);return{join:()=>n,cancel:async()=>{t.abort(),await n.catch(()=>{})},signal:t.signal}})}static forA(...e){if(e.length<3)return r.fail(s._unsafeFromArray([Error(`IO.forA requires at least two IO arguments and a combiner function`)]));let t=e.slice(0,-1),n=e[e.length-1];return r.lift(async e=>{let r=await Promise.all(t.map(t=>D(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));let a=r.filter(e=>e.type===`Ok`).map(e=>e.value);return n(...a)},e=>S(e)?e.error:s._unsafeFromArray([e]))}static race(...e){return e.length===0?r.fail(s._unsafeFromArray([Error(`IO.race requires at least one IO argument`)])):r.lift(t=>new Promise((n,r)=>{let i=new AbortController,a;if(t){if(t.aborted)i.abort();else{let e=()=>i.abort();t.addEventListener(`abort`,e,{once:!0}),a=()=>t.removeEventListener(`abort`,e)}}let o=0,c=!1,l=Array(e.length),u=()=>{c=!0,a&&a()};e.forEach((t,a)=>{D(t[y],i.signal).then(t=>{if(!c){if(t.type===`Ok`)u(),i.abort(),n(t.value);else if(t.type===`Err`){if(l[a]=t.error,o++,o===e.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===e.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(e,t){let n=t;return r.lift(async t=>await e(async e=>{let n=await D(e[y],t);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:n?n(e):e})}static traverse(e,t){return r.forM(async n=>{let r=[];for(let i of e)r.push(await n(t(i)));return c._unsafeFromArray(r)})}static parTraverse(e,t){return r.lift(async n=>{let r=await Promise.all(e.map(e=>D(t(e)[y],n)));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(e){return r.traverse(e,e=>e)}static parSequence(e){return r.parTraverse(e,e=>e)}},k=class{static defer(e){return new j(e)}static of(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{_value;constructor(e){super(),this._value=e}value(){return this._value}},j=class extends k{f;constructor(e){super(),this.f=e}value(){return this.f()}},M=class extends k{f;_value;_evaluated=!1;constructor(e){super(),this.f=e}value(){return this._evaluated||=(this._value=this.f(),!0),this._value}},N=class extends k{first;f;constructor(e,t){super(),this.first=e,this.f=t}value(){throw new F(`FlatMap should not be evaluated directly`)}},P=class extends k{first;f;constructor(e,t){super(),this.first=e,this.f=t}value(){throw new F(`Map should not be evaluated directly`)}},F=class extends Error{error;constructor(e){super(),this.error=e,this.name=`EvaluationError`}},I=class e{f;constructor(e){this.f=e}static of(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 zip(...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{value;constructor(e){this.value=e}static of(t){return O.lift(()=>new e(t))}static unsafeOf(t){return new e(t)}get(){return O.lift(()=>this.value)}set(e){return O.lift(()=>{this.value=e})}modify(e){return O.lift(()=>{let[t,n]=e(this.value);return this.value=t,n})}update(e){return this.modify(t=>[e(t),void 0])}updateAndGet(e){return this.modify(t=>{let n=e(t);return[n,n]})}getAndUpdate(e){return this.modify(t=>[e(t),t])}getAndSet(e){return this.modify(t=>[e,t])}},R=class e{value;type;constructor(e,t){this.value=e,this.type=t}static LT=new e(-1,`LessThan`);static EQ=new e(0,`Equal`);static GT=new e(1,`GreaterThan`);flatMap(e){return this.type===`Equal`?e():this}fold(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.GT;case`Equal`:return e.EQ;case`GreaterThan`:return e.LT}}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.LT:t>0?e.GT:e.EQ}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.EQ}}},z=R.LT,B=R.EQ,V=R.GT,H={Suspend:`suspend`,DropOldest:`drop-oldest`,DropNewest:`drop-newest`},U=e=>{if(!Number.isInteger(e)||e<=0)throw RangeError(`Queue capacity must be a positive integer, got ${String(e)}`)},W=class e{capacity;onOverflow;items=[];takers=[];offerers=[];closed=!1;constructor(e,t){this.capacity=e,this.onOverflow=t}static bounded(t,n=H.Suspend){return U(t),O.lift(()=>new e(t,n))}static unbounded(){return O.lift(()=>new e(1/0,H.Suspend))}static unsafeBounded(t,n=H.Suspend){return U(t),new e(t,n)}static unsafeUnbounded(){return new e(1/0,H.Suspend)}offer(e){return O.cancellable(t=>this.closed?!1:this.onOverflow!==H.Suspend||this.items.length<this.capacity||this.takers.length>0?this.unsafeOffer(e):new Promise((n,r)=>{let i={value:e,resolve:n,reject:r};this.offerers.push(i),t.addEventListener(`abort`,()=>{let e=this.offerers.indexOf(i);e>=0&&this.offerers.splice(e,1),r(t.reason??Error(`Queue.offer cancelled`))},{once:!0})}))}unsafeOffer(e){if(this.closed)return!1;let t=this.takers.shift();if(t!==void 0)return t.resolve(o.of(e)),!0;if(this.items.length>=this.capacity)switch(this.onOverflow){case H.DropOldest:return this.items.shift(),this.items.push(e),!1;case H.DropNewest:return!1;case H.Suspend:return!1}return this.items.push(e),!0}take(){return O.cancellable(e=>{let t=this.dequeue();return t===void 0?this.closed?i.empty():new Promise((t,n)=>{let r={resolve:t,reject:n};this.takers.push(r),e.addEventListener(`abort`,()=>{let t=this.takers.indexOf(r);t>=0&&this.takers.splice(t,1),n(e.reason??Error(`Queue.take cancelled`))},{once:!0})}):t})}close(){return O.lift(()=>this.unsafeClose())}unsafeClose(){if(!this.closed){this.closed=!0;for(let e of this.takers.splice(0))e.resolve(i.empty());for(let e of this.offerers.splice(0))e.resolve(!1)}}size(){return O.lift(()=>this.items.length)}dequeue(){if(this.items.length===0)return;let e=this.items.shift(),t=this.offerers.shift();return t!==void 0&&(this.items.push(t.value),t.resolve(!0)),o.of(e)}},G={_tag:`Done`},K=()=>G,q=(e,t)=>({_tag:`Emit`,head:e,tail:t}),J=class e{parent;finalizers=[];children=[];closed=!1;constructor(e=null){this.parent=e}register(e){this.finalizers.push(e)}openChild(){let t=new e(this);return this.children.push(t),t}close(){return O.lift(()=>this.closeNow())}async closeNow(){if(!this.closed){this.closed=!0;for(let e=this.children.length-1;e>=0;e--)await this.children[e].closeNow();this.children.length=0;for(let e=this.finalizers.length-1;e>=0;e--)await this.finalizers[e].unsafeRun().catch(()=>{});if(this.parent!==null){let e=this.parent.children.indexOf(this);e>=0&&this.parent.children.splice(e,1)}}}},Y=class e{pull;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(()=>K(),([e,t])=>q(e,r(t)))));return r(t)}static eval(t){return new e(()=>t.map(t=>q(t,e.empty())))}static empty(){return new e(()=>O.of(K()))}static of(...t){return e.from(t)}static from(t){if(t instanceof W)return e.unfoldEval(void 0,()=>t.take().map(e=>e.map(e=>[e,void 0])));let n=Array.from(t),r=t=>new e(()=>O.of(t<n.length?q(n[t],r(t+1)):K()));return r(0)}static async(t,n={}){let r=W.bounded(n.capacity??1024,n.onOverflow??H.DropOldest).map(e=>({queue:e,detach:t(t=>e.unsafeOffer(t),()=>e.unsafeClose())??O.unit}));return e.bracket(r,({queue:t})=>e.from(t),({queue:e,detach:t})=>t.flatMap(()=>e.close()))}map(t){return new e(e=>this.pull(e).map(e=>e._tag===`Emit`?q(t(e.head),e.tail.map(t)):K()))}mapErr(t){return new e(e=>this.pull(e).mapErr(t).map(e=>e._tag===`Emit`?q(e.head,e.tail.mapErr(t)):K()))}filter(t){return new e(e=>this.pull(e).flatMap(n=>n._tag===`Done`?O.of(K()):t(n.head)?O.of(q(n.head,n.tail.filter(t))):n.tail.filter(t).pull(e)))}take(t){return new e(e=>t<=0?O.of(K()):this.pull(e).map(e=>e._tag===`Emit`?q(e.head,e.tail.take(t-1)):K()))}mapAccumulate(t,n){let r=(t,i,a)=>new e(e=>a.length>0?O.of(q(a[0],r(t,i,a.slice(1)))):t.pull(e).flatMap(t=>{if(t._tag===`Done`)return O.of(K());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)}flatMap(t){let n=(t,r,i)=>new e(e=>t.pull(r).flatMap(t=>t._tag===`Emit`?O.of(q(t.head,n(t.tail,r,i))):r.close().flatMap(()=>i.pull(e))));return new e(e=>this.pull(e).flatMap(r=>r._tag===`Done`?O.of(K()):n(t(r.head),e.openChild(),r.tail.flatMap(t)).pull(e)))}concat(t){return new e(e=>this.pull(e).flatMap(n=>n._tag===`Emit`?O.of(q(n.head,n.tail.concat(t))):t.pull(e)))}zip(t){let n=(t,r,i,a)=>new e(()=>t.pull(i).flatMap(e=>e._tag===`Done`?a.close().map(()=>K()):r.pull(a).flatMap(t=>t._tag===`Done`?i.close().map(()=>K()):O.of(q([e.head,t.head],n(e.tail,t.tail,i,a))))));return new e(e=>n(this,t,e.openChild(),e.openChild()).pull(e))}merge(t){return e.mergeAll([this,t])}static merge(t,n){return e.mergeAll([t,n])}static mergeAll(t){if(t.length===0)return e.empty();let n=W.bounded(t.length,H.Suspend).flatMap(e=>O.forM(async n=>{let r={error:void 0,failed:!1},i=t.length,a=[];for(let o of t){let t=o.runForEach(t=>e.offer(t).map(()=>void 0)).foldM(t=>O.lift(()=>{if(!r.failed){r.failed=!0,r.error=t,e.unsafeClose();for(let e of a)e.cancel()}}),()=>O.lift(()=>{--i,i===0&&e.unsafeClose()}));a.push(await n(t.fork()))}return{queue:e,fibers:a,failure:r}}));return e.bracket(n,({queue:t,failure:n})=>e.unfoldEval(void 0,()=>t.take().flatMap(e=>e.fold(()=>n.failed?O.fail(n.error):O.of(i.empty()),e=>O.of(i.of([e,void 0]))))),({queue:e,fibers:t})=>O.lift(async()=>{await Promise.all(t.map(e=>e.cancel())),e.unsafeClose()}))}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 J),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=B,exports.Either=e,exports.Eval=k,exports.EvaluationError=F,exports.GT=V,exports.IO=O,exports.LT=z,exports.Left=t,exports.List=c,exports.NonEmptyList=s,exports.None=a,exports.Option=i,exports.Ordering=R,exports.OverflowStrategy=H,exports.PolicyValidationError=p,exports.Queue=W,exports.Reader=I,exports.Ref=L,exports.RepeatError=_,exports.RetryError=g,exports.Right=n,exports.Schedule=d,exports.Some=o,exports.Stream=Y,exports.TimeoutError=m,exports.identity=r;
2
2
  //# sourceMappingURL=monadyssey.cjs.map