functype 0.20.1 → 0.30.0

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,4 +1,4 @@
1
- import "../Brand-B-0nKo7I.js";
2
- import { gn as TypeNames, hn as Try } from "../index-Bnjlo4cT.js";
3
- import "../Tuple-CKxIyX7l.js";
1
+ import "../Brand-BPeggBaO.js";
2
+ import { Fn as Try, In as TypeNames } from "../index-BiUAv9kR.js";
3
+ import "../Tuple-C4maYbiO.js";
4
4
  export { Try, TypeNames };
package/dist/try/index.js CHANGED
@@ -1 +1 @@
1
- import"../Brand-Cfr5zy8F.js";import"../Tuple-CgX4p79w.js";import{dt as e}from"../src-BOxI0-73.js";export{e as Try};
1
+ import"../Brand-Cfr5zy8F.js";import"../Tuple-CgX4p79w.js";import{xt as e}from"../src-BeaSFZFq.js";export{e as Try};
@@ -1,2 +1,2 @@
1
- import { t as Tuple } from "../Tuple-CKxIyX7l.js";
1
+ import { t as Tuple } from "../Tuple-C4maYbiO.js";
2
2
  export { Tuple };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "functype",
3
- "version": "0.20.1",
3
+ "version": "0.30.0",
4
4
  "type": "module",
5
5
  "description": "A functional programming library for TypeScript, using immutable data structures and type classes",
6
6
  "author": "jordan.burke@gmail.com",
@@ -23,10 +23,10 @@
23
23
  "fast-check": "^4.3.0",
24
24
  "globals": "^16.5.0",
25
25
  "semantic-release": "^24.2.9",
26
+ "ts-builds": "^1.1.0",
26
27
  "tsdown": "^0.16.8",
27
28
  "tsx": "^4.21.0",
28
- "typedoc": "^0.28.15",
29
- "typescript-template-configs": "^4.0.0"
29
+ "typedoc": "^0.28.15"
30
30
  },
31
31
  "types": "./dist/index.d.ts",
32
32
  "module": "./dist/index.js",
@@ -91,6 +91,12 @@
91
91
  "default": "./dist/fpromise/index.js"
92
92
  }
93
93
  },
94
+ "./io": {
95
+ "import": {
96
+ "types": "./dist/io/index.d.ts",
97
+ "default": "./dist/io/index.js"
98
+ }
99
+ },
94
100
  "./functype": {
95
101
  "import": {
96
102
  "types": "./dist/functype/index.d.ts",
@@ -152,7 +158,7 @@
152
158
  "sideEffects": false,
153
159
  "scripts": {
154
160
  "validate": "pnpm validate:core && pnpm validate:landing",
155
- "validate:core": "pnpm format && pnpm lint && pnpm test && pnpm docs:validate && pnpm build",
161
+ "validate:core": "pnpm format && pnpm lint && pnpm compile && pnpm test && pnpm docs:validate && pnpm build",
156
162
  "validate:landing": "cd landing && pnpm validate",
157
163
  "format": "prettier --write .",
158
164
  "format:check": "prettier --check .",
@@ -178,6 +184,7 @@
178
184
  "analyze:size": "pnpm build && node ./scripts/analyze-bundle-size.js",
179
185
  "landing:dev": "cd landing && pnpm dev",
180
186
  "landing:build": "cd landing && pnpm build",
181
- "landing:preview": "cd landing && pnpm preview"
187
+ "landing:preview": "cd landing && pnpm preview",
188
+ "cli-example": "npx . Option"
182
189
  }
183
190
  }
@@ -1,20 +0,0 @@
1
- import{t as e}from"./Brand-Cfr5zy8F.js";import{n as t,t as n}from"./Tuple-CgX4p79w.js";import r from"safe-stable-stringify";const i=(e,t)=>({toJSON:()=>JSON.stringify({_tag:e,value:t}),toYAML:()=>`_tag: ${e}\nvalue: ${r(t)}`,toBinary:()=>Buffer.from(JSON.stringify({_tag:e,value:t})).toString(`base64`)}),a=e=>({toJSON:()=>JSON.stringify(e),toYAML:()=>Object.entries(e).map(([e,t])=>`${e}: ${r(t)}`).join(`
2
- `),toBinary:()=>Buffer.from(JSON.stringify(e)).toString(`base64`)}),o=(e,t)=>t(JSON.parse(e)),s=(e,t)=>{let n=e.split(`
3
- `),r={};for(let e of n){let t=e.indexOf(`: `);if(t===-1)continue;let n=e.substring(0,t),i=e.substring(t+2);if(!i){r[n]=null;continue}try{r[n]=i===`null`?null:JSON.parse(i)}catch{r[n]=i}}return t(r)},c=(e,t)=>o(Buffer.from(e,`base64`).toString(),t),l=e=>({fromJSON:t=>o(t,e),fromYAML:t=>s(t,e),fromBinary:t=>c(t,e)}),u=e=>({_tag:`Some`,value:e,isEmpty:!1,isSome(){return!0},isNone(){return!1},orElse:()=>e,orThrow:()=>e,or:t=>u(e),orNull:()=>e,orUndefined:()=>e,map:t=>u(t(e)),ap:t=>t._tag===`Some`&&t.value?u(t.value(e)):d,filter(t){return t(e)?u(e):d},count:t=>t(e)?1:0,find:t=>t(e)?u(e):d,exists:t=>t(e),forEach:t=>t(e),fold:(t,n)=>n(e),match:t=>t.Some(e),flatMap:t=>t(e),flatMapAsync:async t=>await t(e),reduce:t=>t(void 0,e),reduceRight:t=>t(void 0,e),foldLeft:t=>n=>n(t,e),foldRight:t=>n=>n(e,t),toList:()=>E([e]),contains:t=>t===e,size:1,toOption:()=>u(e),toEither:t=>D(e),toTry:()=>w(()=>e),toPromise:()=>Promise.resolve(e),toString:()=>`Some(${r(e)})`,toValue:()=>({_tag:`Some`,value:e}),pipe:t=>t(e),serialize:()=>i(`Some`,e),doUnwrap(){return{ok:!0,value:e}}}),d={_tag:`None`,value:void 0,isEmpty:!0,isSome(){return!1},isNone(){return!0},orElse:e=>e,orThrow(e){throw e??Error(`Cannot extract value from None`)},or:e=>e,orNull:()=>null,orUndefined:()=>void 0,map:e=>d,ap:e=>d,filter(e){return d},count:e=>0,find:e=>d,exists:e=>!1,forEach:e=>{},flatMap:e=>d,flatMapAsync:e=>Promise.resolve(d),reduce:()=>void 0,reduceRight:()=>void 0,fold:(e,t)=>e(),match:e=>e.None(),foldLeft:e=>()=>e,foldRight:e=>()=>e,toList:()=>E([]),contains:()=>!1,size:0,toOption:()=>d,toEither:e=>O(e),toTry:()=>w(()=>{throw Error(`None`)}),toPromise:()=>Promise.reject(Error(`Cannot convert None to Promise`)),toString:()=>`None`,toValue:()=>({_tag:`None`,value:void 0}),pipe:e=>e(void 0),serialize:()=>i(`None`,null),doUnwrap(){return{ok:!1,empty:!0}}},f=()=>d,ee=e=>e==null?f():u(e),te={from:e=>p(e),none:()=>f(),isSome:e=>e.isSome(),isNone:e=>e.isNone(),fromJSON:e=>{let t=JSON.parse(e);return t._tag===`Some`?u(t.value):f()},fromYAML:e=>{let t=e.split(`
4
- `),n=t[0]?.split(`: `)[1],r=t[1]?.split(`: `)[1];if(!n||!r)return f();let i=r===`null`?null:JSON.parse(r);return n===`Some`?u(i):f()},fromBinary:e=>{let t=Buffer.from(e,`base64`).toString();return te.fromJSON(t)}},p=t(ee,te),m=Set,h=e=>{let t=new m(e),n={_tag:`Set`,[Symbol.iterator]:()=>t[Symbol.iterator](),add:e=>h([...t,e]),remove:e=>{let n=new m(t);return n.delete(e),h(n)},contains:e=>t.has(e),has:e=>t.has(e),map:e=>h(Array.from(t).map(e)),ap:e=>{let n=new m;for(let r of t)for(let t of e)n.add(t(r));return h(n)},flatMap:e=>{let n=new m;for(let r of t)for(let t of e(r))n.add(t);return h(n)},flatMapAsync:async e=>{let n=new m;for(let r of t){let t=await e(r);for(let e of t)n.add(e)}return h(n)},fold:(e,n)=>{if(t.size===0)return e();let r=Array.from(t);if(r.length===0)return e();let i=r[0];return i===void 0?e():n(i)},foldLeft:e=>n=>{let r=e;for(let e of t)r=n(r,e);return r},foldRight:e=>n=>Array.from(t).reduceRight((e,t)=>n(t,e),e),get size(){return t.size},get isEmpty(){return t.size===0},reduce:e=>{let n=Array.from(t);if(n.length===0)throw Error(`Cannot reduce empty Set`);return n.reduce(e)},reduceRight:e=>{let n=Array.from(t);if(n.length===0)throw Error(`Cannot reduceRight empty Set`);return n.reduceRight(e)},count:e=>{let n=0;for(let r of t)e(r)&&n++;return n},find:e=>{for(let n of t)if(e(n))return p(n);return p(null)},exists:e=>{for(let n of t)if(e(n))return!0;return!1},forEach:e=>{t.forEach(e)},filter:e=>{let n=new m;for(let r of t)e(r)&&n.add(r);return h(n)},filterNot:e=>{let n=new m;for(let r of t)e(r)||n.add(r);return h(n)},drop:e=>h(Array.from(t).slice(e)),dropRight:e=>h(Array.from(t).slice(0,-e)),dropWhile:e=>{let n=Array.from(t),r=n.findIndex(t=>!e(t));return h(r===-1?[]:n.slice(r))},flatten:()=>{let e=new m;for(let n of t)if(Array.isArray(n))for(let t of n)e.add(t);else if(n&&typeof n==`object`&&Symbol.iterator in n)for(let t of n)e.add(t);else e.add(n);return h(e)},get head(){return Array.from(t)[0]},get headOption(){let e=Array.from(t)[0];return p(e)},toList:()=>E(Array.from(t)),toSet:()=>n,toArray:()=>Array.from(t),toString:()=>`Set(${Array.from(t).toString()})`,toValue:()=>({_tag:`Set`,value:Array.from(t)}),pipe:e=>e(Array.from(t)),serialize:()=>i(`Set`,Array.from(t))};return n},ne=e=>h(e),re={fromJSON:e=>g(JSON.parse(e).value),fromYAML:e=>{let t=e.split(`
5
- `)[1]?.split(`: `)[1];return g(t?JSON.parse(t):[])},fromBinary:e=>{let t=Buffer.from(e,`base64`).toString();return re.fromJSON(t)}},g=t(ne,re),_=e=>{let t=e;return{get(){return t},set(e){t=e},update(e){t=e(t)},getAndSet(e){let n=t;return t=e,n},updateAndGet(e){return t=e(t),t},getAndUpdate(e){let n=t;return t=e(t),n},compareAndSet(e,n){return t===e?(t=n,!0):!1},modify(e){let[n,r]=e(t);return t=n,r}}},v=t(_,{of:e=>_(e)}),y=(e=0)=>{let t=v(e),n=e;return{get:()=>t.get(),set:e=>t.set(e),increment:()=>t.updateAndGet(e=>e+1),decrement:()=>t.updateAndGet(e=>e-1),reset:()=>t.set(n),compareAndSet:(e,n)=>t.compareAndSet(e,n)}},b=()=>{let e=v([]);return{add:t=>e.update(e=>[...e,t]),addAll:t=>e.update(e=>[...e,...t]),build:()=>e.get(),clear:()=>e.set([]),size:()=>e.get().length}},x=e=>{let t={_tag:`LazyList`,[Symbol.iterator]:()=>e[Symbol.iterator](),map:t=>x((function*(){for(let n of e)yield t(n)})()),flatMap:t=>x((function*(){for(let n of e)yield*t(n)})()),filter:t=>x((function*(){for(let n of e)t(n)&&(yield n)})()),take:t=>x((function*(){let n=y(0);for(let r of e){if(n.get()>=t)break;yield r,n.increment()}})()),drop:t=>x((function*(){let n=y(0);for(let r of e)n.get()>=t&&(yield r),n.increment()})()),takeWhile:t=>x((function*(){for(let n of e){if(!t(n))break;yield n}})()),dropWhile:t=>x((function*(){let n=v(!0);for(let r of e)n.get()&&t(r)||(n.set(!1),yield r)})()),concat:t=>x((function*(){yield*e,yield*t})()),zip:t=>x((function*(){let n=e[Symbol.iterator](),r=t[Symbol.iterator]();for(;;){let e=n.next(),t=r.next();if(e.done||t.done)break;yield[e.value,t.value]}})()),toList:()=>E(Array.from(e)),toArray:()=>Array.from(e),forEach:t=>{for(let n of e)t(n)},reduce:(t,n)=>{let r=v(n);for(let n of e)r.set(t(r.get(),n));return r.get()},find:t=>{for(let n of e)if(t(n))return p(n);return p.none()},some:t=>{for(let n of e)if(t(n))return!0;return!1},every:t=>{for(let n of e)if(!t(n))return!1;return!0},count:()=>{let t=y(0);for(let n of e)t.increment();return t.get()},first:()=>{let t=e[Symbol.iterator]().next();return t.done?p.none():p(t.value)},last:()=>{let t=v(void 0),n=v(!1);for(let r of e)t.set(r),n.set(!0);return n.get()?p(t.get()):p.none()},fold:(t,n)=>{let r=e[Symbol.iterator]().next();return r.done?t():n(r.value)},foldLeft:t=>n=>{let r=v(t);for(let t of e)r.set(n(r.get(),t));return r.get()},foldRight:t=>n=>Array.from(e).reduceRight((e,t)=>n(t,e),t),pipe:e=>e(t),serialize:()=>{let t=Array.from(e);return{toJSON:()=>JSON.stringify({_tag:`LazyList`,value:t}),toYAML:()=>`_tag: LazyList\nvalue: ${r(t)}`,toBinary:()=>Buffer.from(JSON.stringify({_tag:`LazyList`,value:t})).toString(`base64`)}},toString:()=>{let t=[],n=y(0),r=v(!1);for(let i of e)if(n.get()<10)t.push(i),n.increment();else{r.set(!0);break}let i=t.map(e=>String(e)).join(`, `);return r.get()?`LazyList(${i}, ...)`:`LazyList(${i})`}};return t},ie=t(e=>x(e),{empty:()=>x([]),of:e=>x([e]),from:(...e)=>x(e),iterate:(e,t)=>x((function*(){let n=v(e);for(;;)yield n.get(),n.set(t(n.get()))})()),generate:e=>x((function*(){for(;;)yield e()})()),range:(e,t,n=1)=>x((function*(){if(n===0)throw Error(`Step cannot be zero`);let r=v(e);if(n>0)for(;r.get()<t;)yield r.get(),r.set(r.get()+n);else for(;r.get()>t;)yield r.get(),r.set(r.get()+n)})()),repeat:(e,t)=>x((function*(){if(t===void 0)for(;;)yield e;else{let n=y(0);for(;n.get()<t;)yield e,n.increment()}})()),cycle:e=>x((function*(){let t=Array.from(e);if(t.length!==0)for(;;)yield*t})())}),S=e=>({_tag:`Success`,error:void 0,isSuccess(){return!0},isFailure(){return!1},orElse:t=>e,orThrow:t=>e,or:t=>S(e),orNull:()=>e,orUndefined:()=>e,toEither:t=>D(e),map:t=>w(()=>t(e)),ap:t=>t.map(t=>t(e)),flatMap:t=>t(e),flatMapAsync:async t=>t(e),fold:(t,n)=>n(e),match:t=>t.Success(e),foldLeft:t=>n=>n(t,e),foldRight:t=>n=>n(e,t),toString:()=>`Success(${r(e)})`,toPromise:()=>Promise.resolve(e),toValue:()=>({_tag:`Success`,value:e}),toOption:()=>u(e),toList:()=>E([e]),toTry:()=>S(e),pipe:t=>t(e),serialize:()=>i(`Success`,e),get size(){return 1},get isEmpty(){return!1},contains:t=>e===t,reduce:t=>e,reduceRight:t=>e,count:t=>t(e)?1:0,find:t=>t(e)?p(e):p(void 0),exists:t=>t(e),forEach:t=>t(e),doUnwrap(){return{ok:!0,value:e}}}),C=e=>({_tag:`Failure`,error:e,isSuccess(){return!1},isFailure(){return!0},orElse:e=>e,orThrow:t=>{throw t??e},or:e=>e,orNull:()=>null,orUndefined:()=>void 0,toEither:t=>O(e),map:t=>C(e),ap:t=>C(e),flatMap:t=>C(e),flatMapAsync:t=>Promise.resolve(C(e)),fold:(t,n)=>t(e),match:t=>t.Failure(e),foldLeft:e=>t=>e,foldRight:e=>t=>e,toString:()=>`Failure(${r(e)}))`,toPromise:()=>Promise.reject(e),toValue:()=>({_tag:`Failure`,value:e}),toOption:()=>f(),toList:()=>E([]),toTry:()=>C(e),pipe:t=>{throw e},serialize:()=>a({_tag:`Failure`,error:e.message,stack:e.stack}),get size(){return 0},get isEmpty(){return!0},contains:e=>!1,reduce:e=>{throw Error(`Cannot reduce a Failure`)},reduceRight:e=>{throw Error(`Cannot reduceRight a Failure`)},count:e=>0,find:e=>p(null),exists:e=>!1,forEach:e=>{},doUnwrap(){return{ok:!1,empty:!1,error:e}}}),ae=e=>{try{return S(e())}catch(e){return C(e instanceof Error?e:Error(String(e)))}},oe={isSuccess:e=>e.isSuccess(),isFailure:e=>e.isFailure(),fromJSON:e=>{let t=JSON.parse(e);if(t._tag===`Success`)return S(t.value);{let e=Error(t.error);return t.stack&&(e.stack=t.stack),C(e)}},fromYAML:e=>{let t=e.split(`
6
- `),n=t[0]?.split(`: `)[1];if(!n)return C(Error(`Invalid YAML format for Try`));if(n===`Success`){let e=t[1]?.split(`: `)[1];return e?S(JSON.parse(e)):C(Error(`Invalid YAML format for Try Success`))}else{let e=t[1]?.split(`: `)[1];if(!e)return C(Error(`Invalid YAML format for Try Failure`));let n=t[2]?.split(`: `),r=n&&n.length>1?n.slice(1).join(`: `):void 0,i=Error(e);return r&&(i.stack=r),C(i)}},fromBinary:e=>{let t=Buffer.from(e,`base64`).toString();return oe.fromJSON(t)}},w=t(ae,oe);function se({_tag:e,impl:t}){return{...t,_tag:e}}function ce(e,t){return!e||typeof e!=`object`||!(`_tag`in e)?!1:t?e._tag===t:!0}const T=e=>{let t=Array.from(e??[]),n={_tag:`List`,[Symbol.iterator]:()=>t[Symbol.iterator](),get size(){return t.length},get length(){return t.length},map:e=>T(t.map(e)),ap:e=>T(t.flatMap(t=>Array.from(e).map(e=>e(t)))),flatMap:e=>T(t.flatMap(t=>Array.from(e(t)))),flatMapAsync:async e=>T((await Promise.all(t.map(async t=>await e(t)))).flatMap(e=>Array.from(e))),forEach:e=>t.forEach(e),contains:e=>t.includes(e),count:e=>t.filter(e).length,exists:e=>t.some(e),filter:e=>T(t.filter(e)),filterNot:e=>T(t.filter(t=>!e(t))),filterType:e=>T(t.filter(t=>ce(t,e))),find:(e,n)=>p(t.find(t=>e(t)&&(n?ce(t,n):!0))),get head(){return t[0]},get headOption(){return t.length>0?p(t[0]):f()},get isEmpty(){return t.length===0},toArray:()=>[...t],reduce:e=>t.reduce(e),reduceRight:e=>t.reduceRight(e),fold:(e,n)=>{if(t.length===0)return e();let r=t[0];return n(r)},foldLeft:e=>n=>t.reduce(n,e),foldRight:e=>n=>t.reduceRight((e,t)=>n(t,e),e),match:e=>t.length===0?e.Empty():e.NonEmpty([...t]),remove:e=>T(t.filter(t=>t!==e)),removeAt:e=>e<0||e>=t.length?n:T([...t.slice(0,e),...t.slice(e+1)]),add:e=>T([...t,e]),get:e=>p(t[e]),concat:e=>T([...t,...e.toArray()]),drop:e=>T(t.slice(e)),dropRight:e=>T(t.slice(0,-e)),dropWhile:e=>T(t.slice(t.findIndex(t=>!e(t)))),flatten:()=>T(t.flatMap(e=>Array.isArray(e)?e:[e])),toList:()=>n,toSet:()=>g(t),toOption:()=>t.length>0?p(t[0]):f(),toEither:e=>t.length>0?D(t[0]):O(e),toTry:()=>t.length>0?w(()=>t[0]):w(()=>{throw Error(`Empty list`)}),toString:()=>`List(${r(t)})`,toValue:()=>({_tag:`List`,value:t}),pipe:e=>e([...t]),serialize:()=>i(`List`,t),doUnwrap(){return t.length===0?{ok:!1,empty:!0}:{ok:!0,value:t[0]}}};return n},le=e=>T(e),ue={fromJSON:e=>E(JSON.parse(e).value),fromYAML:e=>{let t=e.split(`
7
- `)[1]?.split(`: `)[1];return E(t?JSON.parse(t):[])},fromBinary:e=>{let t=Buffer.from(e,`base64`).toString();return ue.fromJSON(t)}},E=t(le,ue),de=e=>({_tag:`Right`,value:e,isLeft(){return!1},isRight(){return!0},orElse:t=>e,orThrow:()=>e,or:t=>D(e),orNull:()=>e,orUndefined:()=>e,map:t=>D(t(e)),ap:t=>t._tag===`Right`?D(t.value(e)):O(t.value),mapAsync:t=>t(e).then(e=>D(e)).catch(e=>Promise.resolve(O(e))),merge:t=>t.isLeft()?O(t.value):D([e,t.value]),flatMap:t=>t(e),flatMapAsync:t=>t(e).catch(e=>O(e)),toOption:()=>u(e),toList:()=>E([e]),toEither:t=>D(e),toTry:()=>w(()=>e),toJSON(){return{_tag:`Right`,value:e}},toString:()=>`Right(${r(e)})`,*[Symbol.iterator](){yield e},*yield(){yield e},traverse:t=>{let n=t(e);return n.isLeft()?O(n.value):D([n.value])},*lazyMap(t){yield D(t(e))},tap:t=>(t(e),D(e)),tapLeft:t=>D(e),mapLeft:t=>D(e),bimap:(t,n)=>D(n(e)),fold:(t,n)=>n(e),foldLeft:t=>n=>n(t,e),foldRight:t=>n=>n(e,t),match:t=>t.Right(e),swap:()=>O(e),toPromise:()=>Promise.resolve(e),toValue:()=>({_tag:`Right`,value:e}),pipeEither:(t,n)=>n(e),pipe:t=>t(e),serialize:()=>i(`Right`,e),get size(){return 1},get isEmpty(){return!1},contains:t=>e===t,reduce:t=>e,reduceRight:t=>e,count:t=>t(e)?1:0,find:t=>t(e)?u(e):f(),exists:t=>t(e),forEach:t=>t(e),doUnwrap(){return{ok:!0,value:e}}}),fe=e=>({_tag:`Left`,value:e,isLeft(){return!0},isRight(){return!1},orElse:e=>e,orThrow:t=>{throw t??e},or:e=>e,orNull:()=>null,orUndefined:()=>void 0,map:t=>O(e),ap:t=>O(e),mapAsync:t=>Promise.resolve(O(e)),merge:t=>O(e),flatMap:t=>O(e),flatMapAsync:t=>Promise.resolve(O(e)),toOption:()=>f(),toList:()=>E(),toEither:e=>O(e),toTry:()=>w(()=>{throw Error(String(e))}),toJSON(){return{_tag:`Left`,value:e}},toString:()=>`Left(${r(e)})`,*[Symbol.iterator](){},*yield(){},traverse:t=>O(e),*lazyMap(t){yield O(e)},tap:t=>O(e),tapLeft:t=>(t(e),O(e)),mapLeft:t=>O(t(e)),bimap:(t,n)=>O(t(e)),fold:(t,n)=>t(e),foldLeft:e=>t=>e,foldRight:e=>t=>e,match:t=>t.Left(e),swap:()=>D(e),toPromise:()=>Promise.reject(e),toValue:()=>({_tag:`Left`,value:e}),pipeEither:(t,n)=>t(e),pipe:t=>t(e),serialize:()=>i(`Left`,e),get size(){return 0},get isEmpty(){return!0},contains:e=>!1,reduce:e=>{throw Error(`Cannot reduce a Left`)},reduceRight:e=>{throw Error(`Cannot reduceRight a Left`)},count:e=>0,find:e=>f(),exists:e=>!1,forEach:e=>{},doUnwrap(){return{ok:!1,empty:!1,error:e}}}),D=e=>de(e),O=e=>fe(e),pe=e=>e.isRight(),me=e=>e.isLeft(),he=(e,t)=>{try{return D(e())}catch(e){return O(t(e))}},ge=e=>de(e);console.assert(ge);const _e=e=>fe(e);console.assert(_e);const ve=async(e,t)=>{try{return D(await e())}catch(e){return O(t(e))}},ye=(e,t)=>t?D(e):O(e),be={left:e=>O(e),right:e=>D(e),isRight:e=>e.isRight(),isLeft:e=>e.isLeft(),sequence:e=>e.reduce((e,t)=>e.isLeft()?e:t.isLeft()?O(t.value):e.map(e=>[...e,t.value]),D([])),traverse:(e,t)=>be.sequence(e.map(t)),fromNullable:(e,t)=>e==null?O(t):D(e),fromPredicate:(e,t,n)=>t(e)?D(e):O(n),ap:(e,t)=>e.flatMap(e=>t.map(e)),fromPromise:async(e,t)=>{try{return D(await e)}catch(e){return O(t(e))}},fromJSON:e=>{let t=JSON.parse(e);return t._tag===`Right`?D(t.value):O(t.value)},fromYAML:e=>{let t=e.split(`
8
- `),n=t[0]?.split(`: `)[1],r=t[1]?.split(`: `)[1];if(!n||!r)throw Error(`Invalid YAML format for Either`);let i=JSON.parse(r);return n===`Right`?D(i):O(i)},fromBinary:e=>{let t=Buffer.from(e,`base64`).toString();return be.fromJSON(t)}},xe=t(ye,be);function k(t,n){return{brand:t,validate:n,of:r=>n(r)?p(e(t,r)):p.none(),from:r=>n(r)?D(e(t,r)):O(`Invalid ${t}: validation failed`),unsafeOf:r=>{if(!n(r))throw Error(`Invalid ${t}: validation failed`);return e(t,r)},is:e=>{try{return n(e)}catch{return!1}},unwrap:e=>e,refine:(e,t)=>k(e,e=>n(e)&&t(e))}}const Se=k(`PositiveNumber`,e=>e>0),Ce=k(`NonNegativeNumber`,e=>e>=0),we=k(`IntegerNumber`,e=>Number.isInteger(e)),Te=Se.refine(`PositiveInteger`,e=>Number.isInteger(e)),Ee=k(`NonEmptyString`,e=>e.length>0),De=k(`EmailAddress`,e=>/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(e)),Oe=k(`UrlString`,e=>{try{return new URL(e),!0}catch{return!1}}),ke=k(`UUID`,e=>/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i.test(e)),Ae=k(`ISO8601Date`,e=>!isNaN(Date.parse(e))&&/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}/.test(e));function je(e,t,n){return k(e,e=>e>=t&&e<=n)}function Me(e,t,n){return k(e,e=>e.length>=t&&e.length<=n)}function Ne(e,t){return k(e,e=>t.test(e))}const Pe=e=>typeof e==`function`&&Object.keys(e).length>0,Fe=e=>{let t=e=>typeof e==`function`?e():e,n={when:(r,i)=>e.resolved?n:r?Fe({resolved:!0,value:t(i)}):n,elseWhen:(r,i)=>e.resolved?n:r?Fe({resolved:!0,value:t(i)}):n,else:n=>e.resolved?e.value:t(n),orThrow:()=>{if(!e.resolved)throw Error(`Conditional expression has no matching condition`);return e.value}};return n},Ie=()=>Fe({resolved:!1}),Le=t(Ie,{of:()=>Ie(),match:e=>t=>{let n=t[e];if(n===void 0)throw Error(`No case defined for value: ${String(e)}`);return typeof n==`function`?n():n},lazy:()=>{let e={resolved:!1},t={when:(n,r)=>(e.resolved||n()&&(e.resolved=!0,e.value=r()),t),elseWhen:(n,r)=>(e.resolved||n()&&(e.resolved=!0,e.value=r()),t),else:t=>e.resolved?e.value:t()};return t}}),A=(e,t)=>t===e?!0:typeof t==`function`?t(e):t&&typeof t==`object`&&`_`in t?t._(e):typeof t==`object`&&t&&typeof e==`object`&&e?Object.entries(t).every(([t,n])=>{let r=e[t];return A(r,n)}):!1,j=e=>{let t=(e,t)=>typeof e==`function`?e(t):e,n=()=>{for(let{pattern:n,result:r}of e.patterns)if(A(e.value,n))return{matched:!0,result:t(r,e.value)};return{matched:!1}},r={case:(n,i)=>{if(e.resolved)return r;let a={...e,patterns:[...e.patterns,{pattern:n,result:i}]};return A(e.value,n)?j({...a,resolved:!0,result:t(i,e.value)}):j(a)},caseValue:(t,n)=>{if(e.resolved)return r;if(e.value===t){let t=typeof n==`function`?n():n;return j({...e,resolved:!0,result:t})}return r},caseValues:(t,n)=>{if(e.resolved)return r;if(t.includes(e.value)){let t=typeof n==`function`?n():n;return j({...e,resolved:!0,result:t})}return r},when:(e,t)=>r.case(e,t),caseAny:(n,i)=>{if(e.resolved)return r;for(let r of n)if(A(e.value,r))return j({...e,resolved:!0,result:t(i,e.value),patterns:[...e.patterns,{pattern:r,result:i}]});return j({...e,patterns:[...e.patterns,...n.map(e=>({pattern:e,result:i}))]})},default:n=>e.resolved?e.result:t(n,e.value),exhaustive:()=>{let t=n();if(!t.matched)throw Error(`Non-exhaustive match. No pattern matched value: ${JSON.stringify(e.value)}`);return t.result},orThrow:t=>{let r=n();if(!r.matched)throw Error(t??`No matching pattern for value: ${JSON.stringify(e.value)}`);return r.result},toOption:()=>{let e=n();return e.matched?p(e.result):p.none()}};return r},Re=t(e=>j({value:e,resolved:!1,patterns:[]}),{exhaustive:e=>t=>{let n=e[t];if(n===void 0)throw Error(`No case defined for value: ${String(t)}`);return n},partial:e=>({withDefault:t=>n=>{let r=e[n];return r===void 0?typeof t==`function`?t(n):t:typeof r==`function`?r(n):r}}),withGuards:e=>({withDefault:t=>n=>{for(let[t,r]of e)if(t(n))return typeof r==`function`?r(n):r;return typeof t==`function`?t(n):t}}),struct:()=>{let e=[],t={case:(n,r)=>(e.push({pattern:n,handler:r}),t),build:()=>t=>{for(let{pattern:n,handler:r}of e)if(A(t,n))return r(t);throw Error(`No matching pattern for value: ${JSON.stringify(t)}`)}};return t},builder:()=>{let e=[],t,n={case:(t,r)=>(e.push({pattern:t,result:r}),n),when:(t,r)=>(e.push({pattern:t,result:r}),n),default:n=>(t=n,{build:()=>n=>{for(let{pattern:t,result:r}of e)if(A(n,t))return typeof r==`function`?r(n):r;if(t!==void 0)return typeof t==`function`?t(n):t;throw Error(`No matching pattern for value: ${JSON.stringify(n)}`)}})};return n}});function M(e,t){return{...se({_tag:e,impl:t}),toString(){return`${e}()`},doUnwrap(){if(`isSome`in t&&`isNone`in t){if(typeof t.isSome==`function`&&t.isSome()&&`get`in t&&typeof t.get==`function`)return{ok:!0,value:t.get()};if(typeof t.isNone==`function`&&t.isNone())return{ok:!1,empty:!0}}if(`isLeft`in t&&`isRight`in t){if(typeof t.isRight==`function`&&t.isRight()&&`value`in t)return{ok:!0,value:t.value};if(typeof t.isLeft==`function`&&t.isLeft()&&`value`in t)return{ok:!1,empty:!1,error:t.value}}if(`isSuccess`in t&&`isFailure`in t){if(typeof t.isSuccess==`function`&&t.isSuccess()&&`get`in t&&typeof t.get==`function`)return{ok:!0,value:t.get()};if(typeof t.isFailure==`function`&&t.isFailure()&&`getError`in t&&typeof t.getError==`function`)return{ok:!1,empty:!1,error:t.getError()}}if(`isEmpty`in t&&`head`in t){if(typeof t.isEmpty==`function`&&t.isEmpty())return{ok:!1,empty:!0};if(typeof t.head==`function`)return{ok:!0,value:t.head()};if(`head`in t)return{ok:!0,value:t.head}}return{ok:!0,value:t}}}}const N=`Throwable`;var P=class e extends Error{constructor(e,t){super(e,{cause:t?.cause}),this._tag=N,this.name=t?.taskInfo?.name??N,Object.defineProperties(this,{_tag:{value:N,writable:!1,configurable:!1},data:{value:t?.data,writable:!1,configurable:!1},taskInfo:{value:t?.taskInfo,writable:!1,configurable:!1},name:{value:t?.taskInfo?.name??N,writable:!1,configurable:!1}}),t?.cause&&Object.defineProperty(this,`cause`,{value:t.cause,writable:!1,configurable:!1}),t?.stack?this.stack=t.stack:Error.captureStackTrace&&Error.captureStackTrace(this,this.constructor)}static apply(t,n,r){if(t instanceof Error){let i=new e(t.message,{data:n,cause:t.cause??void 0,stack:t.stack??void 0,taskInfo:r});for(let e of Object.keys(t))if(!(e in i)){let n=i;n[e]=t[e]}return i}if(t&&typeof t==`object`){let i=t,a=new e(typeof i.message==`string`?i.message:typeof i.error==`string`?i.error:`Object error: ${JSON.stringify(i,Object.getOwnPropertyNames(i).filter(e=>i[e]!==void 0))}`,{data:n??i,taskInfo:r});for(let e of Object.keys(i))if(!(e in a)){let t=a;t[e]=i[e]}return a}if(typeof t==`function`){let i=t.name??`anonymous function`,a=t.toString().substring(0,100)+(t.toString().length>100?`...`:``);return new e(`Function error: ${i}`,{data:n??{functionType:typeof t,functionName:i,functionString:a},taskInfo:r})}let i=typeof t,a=t===null?`null`:t===void 0?`undefined`:String(t);if(i===`number`){let a=t;return new e(Number.isNaN(a)?`Number error: NaN`:Number.isFinite(a)?`Number error: ${a}`:`Number error: ${a>0?`Infinity`:`-Infinity`}`,{data:n??{errorType:i,errorValue:a,originalError:t},taskInfo:r})}if(i===`bigint`)return new e(`BigInt error: ${t}n`,{data:n??{errorType:i,errorValue:String(t),originalError:t},taskInfo:r});if(i===`boolean`)return new e(`Boolean error: ${t}`,{data:n??{errorType:i,errorValue:t,originalError:t},taskInfo:r});if(i===`symbol`){let a=t.description??`unnamed symbol`;return new e(`Symbol error: Symbol(${a})`,{data:n??{errorType:i,symbolDescription:a,originalError:t},taskInfo:r})}return new e(typeof t==`string`?t:`${i.charAt(0).toUpperCase()+i.slice(1)} error: ${a}`,{data:n??{errorType:i,errorValue:a,originalError:t},taskInfo:r})}};const F=e=>{let t=new Promise((t,n)=>{try{e(t,n)}catch(e){n(e)}});return{_tag:`FPromise`,map:e=>F((n,r)=>{t.then(t=>{try{n(e(t))}catch(e){r(e)}}).catch(r)}),flatMap:e=>F((n,r)=>{t.then(t=>{try{let i=e(t);`_tag`in i&&i._tag===`FPromise`?i.then(n,r):Promise.resolve(i).then(n,r)}catch(e){r(e)}}).catch(r)}),flatMapAsync:async e=>{let n=e(await t);return n instanceof Promise?n:new Promise((e,t)=>{n.then(e,t)})},tap:e=>F((n,r)=>{t.then(t=>{try{e(t),n(t)}catch(e){r(e)}}).catch(r)}),mapError:e=>F((n,r)=>{t.then(n).catch(t=>{try{r(e(t,{originalError:t,stack:t instanceof Error?t.stack:void 0,timestamp:Date.now()}))}catch(e){r(e)}})}),tapError:e=>F((n,r)=>{t.then(n).catch(t=>{try{e(t),r(t)}catch(e){r(e)}})}),recover:e=>F(n=>{t.then(n).catch(()=>n(e))}),recoverWith:e=>F(n=>{t.then(n).catch(t=>{try{n(e(t))}catch{n(null)}})}),recoverWithF:e=>F((n,r)=>{t.then(n).catch(t=>{try{e(t).then(n,r)}catch(e){r(e)}})}),filterError:(e,n)=>F((r,i)=>{t.then(r).catch(t=>{if(e(t))try{n(t).then(r,i)}catch(e){i(e)}else i(t)})}),logError:e=>F((n,r)=>{t.then(n).catch(t=>{try{e(t,{originalError:t,stack:t instanceof Error?t.stack:void 0,timestamp:Date.now()})}catch{}finally{r(t)}})}),then:(e,n)=>t.then(e,n),toPromise:()=>t,toEither:async()=>{try{return D(await t)}catch(e){return O(e)}},fold:(e,n)=>F((r,i)=>{t.then(e=>{try{r(n(e))}catch(e){i(e)}}).catch(t=>{try{r(e(t))}catch(e){i(e)}})})}},ze={resolve:e=>F(t=>t(e)),reject:e=>F((t,n)=>n(e)),from:e=>F((t,n)=>{e.then(t).catch(n)}),fromEither:e=>e.isRight()?F(t=>t(e.value)):F((t,n)=>n(e.value)),all:e=>F((t,n)=>{Promise.all(e.map(e=>e instanceof Promise?e:Promise.resolve(e))).then(t).catch(n)}),allSettled:e=>F(t=>{let n=[],r=0;if(e.length===0){t([]);return}e.forEach((i,a)=>{Promise.resolve(i).then(i=>{n[a]=D(i),r++,r===e.length&&t(n)}).catch(i=>{n[a]=O(i),r++,r===e.length&&t(n)})})}),race:e=>F((t,n)=>{Promise.race(e).then(t,n)}),any:e=>F((t,n)=>{if(typeof Promise.any==`function`)Promise.any(e).then(t,n);else{let r=0,i=[];if(e.length===0){n(AggregateError([],`All promises were rejected`));return}e.forEach((a,o)=>{Promise.resolve(a).then(t).catch(t=>{i[o]=t,r++,r===e.length&&n(AggregateError(i,`All promises were rejected`))})})}}),retryWithBackoff:(e,t)=>{let{maxRetries:n,baseDelay:r=100,shouldRetry:i=()=>!0}=t;return F((t,a)=>{let o=0,s=()=>{e().toPromise().then(t).catch(e=>{if(o++,o<=n&&i(e,o)){let e=r*2**(o-1);setTimeout(s,e)}else a(e)})};s()})}},Be=t(F,ze);function Ve(e){return e instanceof Error&&typeof e==`object`&&e._tag===`Throwable`}const He=(e,t)=>{if(e.isRight())return L(e.orThrow(),t);if(e.isLeft())return I(e.fold(e=>e,()=>Error(`Unexpected right value`)),void 0,t);throw Error(`Unrecognized task outcome`)},I=(e,t,n)=>{let i={name:n?.name??`Task`,description:n?.description??``},a=P.apply(e,t,i),o={...M(`Err`,{error:a,meta:i}),_tag:`Err`,_meta:i,value:void 0,error:a,isSuccess(){return!1},isFailure(){return!0},isOk(){return!1},isErr(){return!0},map:e=>I(a,t,n),flatMap:e=>I(a,t,n),ap:e=>I(a,t,n),mapAsync:e=>Promise.resolve(I(a,t,n)),flatMapAsync:e=>Promise.resolve(I(a,t,n)),mapError:e=>I(e(a),t,n),recover:e=>L(e,n),recoverWith:e=>L(e(a),n),orThrow:e=>{throw e??a},orElse:e=>e,or:e=>e,orNull:()=>null,orUndefined:()=>void 0,toEither:()=>O(a),toTry:()=>w(()=>{throw a}),toOption:()=>f(),toList:()=>E([]),fold:(e,t)=>e(a),match:e=>e.Err(a),foldLeft:e=>t=>e,foldRight:e=>t=>e,size:0,isEmpty:!0,contains:e=>!1,reduce:e=>{throw Error(`Cannot reduce empty Err`)},reduceRight:e=>{throw Error(`Cannot reduceRight empty Err`)},count:e=>0,find:e=>f(),exists:e=>!1,forEach:e=>{},toPromise:()=>Promise.reject(a),doUnwrap(){return{ok:!1,empty:!1,error:a}},serialize:()=>({toJSON:()=>r({_tag:`Err`,error:a.message??a.toString()})??`{}`,toYAML:()=>`_tag: Err\nerror: ${a.message??a.toString()}`,toBinary:()=>Buffer.from(JSON.stringify({_tag:`Err`,error:a.message??a.toString()})).toString(`base64`)}),pipe:e=>e(o)};return o},L=(e,t)=>{let n={name:t?.name??`Task`,description:t?.description??``},i={...M(`Ok`,{value:e,meta:n}),_tag:`Ok`,_meta:n,value:e,error:void 0,isSuccess(){return!0},isFailure(){return!1},isOk(){return!0},isErr(){return!1},map:n=>L(n(e),t),flatMap:n=>{let r=n(e);return r&&typeof r==`object`&&`isLeft`in r&&`isRight`in r?He(r,t):r},ap:n=>n.isOk()?L(n.value(e),t):I(n.error,void 0,t),mapAsync:async n=>L(await n(e),t),flatMapAsync:async t=>await t(e),mapError:n=>L(e,t),recover:n=>L(e,t),recoverWith:n=>L(e,t),orThrow:t=>e,orElse:t=>e,or:n=>L(e,t),orNull:()=>e,orUndefined:()=>e,toEither:()=>D(e),toTry:()=>w(()=>e),toOption:()=>u(e),toList:()=>E([e]),fold:(t,n)=>n(e),match:t=>t.Ok(e),foldLeft:t=>n=>n(t,e),foldRight:t=>n=>n(e,t),size:1,isEmpty:!1,contains:t=>e===t,reduce:t=>e,reduceRight:t=>e,count:t=>t(e)?1:0,find:t=>t(e)?u(e):f(),exists:t=>t(e),forEach:t=>t(e),toPromise:()=>Promise.resolve(e),doUnwrap(){return{ok:!0,value:e}},serialize:()=>({toJSON:()=>r({_tag:`Ok`,value:e})??`{}`,toYAML:()=>`_tag: Ok\nvalue: ${r(e)??`undefined`}`,toBinary:()=>Buffer.from(JSON.stringify({_tag:`Ok`,value:e})).toString(`base64`)}),pipe:e=>e(i)};return i},Ue=()=>{let e=new AbortController,t=b();return{token:{get isCancelled(){return e.signal.aborted},get signal(){return e.signal},onCancel(n){e.signal.aborted?n():t.add(n)}},cancel(){e.signal.aborted||(e.abort(),t.build().forEach(e=>{try{e()}catch(e){console.error(`Error in cancellation callback:`,e)}}))}}},We=e=>{let t=e?.name??`Task`,n=e?.description??``,r={Async:(e,r=e=>e,i=()=>{},a)=>Be((o,s)=>{(async()=>{let s=v(!1),c=v(null),l=v(()=>{});if(a){if(a.isCancelled){try{await i()}catch(e){o(I(e,void 0,{name:t,description:n}));return}o(I(Error(`Task was cancelled before execution started`),void 0,{name:t,description:n}));return}a.onCancel(()=>{s.set(!0),c.set(Error(`Task was cancelled during execution`))}),l.set(()=>{})}try{let r=await e();try{await i()}catch(e){o(I(e,void 0,{name:t,description:n}));return}if(s.get()){c.get()?o(I(c.get(),void 0,{name:t,description:n})):o(I(Error(`Task was cancelled during execution`),void 0,{name:t,description:n}));return}if(r&&typeof r==`object`&&`_tag`in r){let e=r;e._tag===`Ok`||e._tag===`Err`?o(e):o(L(r,{name:t,description:n}))}else o(L(r,{name:t,description:n}))}catch(e){try{await i()}catch(e){o(I(e,void 0,{name:t,description:n}));return}if(s.get()){c.get()?o(I(c.get(),void 0,{name:t,description:n})):o(I(Error(`Task was cancelled during execution`),void 0,{name:t,description:n}));return}try{if(e instanceof Error&&Ve(e)){let i=Error(`${t}: ${e.message}`),a=P.apply(i,void 0,{name:t,description:n});Object.defineProperty(a,`cause`,{value:e,writable:!1,configurable:!1}),Promise.resolve().then(()=>{try{r(e)}catch(e){console.error(`Error in error handler:`,e)}}),o(I(a,void 0,{name:t,description:n}))}else{let i=await r(e);if(i&&typeof i==`object`&&`_tag`in i){let e=i;e._tag===`Ok`||e._tag===`Err`?o(e):o(I(i,void 0,{name:t,description:n}))}else o(I(i,void 0,{name:t,description:n}))}}catch(e){o(I(e,void 0,{name:t,description:n}))}}finally{l.get()()}})().catch(e=>o(I(e,void 0,{name:t,description:n})))}),Sync:(e,r=e=>e,i=()=>{})=>{try{return L(e(),{name:t,description:n})}catch(e){return I(r(e),void 0,{name:t,description:n})}finally{i()}},AsyncWithProgress:(e,t,n=e=>e,i=()=>{},a)=>{let o=e=>{let n=Math.max(0,Math.min(100,e));n<=100&&t(n)};return r.Async(()=>e(o),n,i,a)}};return{...M(`Task`,r),_type:`Task`}},Ge={success:(e,t)=>L(e,t),fail:(e,t,n)=>I(e,t,n),ok:(e,t)=>L(e,t),err:(e,t,n)=>I(e,t,n),fromEither:(e,t)=>He(e,t),fromTry:(e,t)=>e.isSuccess()?L(e.orThrow(),t):I(e.fold(e=>e,()=>Error(`Unexpected success`)),void 0,t),getErrorChain:e=>{if(!e)return[];let t=b();t.add(e);let n=v(e);for(;n.get()&&n.get().cause;){let{cause:e}=n.get();if(e)t.add(e),n.set(e);else break;if(t.size()>100)break}return t.build()},formatErrorChain:(e,t)=>{let n=Ge.getErrorChain(e),r=t?.separator??`
9
- `;return n.map((e,n)=>{if(!e)return`${n>0?`↳ `:``}Unknown error`;let{taskInfo:r}=e,i=t?.includeTasks&&r?.name?`[${r.name}] `:``,a=e.message??`No message`,o=v(`${n>0?`↳ `:``}${i}${a}`);return t?.includeStackTrace&&e.stack&&o.set(`${o.get()}\n${e.stack.split(`
10
- `).slice(1).join(`
11
- `)}`),o.get()}).join(r)},fromPromise:(e,t)=>(...n)=>R(t??{name:`PromiseTask`,description:`Task from Promise`}).Async(()=>e(...n),e=>e),toPromise:e=>new Promise((t,n)=>{e.isSuccess()?t(e.orThrow()):n(e.error)}),race:(e,t,n)=>R({name:n?.name??`TaskRace`,description:n?.description??`Race between multiple tasks`}).Async(async()=>{let n=b();e.forEach(e=>n.add(e));let r=v(void 0);if(typeof t==`number`&&t>0){let e=Be((e,n)=>{r.set(setTimeout(()=>{n(Error(`Task race timed out after ${t}ms`))},t))});n.add(e)}try{return await new Promise((e,t)=>{n.build().forEach(n=>{n.then(n=>{if(n&&typeof n==`object`&&`_tag`in n){let r=n;r._tag===`Ok`?e(r.orThrow()):r._tag===`Err`?t(r.error):e(n)}else e(n)},e=>t(e))})})}finally{r.get()&&clearTimeout(r.get())}},e=>e),fromNodeCallback:(e,t)=>{let n={name:t?.name??`NodeCallbackTask`,description:t?.description??`Task from Node.js callback function`};return(...t)=>R(n).Async(()=>new Promise((n,r)=>{try{e(...t,(e,t)=>{e?r(e):n(t)})}catch(e){r(e)}}),e=>e)},createCancellationTokenSource:Ue,cancellable:(e,t)=>{let n=Ue();return{task:R(t).Async(()=>e(n.token),e=>e,()=>{},n.token),cancel:()=>n.cancel()}},withProgress:(e,t=()=>{},n)=>{let r=Ue(),i=v(0),a=e=>{i.set(Math.max(0,Math.min(100,e))),t(i.get())};return{task:R(n).Async(()=>e(a,r.token),e=>e,()=>{},r.token),cancel:()=>r.cancel(),currentProgress:()=>i.get()}}},R=t(We,Ge);function Ke(e){if(!e||typeof e!=`object`||!(`_tag`in e))return`unknown`;switch(e._tag){case`Some`:case`None`:return`Option`;case`Left`:case`Right`:return`Either`;case`List`:return`List`;case`Success`:case`Failure`:return`Try`;default:return`unknown`}}const qe={Option:{of:e=>p(e),empty:()=>p.none()},Either:{of:e=>D(e),empty:e=>O(e)},List:{of:e=>E([e]),empty:()=>E([])},Try:{of:e=>w(()=>e),empty:e=>w(()=>{throw e??Error(`Try failed`)})}};function Je(e){let t=e(),n=null,r;function i(a){let o=t.next(a);if(o.done)return r?r.of(o.value):E([o.value]);let s=o.value;if(typeof s!=`object`||!s)throw Error(`Do-notation error: All yielded values must be monadic. Use yield* $(Option(value)), yield* $(Right(value)), etc. Raw values should be assigned directly without yielding.`);if(!n&&`_tag`in s&&(n=Ke(s),n!==`unknown`&&n in qe&&(r=qe[n]),n===`List`))return Ye(e);if(`doUnwrap`in s){let e=s.doUnwrap();if(!e.ok){if(!r)return E([]);if(!e.empty&&`error`in e){if(n===`Either`)return r.empty(e.error);if(n===`Try`)return r.empty(e.error instanceof Error?e.error:Error(String(e.error)))}return r.empty()}return i(e.value)}throw Error(`Do-notation error: All yielded values must be monadic. Use yield* $(Option(value)), yield* $(Right(value)), etc. Raw values should be assigned directly without yielding.`)}return i()}function Ye(e){function t(e){if(typeof e!=`object`||!e||!(`doUnwrap`in e))return[e];let t=e;if(`toArray`in t){let e=t.toArray();return e.length===0?[]:e}let n=t.doUnwrap();return n.ok?[n.value]:[]}function n(r){let i=e(),a=[],o=[],s=0;function c(e){let l=i.next(e);if(l.done){a.push(l.value);return}if(s<r.length){let e=r[s];o.push(e),s++,c(e);return}let u=t(l.value);if(u.length!==0)if(u.length>1){let e=u.flatMap(e=>n([...o,e]));a.push(...e)}else o.push(u[0]),s++,c(u[0])}return c(void 0),a}return E(n([]))}async function Xe(e){let t=e(),n=null,r;async function i(e){let a=await t.next(e);if(a.done)return r?r.of(a.value):E([a.value]);let o=await Promise.resolve(a.value);if(typeof o!=`object`||!o)return i(o);if(!n&&`_tag`in o&&(n=Ke(o),n!==`unknown`&&n in qe&&(r=qe[n])),`doUnwrap`in o){let e=o.doUnwrap();if(!e.ok){if(!r)return E([]);if(!e.empty&&`error`in e){if(n===`Either`)return r.empty(e.error);if(n===`Try`)return r.empty(e.error instanceof Error?e.error:Error(String(e.error)))}return r.empty()}return i(e.value)}return i(o)}return i()}function Ze(e){return typeof e==`object`&&!!e&&`doUnwrap`in e&&typeof e.doUnwrap==`function`}function Qe(e){let t=e.doUnwrap();if(t.ok)return t.value;throw`error`in t?t.error:Error(`Cannot unwrap empty monad`)}function*$e(e){return yield e}const et=(e=`Cannot unwrap None in Do-notation`)=>{let t=Error(e),n=Object.create(Error.prototype);return n.message=t.message,n.stack=t.stack,n.name=`NoneError`,n},tt=(e,t=`Cannot unwrap Left in Do-notation`)=>{let n=Error(t),r=Object.create(Error.prototype);return r.message=n.message,r.stack=n.stack,r.name=`LeftError`,r.value=e,r},nt=(e=`Cannot unwrap empty List in Do-notation`)=>{let t=Error(e),n=Object.create(Error.prototype);return n.message=t.message,n.stack=t.stack,n.name=`EmptyListError`,n},rt=(e,t=`Cannot unwrap Failure in Do-notation`)=>{let n=Error(t),r=Object.create(Error.prototype);return r.message=n.message,r.stack=n.stack,r.name=`FailureError`,r.cause=e,r},it={includeTasks:!0,includeStackTrace:!1,separator:`
12
- `,includeData:!1,maxStackFrames:3,title:`Error`,colors:!1};function at(e){let t=new WeakSet;return JSON.stringify(e,(e,n)=>{if(typeof n==`bigint`)return`${n.toString()}n`;if(typeof n==`object`&&n){if(t.has(n))return`[Circular Reference]`;t.add(n)}return e===`stack`&&typeof n==`string`?z(n):n},2)}function z(e){if(e===void 0||e===``)return``;let t=e.split(`
13
- `);return[t[0],...t.slice(1).map(e=>e.trim())].join(`
14
- `)}function ot(e,t){let n={...it,...t},r=e instanceof Error?e:P.apply(e),i=R?.getErrorChain?R.getErrorChain(r):[r],a=`${n.colors?`\x1b[31m${n.title}:\x1b[0m ${r.message}`:`${n.title}: ${r.message}`}\n\n${i.map((e,t)=>{let r=` `.repeat(t),i=t>0?`↳ `:``,{taskInfo:a}=e,o=`${r}${i}${n.includeTasks&&a?.name?n.colors?`\x1b[36m[${a.name}]\x1b[0m `:`[${a.name}] `:``}${e.message}`;if(n.includeStackTrace&&e.stack){let t=z(e.stack).split(`
15
- `).slice(1),i=n.maxStackFrames??it.maxStackFrames??3,a=t.slice(0,i).map(e=>`${r} ${n.colors?`\x1B[90m`:``}${e}${n.colors?`\x1B[0m`:``}`).join(`
16
- `);o+=`\n${a}`,t.length>i&&(o+=`\n${r} ${n.colors?`\x1B[90m`:``}...${t.length-i} more stack frames${n.colors?`\x1B[0m`:``}`)}return o}).join(n.separator)}`;if(n.includeData){let{data:e}=r;if(e){let t=n.colors?`\n\n\x1b[33mContext:\x1b[0m\n${at(e)}`:`\n\nContext:\n${at(e)}`;a+=t}}return a}function st(){return function(e){if(!e)return e;let t=e instanceof Error?e:Error(String(e)),n={message:t.message,name:t.name||`Error`,stack:t.stack?z(t.stack):void 0};if(t.taskInfo&&(n.taskInfo=t.taskInfo),t.data&&(n.data=t.data),typeof R?.getErrorChain==`function`)try{let e=R.getErrorChain(t);e.length>1&&(n.errorChain=R.formatErrorChain(t,{includeTasks:!0}),n.structuredErrorChain=e.map(e=>({message:e.message,name:e.name,taskInfo:e.taskInfo,stack:e.stack?z(e.stack):void 0})))}catch{}return Object.getOwnPropertyNames(t).forEach(e=>{n[e]||(n[e]=t[e])}),n}}const ct=e=>{let t=Error(e);return t.name=`ParseError`,t},B=(e,t,n,r)=>{let i=P.apply(t,n,{name:e,description:t});return Object.assign(i,{code:e,message:t,status:lt(e),context:n,timestamp:new Date().toISOString(),traceId:r?.traceId})},lt=e=>({VALIDATION_FAILED:400,BAD_REQUEST:400,AUTH_REQUIRED:401,PERMISSION_DENIED:403,NOT_FOUND:404,TIMEOUT:408,CONFLICT:409,RATE_LIMITED:429,INTERNAL_ERROR:500,NETWORK_ERROR:503})[e],V=Object.assign(B,{validation:(e,t,n)=>B(`VALIDATION_FAILED`,`Validation failed: ${e} ${n}`,{field:e,value:t,rule:n}),network:(e,t,n)=>B(`NETWORK_ERROR`,`Network error: ${t} ${e}${n?` (${n})`:``}`,{url:e,method:t,statusCode:n}),auth:(e,t)=>B(`AUTH_REQUIRED`,`Authentication required: ${e}${t?` (role: ${t})`:``}`,{resource:e,requiredRole:t}),notFound:(e,t)=>B(`NOT_FOUND`,`Not found: ${e} with id ${t}`,{resource:e,id:t}),permission:(e,t,n)=>B(`PERMISSION_DENIED`,`Permission denied: cannot ${e} ${t}`,{action:e,resource:t,userId:n}),rateLimit:(e,t,n)=>B(`RATE_LIMITED`,`Rate limit exceeded: ${e} requests per ${t}`,{limit:e,window:t,retryAfter:n}),internal:e=>B(`INTERNAL_ERROR`,`Internal server error: ${e}`,{errorId:e,timestamp:new Date().toISOString()}),badRequest:(e,t)=>B(`BAD_REQUEST`,`Bad request: ${e}`,{reason:e,expected:t}),conflict:(e,t)=>B(`CONFLICT`,`Conflict: ${e} already exists with value ${t}`,{resource:e,conflictingValue:t}),timeout:(e,t)=>B(`TIMEOUT`,`Request timeout: ${t} exceeded ${e}ms`,{duration:e,operation:t}),isTypedError:e=>typeof e==`object`&&!!e&&`code`in e&&`message`in e&&`status`in e&&`context`in e&&`_tag`in e&&e._tag===`Throwable`,hasCode:(e,t)=>e.code===t}),H={rule:e=>t=>{if(e===`email`)return typeof t!=`string`||!/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(t)?O(V.validation(`value`,t,`must be a valid email`)):D(t);if(e===`url`)try{return new URL(String(t)),D(t)}catch{return O(V.validation(`value`,t,`must be a valid URL`))}if(e===`uuid`)return typeof t!=`string`||!/^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i.test(t)?O(V.validation(`value`,t,`must be a valid UUID`)):D(t);if(e===`required`)return t==null||t===``?O(V.validation(`value`,t,`is required`)):D(t);if(e===`numeric`)return typeof t!=`number`&&!/^\d+$/.test(String(t))?O(V.validation(`value`,t,`must be numeric`)):D(t);if(e===`alpha`)return typeof t!=`string`||!/^[a-zA-Z]+$/.test(t)?O(V.validation(`value`,t,`must contain only letters`)):D(t);if(e===`alphanumeric`)return typeof t!=`string`||!/^[a-zA-Z0-9]+$/.test(t)?O(V.validation(`value`,t,`must be alphanumeric`)):D(t);if(e.startsWith(`min:`)){let n=Number(e.split(`:`)[1]),r=Number(t);return isNaN(r)||r<n?O(V.validation(`value`,t,`must be at least ${n}`)):D(t)}if(e.startsWith(`max:`)){let n=Number(e.split(`:`)[1]),r=Number(t);return isNaN(r)||r>n?O(V.validation(`value`,t,`must be at most ${n}`)):D(t)}if(e.startsWith(`minLength:`)){let n=Number(e.split(`:`)[1]);return String(t).length<n?O(V.validation(`value`,t,`must be at least ${n} characters`)):D(t)}if(e.startsWith(`maxLength:`)){let n=Number(e.split(`:`)[1]);return String(t).length>n?O(V.validation(`value`,t,`must be at most ${n} characters`)):D(t)}if(e.startsWith(`pattern:`)){let n=e.substring(8);return new RegExp(n).test(String(t))?D(t):O(V.validation(`value`,t,`must match pattern ${n}`))}if(e.startsWith(`in:`)){let n=e.substring(3).split(`,`);return n.includes(String(t))?D(t):O(V.validation(`value`,t,`must be one of: ${n.join(`, `)}`))}if(e.startsWith(`notIn:`)){let n=e.substring(6).split(`,`);return n.includes(String(t))?O(V.validation(`value`,t,`must not be one of: ${n.join(`, `)}`)):D(t)}if(e===`date`){let e=new Date(String(t));return isNaN(e.getTime())?O(V.validation(`value`,t,`must be a valid date`)):D(t)}if(e===`future`){let e=new Date(String(t));return isNaN(e.getTime())||e<=new Date?O(V.validation(`value`,t,`must be a future date`)):D(t)}if(e===`past`){let e=new Date(String(t));return isNaN(e.getTime())||e>=new Date?O(V.validation(`value`,t,`must be a past date`)):D(t)}return D(t)},combine:(...e)=>t=>{for(let n of e){let e=n(t);if(e.isLeft())return e}return D(t)},custom:(e,t)=>n=>e(n)?D(n):O(V.validation(`value`,n,t)),form:(e,t)=>{let n=[],r={};for(let[i,a]of Object.entries(e)){let e=t[i],o=a(e);if(o.isLeft()){let t=o.fold(e=>e,()=>{throw Error(`Should not be left`)}),r=V.validation(i,e,t.context.rule);n.push(r)}else r[i]=o.orThrow()}return n.length>0?O(E(n)):D(r)}},ut={...H,validators:{email:H.rule(`email`),url:H.rule(`url`),uuid:H.rule(`uuid`),required:H.rule(`required`),numeric:H.rule(`numeric`),positiveNumber:H.combine(H.rule(`numeric`),H.rule(`min:0`)),nonEmptyString:H.combine(H.rule(`required`),H.custom(e=>typeof e==`string`&&e.trim().length>0,`must not be empty`))}},dt=Object.assign(H.rule,ut);function ft(e){return typeof e==`object`&&!!e&&`orThrow`in e&&typeof e.orThrow==`function`}function pt(e){return ft(e)&&`orElse`in e&&typeof e.orElse==`function`&&`or`in e&&typeof e.or==`function`&&`orNull`in e&&typeof e.orNull==`function`&&`orUndefined`in e&&typeof e.orUndefined==`function`}const mt={toOption:e=>e.fold(()=>f(),e=>u(e)),toList:e=>e.fold(()=>E([]),e=>E([e])),toEither:(e,t)=>e.fold(()=>O(t),e=>D(e)),isEmpty:e=>e.fold(()=>!0,()=>!1),size:e=>e.fold(()=>0,()=>1)},U=e=>typeof e==`object`&&!!e&&(e._tag===`Some`||e._tag===`None`),W=e=>typeof e==`object`&&!!e&&e._tag===`List`,G=e=>typeof e==`object`&&!!e&&(e._tag===`Left`||e._tag===`Right`),K=e=>typeof e==`object`&&!!e&&(e._tag===`Success`||e._tag===`Failure`),q=()=>{let e=(e,t)=>{if(U(e)||W(e)||G(e)||K(e))return e.map(e=>t(e));throw Error(`Unsupported functor type: ${JSON.stringify(e)}`)},t=e=>{if(U(e))return e.orThrow();if(W(e)){let t=e.toArray();if(t.length>0&&W(t[0])){let e=[];for(let n of t)W(n)&&e.push(...n.toArray());return E(e)}return e.flatten()}if(G(e))return e.isRight()?e.fold(()=>null,e=>e):e;if(K(e))return e.isSuccess()?e.orThrow():e;throw Error(`Unsupported functor type for flatten: ${JSON.stringify(e)}`)},n=(e,t)=>{if(U(e)||W(e)||G(e)||K(e))return e.flatMap(e=>t(e));throw Error(`Unsupported functor type for flatMap: ${JSON.stringify(e)}`)},r=(e,t)=>{if(U(e)&&U(t)||W(e)&&W(t)||G(e)&&G(t)||K(e)&&K(t))return e.flatMap(e=>t.map(t=>e(t)));throw Error(`Unsupported functor type for ap: ${JSON.stringify(e)}`)},i=e=>{if(U(e)){let t=e;if(t.isEmpty)return E([p.none()]);let n=t.orThrow();if(W(n))return n.map(e=>p(e));throw Error(`Unsupported inner container type for sequence`)}if(W(e)){let t=e.toArray();if(t.length===0)return p.none();let n=t[0];if(U(n)){for(let e of t)if(e.isEmpty)return p.none();return p(E(t.map(e=>e.orThrow())))}throw Error(`Unsupported inner container type for sequence`)}throw Error(`Unsupported outer container type for sequence: ${JSON.stringify(e)}`)};return{_tag:`HKT`,map:e,flatten:t,flatMap:n,ap:r,sequence:i,traverse:(t,n)=>i(e(t,e=>n(e))),_type:`HKT`}},J=q();q.map=(e,t)=>J.map(e,t),q.flatten=e=>J.flatten(e),q.flatMap=(e,t)=>J.flatMap(e,t),q.ap=(e,t)=>J.ap(e,t),q.sequence=e=>J.sequence(e),q.traverse=(e,t)=>J.traverse(e,t),q.isOption=U,q.isList=W,q.isEither=G,q.isTry=K;const ht=e=>({id:e,isSame:t=>t.id===e}),gt=t(ht,{of:e=>ht(e),pure:e=>ht(e)}),Y=e=>{let t=!1,n,i,a=!1,o=()=>{if(!t)try{n=e(),t=!0}catch(e){throw i=e,a=!0,t=!0,e}if(a)throw i;return n};return{_tag:`Lazy`,get isEvaluated(){return t},orElse:e=>{try{return o()}catch{return e}},orNull:()=>{try{return o()}catch{return null}},orThrow:e=>{try{return o()}catch(t){throw e??t}},or:e=>X(()=>{try{return o()}catch{return e.orThrow()}}),orUndefined:()=>{try{return o()}catch{return}},map:e=>X(()=>e(o())),ap:e=>X(()=>e.orThrow()(o())),mapAsync:async e=>{let t=await e(o());return X(()=>t)},flatMap:e=>X(()=>e(o()).orThrow()),flatMapAsync:async e=>{let t=await e(o());return X(()=>t.orThrow())},filter:e=>X(()=>{let t=o();return e(t)?u(t):f}),recover:e=>X(()=>{try{return o()}catch(t){return e(t)}}),recoverWith:e=>X(()=>{try{return o()}catch(t){return e(t).orThrow()}}),toOption:()=>{try{return u(o())}catch{return f}},toEither:()=>{try{return D(o())}catch(e){return O(e)}},toEitherWith:e=>{try{return D(o())}catch(t){return O(e(t))}},toTry:()=>w(()=>o()),tap:e=>X(()=>{let t=o();return e(t),t}),tapError:e=>X(()=>{try{return o()}catch(t){throw e(t),t}}),fold:e=>e(o()),foldWith:(e,t)=>{try{return t(o())}catch(t){return e(t)}},foldLeft:e=>t=>t(e,o()),foldRight:e=>t=>t(o(),e),match:e=>e.Lazy(o()),toString:()=>t&&!a?`Lazy(${r(n)})`:t&&a?`Lazy(<error: ${i instanceof Error?i.message:String(i)}>)`:`Lazy(<not evaluated>)`,toValue:()=>t&&!a?{_tag:`Lazy`,evaluated:!0,value:n}:{_tag:`Lazy`,evaluated:!1},get size(){try{return o(),1}catch{return 0}},get isEmpty(){try{return o(),!1}catch{return!0}},contains:e=>{try{return o()===e}catch{return!1}},reduce:e=>o(),reduceRight:e=>o(),count:e=>{try{return e(o())?1:0}catch{return 0}},find:e=>{try{let t=o();return e(t)?u(t):f}catch{return f}},exists:e=>{try{return e(o())}catch{return!1}},forEach:e=>{try{e(o())}catch{}},pipe:e=>e(o()),serialize:()=>({toJSON:()=>JSON.stringify(t&&!a?{_tag:`Lazy`,evaluated:!0,value:n}:{_tag:`Lazy`,evaluated:!1}),toYAML:()=>t&&!a?`_tag: Lazy\nevaluated: true\nvalue: ${r(n)}`:`_tag: Lazy
17
- evaluated: false`,toBinary:()=>Buffer.from(JSON.stringify(t&&!a?{_tag:`Lazy`,evaluated:!0,value:n}:{_tag:`Lazy`,evaluated:!1})).toString(`base64`)}),typeable:`Lazy`}},X=t(Y,{of:e=>Y(e),fromValue:e=>Y(()=>e),fromOption:(e,t)=>Y(()=>e._tag===`Some`?e.value:t()),fromTry:e=>Y(()=>e.orThrow()),fromEither:e=>Y(()=>e.fold(e=>{throw e},e=>e)),fromPromise:e=>Y(()=>{throw Error(`Promise not yet resolved. Use await on the promise before creating Lazy.`)}),fail:e=>Y(()=>{throw e})}),Z=Map,Q=e=>{let t={values:new Z(e)},r=()=>Array.from(t.values.entries()).map(([e,t])=>n([e,t])),a=e=>Q(new Z(t.values).set(e.toArray()[0],e.toArray()[1]).entries()),o=e=>{let n=new Z(t.values);return n.delete(e)?Q(n.entries()):Q(t.values.entries())},s=e=>{let n=e.toArray();return t.values.get(n[0])===n[1]},c=()=>t.values.size,l=e=>Q(Array.from(t.values.entries()).map(([t,n])=>[t,e(n)])),u=e=>Q(Q(t.values.entries()).toList().flatMap(e).toArray()),d=e=>{let n=[];for(let[r,i]of t.values.entries()){let t=e.get(r);t._tag===`Some`&&t.value&&n.push([r,t.value(i)])}return Q(n)},f=async e=>{let n=new Z;for(let[r,i]of t.values.entries()){let t=await e(i);for(let e of t.toList()){let[t,r]=e.toArray();n.set(t,r)}}return Q(n.entries())},ee=e=>E(r()).reduce(e),te=e=>E(r()).reduceRight(e),m=e=>t=>E(r()).foldLeft(e)(t),h=e=>t=>E(r()).foldRight(e)(t),ne=e=>p(t.values.get(e)),re=(e,n)=>p(t.values.get(e)).orElse(n),_=()=>t.values.size===0,v=(e,n)=>p(t.values.get(e)).or(n),y=(e,t)=>{if(_())return e();let n=r();if(n.length===0)return e();let i=n[0];return i===void 0?e():t(i)},b=()=>E(r()),x=()=>g(r()),ie=()=>`Map(${r().toString()})`,S=e=>_()?e.Empty():e.NonEmpty(r());return{_tag:`Map`,[Symbol.iterator]:()=>t.values.entries(),add:a,remove:o,contains:s,get size(){return c()},map:l,ap:d,flatMap:u,flatMapAsync:f,reduce:ee,reduceRight:te,foldLeft:m,foldRight:h,fold:y,match:S,get:ne,getOrElse:re,get isEmpty(){return _()},orElse:v,toList:b,toSet:x,toString:ie,toValue:()=>({_tag:`Map`,value:Array.from(t.values.entries())}),pipe:e=>e(Array.from(t.values.entries())),serialize:()=>i(`Map`,Array.from(t.values.entries()))}},_t=e=>Q(e),vt={fromJSON:e=>yt(JSON.parse(e).value),fromYAML:e=>{let t=e.split(`
18
- `)[1]?.split(`: `)[1];return yt(t?JSON.parse(t):[])},fromBinary:e=>{let t=Buffer.from(e,`base64`).toString();return vt.fromJSON(t)}},yt=t(_t,vt),bt={default:e=>t=>e(t),when:(e,t)=>n=>e(n)?t(n):void 0},$=(e=[])=>{let t=[...e],n=()=>t.length,r=()=>t.length===0;return{_tag:`Stack`,get size(){return n()},get isEmpty(){return r()},contains:e=>t.includes(e),reduce:e=>{if(t.length===0)throw Error(`Cannot reduce an empty stack`);return t.reduce(e)},reduceRight:e=>{if(t.length===0)throw Error(`Cannot reduce an empty stack`);return t.reduceRight(e)},push:e=>$([...t,e]),pop:()=>{if(r())return[$([]),p(null)];let e=[...t],n=e.pop();return[$(e),p(n)]},peek:()=>r()?p(null):p(t[t.length-1]),map:e=>$(t.map(e)),flatMap:e=>r()?$([]):t.reduce((t,n)=>e(n).toArray().reduce((e,t)=>e.push(t),t),$([])),ap:e=>{let n=[];return t.forEach(t=>{e.toArray().forEach(e=>{n.push(e(t))})}),$(n)},flatMapAsync:async e=>r()?$([]):(await Promise.all(t.map(async t=>await e(t)))).reduce((e,t)=>t.toArray().reduce((e,t)=>e.push(t),e),$([])),toList:()=>E(t),toArray:()=>[...t],toString:()=>`Stack(${t.join(`, `)})`,fold:(e,n)=>{if(r())return e();let i=t[t.length-1];return i===void 0?e():n(i)},foldLeft:e=>n=>t.reduce(n,e),foldRight:e=>n=>t.reduceRight((e,t)=>n(t,e),e),match:e=>r()?e.Empty():e.NonEmpty([...t]),toValue:()=>({_tag:`Stack`,value:t}),pipe:e=>e([...t]),serialize:()=>({toJSON:()=>JSON.stringify({_tag:`Stack`,value:t}),toYAML:()=>`_tag: Stack\nvalue: ${JSON.stringify(t)}`,toBinary:()=>Buffer.from(JSON.stringify({_tag:`Stack`,value:t})).toString(`base64`)})}},xt=(e=[])=>$(e),St={empty:()=>$([]),of:e=>$([e]),fromJSON:e=>Ct(JSON.parse(e).value),fromYAML:e=>{let t=e.split(`
19
- `)[1]?.split(`: `)[1];return Ct(t?JSON.parse(t):[])},fromBinary:e=>{let t=Buffer.from(e,`base64`).toString();return St.fromJSON(t)}},Ct=t(xt,St);function wt(e){let t=se({_tag:e._tag,impl:e.impl});return{...t,toValue:()=>({_tag:t._tag,value:e.value})}}export{xe as $,Ue as A,je as B,tt as C,o as Ct,I as D,Qe as E,P as F,Ee as G,De as H,M as I,Te as J,Ce as K,Re as L,Be as M,ze as N,L as O,N as P,k as Q,Le as R,rt as S,c as St,Ze as T,Ae as U,Me as V,we as W,ke as X,Se as Y,Oe as Z,at as _,ee as _t,Z as a,pe as at,Xe as b,l as bt,q as c,E as ct,dt as d,w as dt,O as et,V as f,ie as ft,z as g,p as gt,ot as h,f as ht,yt as i,me as it,Ve as j,R as k,mt as l,se as lt,st as m,g as mt,Ct as n,_e as nt,X as o,he as ot,ct as p,v as pt,Ne as q,bt as r,ge as rt,gt as s,ve as st,wt as t,D as tt,pt as u,ce as ut,$e as v,u as vt,et as w,s as wt,nt as x,i as xt,Je as y,a as yt,Pe as z};
20
- //# sourceMappingURL=src-BOxI0-73.js.map