functype 0.11.1 → 0.12.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.
package/README.md CHANGED
@@ -191,38 +191,79 @@ const result = Lazy(() => 10)
191
191
 
192
192
  ### Task
193
193
 
194
+ Task v2 provides structured error handling with the **Ok/Err pattern**, returning `TaskOutcome<T>` for all operations:
195
+
194
196
  ```typescript
195
- import { Task } from "functype"
197
+ import { Task, Ok, Err, type TaskOutcome } from "functype"
198
+
199
+ // Task v2: All operations return TaskOutcome<T>
200
+ const syncResult = Task().Sync(() => "success")
201
+ // Returns: TaskSuccess<string> (extends TaskOutcome<string>)
202
+
203
+ const asyncResult = await Task().Async(async () => "value")
204
+ // Returns: TaskOutcome<string>
205
+
206
+ // Explicit Ok/Err returns for precise control
207
+ const explicitResult = await Task().Async(async (): Promise<TaskOutcome<string>> => {
208
+ if (Math.random() > 0.5) {
209
+ return Ok("success") // Explicit success
210
+ }
211
+ return Err<string>("failed") // Explicit failure
212
+ })
213
+
214
+ // Auto-wrapping: raw values become Ok, thrown errors become Err
215
+ const autoWrapped = await Task().Async(async () => {
216
+ if (condition) {
217
+ return "raw value" // Auto-wrapped as Ok("raw value")
218
+ }
219
+ throw new Error("failed") // Auto-wrapped as Err(error)
220
+ })
196
221
 
197
- // Synchronous operations with error handling
198
- const syncResult = Task().Sync(
199
- () => "success",
200
- (error) => new Error(`Failed: ${error}`),
222
+ // Error recovery: error handlers can return Ok
223
+ const recovered = await Task().Async(
224
+ async () => {
225
+ throw new Error("initial error")
226
+ },
227
+ async (error) => Ok("recovered from error"), // Recovery!
201
228
  )
202
229
 
203
- // Asynchronous operations
204
- const asyncTask = async () => {
205
- const result = await Task().Async(
206
- async () => await fetchData(),
207
- async (error) => new Error(`Fetch failed: ${error}`),
208
- )
209
- return result
230
+ // Working with results
231
+ if (asyncResult.isSuccess()) {
232
+ console.log(asyncResult.value) // Access the success value
233
+ } else {
234
+ console.error(asyncResult.error) // Access the error (Throwable)
210
235
  }
211
236
 
237
+ // Chaining with TaskOutcome
238
+ const chainedResult = await Task().Async(async () => {
239
+ const firstResult = await Task().Async(async () => "first")
240
+ if (firstResult.isFailure()) {
241
+ return firstResult // Propagate failure
242
+ }
243
+
244
+ const secondResult = await Task().Async(async () => "second")
245
+ if (secondResult.isFailure()) {
246
+ return secondResult
247
+ }
248
+
249
+ return Ok(`${firstResult.value} + ${secondResult.value}`)
250
+ })
251
+
212
252
  // Converting promise-based functions to Task
213
253
  const fetchUserAPI = (userId: string): Promise<User> => fetch(`/api/users/${userId}`).then((r) => r.json())
214
254
 
215
- // Use the adapter pattern for seamless integration
216
- const fetchUser = Task({ name: "UserFetch" }).fromPromise(fetchUserAPI)
255
+ const fetchUser = Task.fromPromise(fetchUserAPI)
256
+ // Returns: (userId: string) => FPromise<TaskOutcome<User>>
217
257
 
218
- // Later use it with standard promise patterns
219
- fetchUser("user123")
220
- .then((user) => console.log(user))
221
- .catch((error) => console.error(error))
258
+ const userResult = await fetchUser("user123")
259
+ if (userResult.isSuccess()) {
260
+ console.log(userResult.value) // User object
261
+ }
222
262
 
223
- // Or convert Task results back to promises
224
- const taskResult = Task().Sync(() => "hello world")
225
- const promise = Task().toPromise(taskResult) // Promise<string>
263
+ // Convert TaskOutcome back to Promise (for interop)
264
+ const promise = Task.toPromise(asyncResult)
265
+ // Success resolves with value
266
+ // Failure → rejects with error
226
267
  ```
227
268
 
228
269
  ### Branded Types
@@ -0,0 +1,43 @@
1
+ import {a,b}from'./chunk-BQJB6CCW.mjs';import {a as a$1}from'./chunk-YBBRJTHY.mjs';import pe from'safe-stable-stringify';var q=Set;var _=t=>{let e=new q(t),r={_tag:"Set",[Symbol.iterator]:()=>e[Symbol.iterator](),add:n=>_([...e,n]),remove:n=>{let o=new q(e);return o.delete(n),_(o)},contains:n=>e.has(n),has:n=>e.has(n),map:n=>_(Array.from(e).map(n)),ap:n=>{let o=new q;for(let a of e)for(let s of n)o.add(s(a));return _(o)},flatMap:n=>{let o=new q;for(let a of e)for(let s of n(a))o.add(s);return _(o)},flatMapAsync:async n=>{let o=new q;for(let a of e){let s=await n(a);for(let i of s)o.add(i);}return _(o)},fold:(n,o)=>{if(e.size===0)return n();let a=Array.from(e);if(a.length===0)return n();let s=a[0];return s===void 0?n():o(s)},foldLeft:n=>o=>{let a=n;for(let s of e)a=o(a,s);return a},foldRight:n=>o=>Array.from(e).reduceRight((s,i)=>o(i,s),n),get size(){return e.size},get isEmpty(){return e.size===0},reduce:n=>{let o=Array.from(e);if(o.length===0)throw new Error("Cannot reduce empty Set");return o.reduce(n)},reduceRight:n=>{let o=Array.from(e);if(o.length===0)throw new Error("Cannot reduceRight empty Set");return o.reduceRight(n)},count:n=>{let o=0;for(let a of e)n(a)&&o++;return o},find:n=>{for(let o of e)if(n(o))return f(o);return f(null)},exists:n=>{for(let o of e)if(n(o))return true;return false},forEach:n=>{e.forEach(n);},filter:n=>{let o=new q;for(let a of e)n(a)&&o.add(a);return _(o)},filterNot:n=>{let o=new q;for(let a of e)n(a)||o.add(a);return _(o)},drop:n=>_(Array.from(e).slice(n)),dropRight:n=>_(Array.from(e).slice(0,-n)),dropWhile:n=>{let o=Array.from(e),a=o.findIndex(s=>!n(s));return _(a===-1?[]:o.slice(a))},flatten:()=>{let n=new q;for(let o of e)if(Array.isArray(o))for(let a of o)n.add(a);else if(o&&typeof o=="object"&&Symbol.iterator in o)for(let a of o)n.add(a);else n.add(o);return _(n)},get head(){return Array.from(e)[0]},get headOption(){let n=Array.from(e)[0];return f(n)},toList:()=>h(Array.from(e)),toSet:()=>r,toArray:()=>Array.from(e),toString:()=>`Set(${Array.from(e).toString()})`,toValue:()=>({_tag:"Set",value:Array.from(e)}),pipe:n=>n(Array.from(e)),serialize:()=>({toJSON:()=>JSON.stringify({_tag:"Set",value:Array.from(e)}),toYAML:()=>`_tag: Set
2
+ value: ${JSON.stringify(Array.from(e))}`,toBinary:()=>Buffer.from(JSON.stringify({_tag:"Set",value:Array.from(e)})).toString("base64")})};return r},Xe=t=>_(t),Ne={fromJSON:t=>{let e=JSON.parse(t);return ee(e.value)},fromYAML:t=>{let r=t.split(`
3
+ `)[1]?.split(": ")[1];if(!r)return ee([]);let n=JSON.parse(r);return ee(n)},fromBinary:t=>{let e=Buffer.from(t,"base64").toString();return Ne.fromJSON(e)}},ee=a(Xe,Ne);function ge({_tag:t,impl:e}){return {...e,_tag:t}}function be(t,e){return !t||typeof t!="object"||!("_tag"in t)?false:e?t._tag===e:true}var v=t=>{let e=Array.from(t??[]),r={_tag:"List",[Symbol.iterator]:()=>e[Symbol.iterator](),get size(){return e.length},get length(){return e.length},map:n=>v(e.map(n)),ap:n=>v(e.flatMap(o=>Array.from(n).map(a=>a(o)))),flatMap:n=>v(e.flatMap(o=>Array.from(n(o)))),flatMapAsync:async n=>{let o=await Promise.all(e.map(async a=>await n(a)));return v(o.flatMap(a=>Array.from(a)))},forEach:n=>e.forEach(n),contains:n=>e.includes(n),count:n=>e.filter(n).length,exists:n=>e.some(n),filter:n=>v(e.filter(n)),filterNot:n=>v(e.filter(o=>!n(o))),filterType:n=>v(e.filter(o=>be(o,n))),find:(n,o)=>{let a=e.find(s=>n(s)&&(o?be(s,o):true));return f(a)},get head(){return e[0]},get headOption(){return e.length>0?f(e[0]):U()},get isEmpty(){return e.length===0},toArray:()=>[...e],reduce:n=>e.reduce(n),reduceRight:n=>e.reduceRight(n),fold:(n,o)=>{if(e.length===0)return n();let a=e[0];return o(a)},foldLeft:n=>o=>e.reduce(o,n),foldRight:n=>o=>e.reduceRight((a,s)=>o(s,a),n),match:n=>e.length===0?n.Empty():n.NonEmpty([...e]),remove:n=>v(e.filter(o=>o!==n)),removeAt:n=>n<0||n>=e.length?r:v([...e.slice(0,n),...e.slice(n+1)]),add:n=>v([...e,n]),get:n=>f(e[n]),concat:n=>v([...e,...n.toArray()]),drop:n=>v(e.slice(n)),dropRight:n=>v(e.slice(0,-n)),dropWhile:n=>v(e.slice(e.findIndex(o=>!n(o)))),flatten:()=>v(e.flatMap(n=>Array.isArray(n)?n:[n])),toList:()=>r,toSet:()=>ee(e),toString:()=>`List(${pe(e)})`,toValue:()=>({_tag:"List",value:e}),pipe:n=>n([...e]),serialize:()=>({toJSON:()=>JSON.stringify({_tag:"List",value:e}),toYAML:()=>`_tag: List
4
+ value: ${pe(e)}`,toBinary:()=>Buffer.from(JSON.stringify({_tag:"List",value:e})).toString("base64")})};return r},et=t=>v(t),Fe={fromJSON:t=>{let e=JSON.parse(t);return h(e.value)},fromYAML:t=>{let r=t.split(`
5
+ `)[1]?.split(": ")[1];if(!r)return h([]);let n=JSON.parse(r);return h(n)},fromBinary:t=>{let e=Buffer.from(t,"base64").toString();return Fe.fromJSON(e)}},h=a(et,Fe);var Ve=t=>({_tag:"Right",value:t,isLeft(){return false},isRight(){return true},get:()=>t,getOrElse:e=>t,getOrThrow:()=>t,orElse:e=>p(t),orNull:()=>t,orUndefined:()=>t,map:e=>p(e(t)),ap:e=>e._tag==="Right"?p(e.value(t)):c(e.value),mapAsync:e=>e(t).then(r=>p(r)).catch(r=>Promise.resolve(c(r))),merge:e=>e.isLeft()?c(e.value):p([t,e.value]),flatMap:e=>e(t),flatMapAsync:e=>e(t).catch(r=>c(r)),toOption:()=>S(t),toList:()=>h([t]),toJSON(){return {_tag:"Right",value:t}},toString:()=>`Right(${pe(t)})`,*[Symbol.iterator](){yield t;},*yield(){yield t;},traverse:e=>{let r=e(t);return r.isLeft()?c(r.value):p([r.value])},*lazyMap(e){yield p(e(t));},tap:e=>(e(t),p(t)),tapLeft:e=>p(t),mapLeft:e=>p(t),bimap:(e,r)=>p(r(t)),fold:(e,r)=>r(t),foldLeft:e=>r=>r(e,t),foldRight:e=>r=>r(t,e),match:e=>e.Right(t),swap:()=>c(t),toPromise:()=>Promise.resolve(t),toValue:()=>({_tag:"Right",value:t}),pipeEither:(e,r)=>r(t),pipe:e=>e(t),serialize:()=>({toJSON:()=>JSON.stringify({_tag:"Right",value:t}),toYAML:()=>`_tag: Right
6
+ value: ${pe(t)}`,toBinary:()=>Buffer.from(JSON.stringify({_tag:"Right",value:t})).toString("base64")}),get size(){return 1},get isEmpty(){return false},contains:e=>t===e,reduce:e=>t,reduceRight:e=>t,count:e=>e(t)?1:0,find:e=>e(t)?S(t):U(),exists:e=>e(t),forEach:e=>e(t)}),Ce=t=>({_tag:"Left",value:t,isLeft(){return true},isRight(){return false},get:()=>{throw new Error(`Cannot call get() on Left(${pe(t)})`)},getOrElse:e=>e,getOrThrow:e=>{throw e??t},orElse:e=>e,orNull:()=>null,orUndefined:()=>{},map:e=>c(t),ap:e=>c(t),mapAsync:e=>Promise.resolve(c(t)),merge:e=>c(t),flatMap:e=>c(t),flatMapAsync:e=>Promise.resolve(c(t)),toOption:()=>U(),toList:()=>h(),toJSON(){return {_tag:"Left",value:t}},toString:()=>`Left(${pe(t)})`,*[Symbol.iterator](){},*yield(){},traverse:e=>c(t),*lazyMap(e){yield c(t);},tap:e=>c(t),tapLeft:e=>(e(t),c(t)),mapLeft:e=>c(e(t)),bimap:(e,r)=>c(e(t)),fold:(e,r)=>e(t),foldLeft:e=>r=>e,foldRight:e=>r=>e,match:e=>e.Left(t),swap:()=>p(t),toPromise:()=>Promise.reject(t),toValue:()=>({_tag:"Left",value:t}),pipeEither:(e,r)=>e(t),pipe:e=>e(t),serialize:()=>({toJSON:()=>JSON.stringify({_tag:"Left",value:t}),toYAML:()=>`_tag: Left
7
+ value: ${pe(t)}`,toBinary:()=>Buffer.from(JSON.stringify({_tag:"Left",value:t})).toString("base64")}),get size(){return 0},get isEmpty(){return true},contains:e=>false,reduce:e=>{throw new Error("Cannot reduce a Left")},reduceRight:e=>{throw new Error("Cannot reduceRight a Left")},count:e=>0,find:e=>U(),exists:e=>false,forEach:e=>{}}),p=t=>Ve(t),c=t=>Ce(t),Ct=t=>t.isRight(),zt=t=>t.isLeft(),Kt=(t,e)=>{try{return p(t())}catch(r){return c(e(r))}},tt=t=>Ve(t);console.assert(tt);var rt=t=>Ce(t);console.assert(rt);var $t=async(t,e)=>{try{let r=await t();return p(r)}catch(r){return c(e(r))}},Ie={sequence:t=>t.reduce((e,r)=>e.isLeft()?e:r.isLeft()?c(r.value):e.map(n=>[...n,r.value]),p([])),traverse:(t,e)=>Ie.sequence(t.map(e)),fromNullable:(t,e)=>t==null?c(e):p(t),fromPredicate:(t,e,r)=>e(t)?p(t):c(r),ap:(t,e)=>t.flatMap(r=>e.map(r)),fromPromise:async(t,e)=>{try{let r=await t;return p(r)}catch(r){return c(e(r))}},fromJSON:t=>{let e=JSON.parse(t);return e._tag==="Right"?p(e.value):c(e.value)},fromYAML:t=>{let e=t.split(`
8
+ `),r=e[0]?.split(": ")[1],n=e[1]?.split(": ")[1];if(!r||!n)throw new Error("Invalid YAML format for Either");let o=JSON.parse(n);return r==="Right"?p(o):c(o)},fromBinary:t=>{let e=Buffer.from(t,"base64").toString();return Ie.fromJSON(e)}};function F(t,e){return {brand:t,validate:e,of:r=>e(r)?f(a$1(t,r)):f.none(),from:r=>e(r)?p(a$1(t,r)):c(`Invalid ${t}: validation failed`),unsafeOf:r=>{if(!e(r))throw new Error(`Invalid ${t}: validation failed`);return a$1(t,r)},is:r=>{try{return e(r)}catch{return false}},unwrap:r=>r,refine:(r,n)=>F(r,o=>e(o)&&n(o))}}var nt=F("PositiveNumber",t=>t>0),qt=F("NonNegativeNumber",t=>t>=0),Yt=F("IntegerNumber",t=>Number.isInteger(t)),Qt=nt.refine("PositiveInteger",t=>Number.isInteger(t)),Gt=F("NonEmptyString",t=>t.length>0),Ht=F("EmailAddress",t=>/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(t)),Zt=F("UrlString",t=>{try{return new URL(t),!0}catch{return !1}}),Xt=F("UUID",t=>/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i.test(t)),er=F("ISO8601Date",t=>!isNaN(Date.parse(t))&&/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}/.test(t));function tr(t,e,r){return F(t,n=>n>=e&&n<=r)}function rr(t,e,r){return F(t,n=>n.length>=e&&n.length<=r)}function nr(t,e){return F(t,r=>e.test(r))}var xe=t=>{let e=n=>typeof n=="function"?n():n,r={when:(n,o)=>t.resolved?r:n?xe({resolved:true,value:e(o)}):r,elseWhen:(n,o)=>t.resolved?r:n?xe({resolved:true,value:e(o)}):r,else:n=>t.resolved?t.value:e(n),getOrThrow:()=>{if(!t.resolved)throw new Error("Conditional expression has no matching condition");return t.value}};return r},ze=()=>xe({resolved:false}),ot={of:()=>ze(),match:t=>e=>{let r=e[t];if(r===void 0)throw new Error(`No case defined for value: ${String(t)}`);return typeof r=="function"?r():r},lazy:()=>{let t={resolved:false},e={when:(r,n)=>(t.resolved||r()&&(t.resolved=true,t.value=n()),e),elseWhen:(r,n)=>(t.resolved||r()&&(t.resolved=true,t.value=n()),e),else:r=>t.resolved?t.value:r()};return e}},sr=a(ze,ot);var oe=(t,e)=>e===t?true:typeof e=="function"?e(t):e&&typeof e=="object"&&"_"in e?e._(t):typeof e=="object"&&e!==null&&typeof t=="object"&&t!==null?Object.entries(e).every(([r,n])=>{let o=t[r];return oe(o,n)}):false,te=t=>{let e=(o,a)=>typeof o=="function"?o(a):o,r=()=>{for(let{pattern:o,result:a}of t.patterns)if(oe(t.value,o))return {matched:true,result:e(a,t.value)};return {matched:false}},n={case:(o,a)=>{if(t.resolved)return n;let s={...t,patterns:[...t.patterns,{pattern:o,result:a}]};return oe(t.value,o)?te({...s,resolved:true,result:e(a,t.value)}):te(s)},caseValue:(o,a)=>{if(t.resolved)return n;if(t.value===o){let s=typeof a=="function"?a():a;return te({...t,resolved:true,result:s})}return n},caseValues:(o,a)=>{if(t.resolved)return n;if(o.includes(t.value)){let s=typeof a=="function"?a():a;return te({...t,resolved:true,result:s})}return n},when:(o,a)=>n.case(o,a),caseAny:(o,a)=>{if(t.resolved)return n;for(let s of o)if(oe(t.value,s))return te({...t,resolved:true,result:e(a,t.value),patterns:[...t.patterns,{pattern:s,result:a}]});return te({...t,patterns:[...t.patterns,...o.map(s=>({pattern:s,result:a}))]})},default:o=>t.resolved?t.result:e(o,t.value),exhaustive:()=>{let o=r();if(!o.matched)throw new Error(`Non-exhaustive match. No pattern matched value: ${JSON.stringify(t.value)}`);return o.result},getOrThrow:o=>{let a=r();if(!a.matched)throw new Error(o??`No matching pattern for value: ${JSON.stringify(t.value)}`);return a.result},toOption:()=>{let o=r();return o.matched?f(o.result):f.none()}};return n},at=t=>te({value:t,resolved:false,patterns:[]}),st={exhaustive:t=>e=>{let r=t[e];if(r===void 0)throw new Error(`No case defined for value: ${String(e)}`);return r},partial:t=>({withDefault:e=>r=>{let n=t[r];return n!==void 0?typeof n=="function"?n(r):n:typeof e=="function"?e(r):e}}),withGuards:t=>({withDefault:e=>r=>{for(let[n,o]of t)if(n(r))return typeof o=="function"?o(r):o;return typeof e=="function"?e(r):e}}),struct:()=>{let t=[],e={case:(r,n)=>(t.push({pattern:r,handler:n}),e),build:()=>r=>{for(let{pattern:n,handler:o}of t)if(oe(r,n))return o(r);throw new Error(`No matching pattern for value: ${JSON.stringify(r)}`)}};return e},builder:()=>{let t=[],e,r={case:(n,o)=>(t.push({pattern:n,result:o}),r),when:(n,o)=>(t.push({pattern:n,result:o}),r),default:n=>(e=n,{build:()=>o=>{for(let{pattern:a,result:s}of t)if(oe(o,a))return typeof s=="function"?s(o):s;if(e!==void 0)return typeof e=="function"?e(o):e;throw new Error(`No matching pattern for value: ${JSON.stringify(o)}`)}})};return r}},cr=a(at,st);function he(t,e){return {...ge({_tag:t,impl:e}),toString(){return `${t}()`}}}var Ee="Throwable",Y=class t extends Error{constructor(r,n){super(r,{cause:n?.cause});this._tag=Ee;this.name=n?.taskInfo?.name??Ee,Object.defineProperties(this,{_tag:{value:Ee,writable:false,configurable:false},data:{value:n?.data,writable:false,configurable:false},taskInfo:{value:n?.taskInfo,writable:false,configurable:false},name:{value:n?.taskInfo?.name??Ee,writable:false,configurable:false}}),n?.cause&&Object.defineProperty(this,"cause",{value:n.cause,writable:false,configurable:false}),n?.stack?this.stack=n.stack:Error.captureStackTrace&&Error.captureStackTrace(this,this.constructor);}static apply(r,n,o){if(r instanceof Error){let u=new t(r.message,{data:n,cause:r.cause??void 0,stack:r.stack??void 0,taskInfo:o});for(let l of Object.keys(r))if(!(l in u)){let d=u,m=r;d[l]=m[l];}return u}if(r&&typeof r=="object"){let u=r,l=typeof u.message=="string"?u.message:typeof u.error=="string"?u.error:`Object error: ${JSON.stringify(u,Object.getOwnPropertyNames(u).filter(m=>u[m]!==void 0))}`,d=new t(l,{data:n??u,taskInfo:o});for(let m of Object.keys(u))if(!(m in d)){let k=d;k[m]=u[m];}return d}if(typeof r=="function"){let u=r.name??"anonymous function",l=r.toString().substring(0,100)+(r.toString().length>100?"...":"");return new t(`Function error: ${u}`,{data:n??{functionType:typeof r,functionName:u,functionString:l},taskInfo:o})}let a=typeof r,s=r===null?"null":r===void 0?"undefined":String(r);if(a==="number"){let u=r,l=Number.isNaN(u)?"Number error: NaN":Number.isFinite(u)?`Number error: ${u}`:`Number error: ${u>0?"Infinity":"-Infinity"}`;return new t(l,{data:n??{errorType:a,errorValue:u,originalError:r},taskInfo:o})}if(a==="bigint")return new t(`BigInt error: ${r}n`,{data:n??{errorType:a,errorValue:String(r),originalError:r},taskInfo:o});if(a==="boolean")return new t(`Boolean error: ${r}`,{data:n??{errorType:a,errorValue:r,originalError:r},taskInfo:o});if(a==="symbol"){let u=r.description??"unnamed symbol";return new t(`Symbol error: Symbol(${u})`,{data:n??{errorType:a,symbolDescription:u,originalError:r},taskInfo:o})}let i=typeof r=="string"?r:`${a.charAt(0).toUpperCase()+a.slice(1)} error: ${s}`;return new t(i,{data:n??{errorType:a,errorValue:s,originalError:r},taskInfo:o})}};var L=t=>{let e=new Promise((r,n)=>{try{t(r,n);}catch(o){n(o);}});return {_tag:"FPromise",map:r=>L((n,o)=>{e.then(a=>{try{n(r(a));}catch(s){o(s);}}).catch(o);}),flatMap:r=>L((n,o)=>{e.then(a=>{try{let s=r(a);"_tag"in s&&s._tag==="FPromise"?s.then(n,o):Promise.resolve(s).then(n,o);}catch(s){o(s);}}).catch(o);}),flatMapAsync:async r=>{let n=await e,o=r(n);return o instanceof Promise?o:new Promise((a,s)=>{o.then(a,s);})},tap:r=>L((n,o)=>{e.then(a=>{try{r(a),n(a);}catch(s){o(s);}}).catch(o);}),mapError:r=>L((n,o)=>{e.then(n).catch(a=>{try{let s={originalError:a,stack:a instanceof Error?a.stack:void 0,timestamp:Date.now()};o(r(a,s));}catch(s){o(s);}});}),tapError:r=>L((n,o)=>{e.then(n).catch(a=>{try{r(a),o(a);}catch(s){o(s);}});}),recover:r=>L(n=>{e.then(n).catch(()=>n(r));}),recoverWith:r=>L(n=>{e.then(n).catch(o=>{try{n(r(o));}catch{n(null);}});}),recoverWithF:r=>L((n,o)=>{e.then(n).catch(a=>{try{r(a).then(n,o);}catch(s){o(s);}});}),filterError:(r,n)=>L((o,a)=>{e.then(o).catch(s=>{if(r(s))try{n(s).then(o,a);}catch(i){a(i);}else a(s);});}),logError:r=>L((n,o)=>{e.then(n).catch(a=>{try{let s={originalError:a,stack:a instanceof Error?a.stack:void 0,timestamp:Date.now()};r(a,s);}catch{}finally{o(a);}});}),then:(r,n)=>e.then(r,n),toPromise:()=>e,toEither:async()=>{try{let r=await e;return p(r)}catch(r){return c(r)}},fold:(r,n)=>L((o,a)=>{e.then(s=>{try{o(n(s));}catch(i){a(i);}}).catch(s=>{try{o(r(s));}catch(i){a(i);}});})}},it={resolve:t=>L(e=>e(t)),reject:t=>L((e,r)=>r(t)),from:t=>L((e,r)=>{t.then(e).catch(r);}),fromEither:t=>t.isRight()?L(e=>e(t.value)):L((e,r)=>r(t.value)),all:t=>L((e,r)=>{Promise.all(t.map(n=>n instanceof Promise?n:Promise.resolve(n))).then(e).catch(r);}),allSettled:t=>L(e=>{let r=[],n=0;if(t.length===0){e([]);return}t.forEach((o,a)=>{Promise.resolve(o).then(s=>{r[a]=p(s),n++,n===t.length&&e(r);}).catch(s=>{r[a]=c(s),n++,n===t.length&&e(r);});});}),race:t=>L((e,r)=>{Promise.race(t).then(e,r);}),any:t=>L((e,r)=>{if(typeof Promise.any=="function")Promise.any(t).then(e,r);else {let n=0,o=[];if(t.length===0){r(new AggregateError([],"All promises were rejected"));return}t.forEach((a,s)=>{Promise.resolve(a).then(e).catch(i=>{o[s]=i,n++,n===t.length&&r(new AggregateError(o,"All promises were rejected"));});});}}),retryWithBackoff:(t,e)=>{let{maxRetries:r,baseDelay:n=100,shouldRetry:o=()=>true}=e;return L((a,s)=>{let i=0,u=()=>{t().toPromise().then(a).catch(l=>{if(i++,i<=r&&o(l,i)){let d=n*Math.pow(2,i-1);setTimeout(u,d);}else s(l);});};u();})}},ke=a(L,it);function R(t){let e=t;return {get(){return e},set(n){e=n;},update(n){e=n(e);},getAndSet(n){let o=e;return e=n,o},updateAndGet(n){return e=n(e),e},getAndUpdate(n){let o=e;return e=n(e),o},compareAndSet(n,o){return e===n?(e=o,true):false},modify(n){let[o,a]=n(e);return e=o,a}}}R.of=R;var ae=(t=0)=>{let e=R(t),r=t;return {get:()=>e.get(),set:n=>e.set(n),increment:()=>e.updateAndGet(n=>n+1),decrement:()=>e.updateAndGet(n=>n-1),reset:()=>e.set(r),compareAndSet:(n,o)=>e.compareAndSet(n,o)}};var Ae=()=>{let t=R([]);return {add:e=>t.update(r=>[...r,e]),addAll:e=>t.update(r=>[...r,...e]),build:()=>t.get(),clear:()=>t.set([]),size:()=>t.get().length}};function ut(t){return t instanceof Error&&typeof t=="object"&&true&&t._tag==="Throwable"}var I=(t,e)=>{if(t.isRight())return Q(t.get(),e);if(t.isLeft())return Te(t,void 0,e);throw new Error("Unrecognized task outcome")},Te=(t,e,r)=>{let n={name:r?.name??"Task",description:r?.description??""},o=Y.apply(t,e,n),a=c(o),{isLeft:s,isRight:i,...u}=a;return {...u,_tag:"TaskFailure",_meta:n,error:o,map:l=>{let d=a.map(l);return I(d,r)},flatMap:l=>{let d=a.flatMap(l);return I(d,r)},ap:l=>{let d=a.ap(l);return I(d,r)},merge:l=>{let d=a.merge(l);return I(d,r)},mapAsync:async l=>{let d=await a.mapAsync(l);return I(d,r)},flatMapAsync:async l=>{let d=await a.flatMapAsync(l);return I(d,r)},isSuccess(){return false},isFailure(){return true},mapError:l=>Te(l(o),e,r),recover:l=>Q(l,r),recoverWith:l=>Q(l(o),r)}},Q=(t,e)=>{let r={name:e?.name??"Task",description:e?.description??""},n=p(t),{isLeft:o,isRight:a,...s}=n;return {...s,_tag:"TaskSuccess",_meta:r,map:i=>{let u=n.map(i);return I(u,e)},flatMap:i=>{let u=n.flatMap(i);return I(u,e)},ap:i=>{let u=n.ap(i);return I(u,e)},merge:i=>{let u=n.merge(i);return I(u,e)},mapAsync:async i=>{let u=await n.mapAsync(i);return I(u,e)},flatMapAsync:async i=>{let u=await n.flatMapAsync(i);return I(u,e)},isSuccess(){return true},isFailure(){return false},mapError:i=>Q(t,e),recover:i=>Q(t,e),recoverWith:i=>Q(t,e)}},we=(t,e)=>Q(t,e),P=(t,e,r)=>Te(t,e,r),Ue=()=>{let t=new AbortController,e=Ae();return {token:{get isCancelled(){return t.signal.aborted},get signal(){return t.signal},onCancel(n){t.signal.aborted?n():e.add(n);}},cancel(){t.signal.aborted||(t.abort(),e.build().forEach(n=>{try{n();}catch(o){console.error("Error in cancellation callback:",o);}}));}}},lt=t=>{let e=t?.name??"Task",r=t?.description??"",n={Async:(o,a=u=>u,s=()=>{},i)=>ke((u,l)=>{(async()=>{let d=R(false),m=R(null),k=R(()=>{});if(i){if(i.isCancelled){try{await s();}catch(E){u(P(E,void 0,{name:e,description:r}));return}u(P(new Error("Task was cancelled before execution started"),void 0,{name:e,description:r}));return}let b=()=>{d.set(true),m.set(new Error("Task was cancelled during execution"));};i.onCancel(b),k.set(()=>{});}try{let b=await o();try{await s();}catch(E){u(P(E,void 0,{name:e,description:r}));return}if(d.get()){m.get()?u(P(m.get(),void 0,{name:e,description:r})):u(P(new Error("Task was cancelled during execution"),void 0,{name:e,description:r}));return}if(b&&typeof b=="object"&&"_tag"in b){let E=b;E._tag==="TaskSuccess"||E._tag==="TaskFailure"?u(E):u(we(b,{name:e,description:r}));}else u(we(b,{name:e,description:r}));}catch(b){try{await s();}catch(E){u(P(E,void 0,{name:e,description:r}));return}if(d.get()){m.get()?u(P(m.get(),void 0,{name:e,description:r})):u(P(new Error("Task was cancelled during execution"),void 0,{name:e,description:r}));return}try{if(b instanceof Error&&ut(b)){let E=new Error(`${e}: ${b.message}`),D=Y.apply(E,void 0,{name:e,description:r});Object.defineProperty(D,"cause",{value:b,writable:!1,configurable:!1}),Promise.resolve().then(()=>{try{a(b);}catch(H){console.error("Error in error handler:",H);}}),u(P(D,void 0,{name:e,description:r}));}else {let E=await a(b);if(E&&typeof E=="object"&&"_tag"in E){let D=E;D._tag==="TaskSuccess"||D._tag==="TaskFailure"?u(D):u(P(E,void 0,{name:e,description:r}));}else u(P(E,void 0,{name:e,description:r}));}}catch(E){u(P(E,void 0,{name:e,description:r}));}}finally{k.get()();}})().catch(d=>u(P(d,void 0,{name:e,description:r})));}),Sync:(o,a=i=>i,s=()=>{})=>{try{return Q(o(),{name:e,description:r})}catch(i){return Te(a(i),void 0,{name:e,description:r})}finally{s();}},AsyncWithProgress:(o,a,s=l=>l,i=()=>{},u)=>{let l=d=>{let m=Math.max(0,Math.min(100,d));m<=100&&a(m);};return n.Async(()=>o(l),s,i,u)}};return {...he("Task",n),_type:"Task"}},Ke={success:(t,e)=>Q(t,e),fail:(t,e,r)=>Te(t,e,r),ok:(t,e)=>we(t,e),err:(t,e,r)=>P(t,e,r),getErrorChain:t=>{if(!t)return [];let e=Ae();e.add(t);let r=R(t);for(;r.get()&&r.get().cause;){let{cause:n}=r.get();if(n)e.add(n),r.set(n);else break;if(e.size()>100)break}return e.build()},formatErrorChain:(t,e)=>{let r=Ke.getErrorChain(t),n=e?.separator??`
9
+ `;return r.map((o,a)=>{if(!o)return `${a>0?"\u21B3 ":""}Unknown error`;let{taskInfo:s}=o,i=e?.includeTasks&&s?.name?`[${s.name}] `:"",u=o.message??"No message",l=R(`${a>0?"\u21B3 ":""}${i}${u}`);return e?.includeStackTrace&&o.stack&&l.set(`${l.get()}
10
+ ${o.stack.split(`
11
+ `).slice(1).join(`
12
+ `)}`),l.get()}).join(n)},fromPromise:(t,e)=>(...r)=>z(e??{name:"PromiseTask",description:"Task from Promise"}).Async(()=>t(...r),o=>o),toPromise:t=>new Promise((e,r)=>{t.isSuccess()?e(t.get()):r(t.error);}),race:(t,e,r)=>{let n=r?.name??"TaskRace",o=r?.description??"Race between multiple tasks";return z({name:n,description:o}).Async(async()=>{let s=Ae();t.forEach(u=>s.add(u));let i=R(void 0);if(typeof e=="number"&&e>0){let u=ke((l,d)=>{i.set(setTimeout(()=>{d(new Error(`Task race timed out after ${e}ms`));},e));});s.add(u);}try{return await new Promise((u,l)=>{s.build().forEach(d=>{d.then(m=>{if(m&&typeof m=="object"&&"_tag"in m){let k=m;k._tag==="TaskSuccess"?u(k.get()):k._tag==="TaskFailure"?l(k.error):u(m);}else u(m);},m=>l(m));});})}finally{i.get()&&clearTimeout(i.get());}},s=>s)},fromNodeCallback:(t,e)=>{let r=e?.name??"NodeCallbackTask",n=e?.description??"Task from Node.js callback function",o={name:r,description:n};return (...a)=>z(o).Async(()=>new Promise((s,i)=>{try{t(...a,(u,l)=>{u?i(u):s(l);});}catch(u){i(u);}}),s=>s)},createCancellationTokenSource:Ue,cancellable:(t,e)=>{let r=Ue();return {task:z(e).Async(()=>t(r.token),o=>o,()=>{},r.token),cancel:()=>r.cancel()}},withProgress:(t,e=()=>{},r)=>{let n=Ue(),o=R(0),a=i=>{o.set(Math.max(0,Math.min(100,i))),e(o.get());};return {task:z(r).Async(()=>t(a,n.token),i=>i,()=>{},n.token),cancel:()=>n.cancel(),currentProgress:()=>o.get()}}},z=a(lt,Ke);var $e={includeTasks:true,includeStackTrace:false,separator:`
13
+ `,includeData:false,maxStackFrames:3,title:"Error",colors:false};function De(t){let e=new WeakSet;return JSON.stringify(t,(r,n)=>{if(typeof n=="bigint")return `${n.toString()}n`;if(typeof n=="object"&&n!==null){if(e.has(n))return "[Circular Reference]";e.add(n);}return r==="stack"&&typeof n=="string"?Re(n):n},2)}function Re(t){if(t===void 0||t==="")return "";let e=t.split(`
14
+ `),r=e[0],n=e.slice(1).map(o=>o.trim());return [r,...n].join(`
15
+ `)}function Or(t,e){let r={...$e,...e},n=t instanceof Error?t:Y.apply(t),o=z?.getErrorChain?z.getErrorChain(n):[n],a=r.colors?`\x1B[31m${r.title}:\x1B[0m ${n.message}`:`${r.title}: ${n.message}`,s=o.map((u,l)=>{let d=" ".repeat(l),m=l>0?"\u21B3 ":"",{taskInfo:k}=u,b=r.includeTasks&&k?.name?r.colors?`\x1B[36m[${k.name}]\x1B[0m `:`[${k.name}] `:"",E=`${d}${m}${b}${u.message}`;if(r.includeStackTrace&&u.stack){let H=Re(u.stack).split(`
16
+ `).slice(1),re=r.maxStackFrames??$e.maxStackFrames??3,fe=H.slice(0,re).map(me=>`${d} ${r.colors?"\x1B[90m":""}${me}${r.colors?"\x1B[0m":""}`).join(`
17
+ `);E+=`
18
+ ${fe}`,H.length>re&&(E+=`
19
+ ${d} ${r.colors?"\x1B[90m":""}...${H.length-re} more stack frames${r.colors?"\x1B[0m":""}`);}return E}).join(r.separator),i=`${a}
20
+
21
+ ${s}`;if(r.includeData){let{data:u}=n;if(u){let l=r.colors?`
22
+
23
+ \x1B[33mContext:\x1B[0m
24
+ ${De(u)}`:`
25
+
26
+ Context:
27
+ ${De(u)}`;i+=l;}}return i}function Pr(){return function(e){if(!e)return e;let r=e instanceof Error?e:new Error(String(e)),n={message:r.message,name:r.name||"Error",stack:r.stack?Re(r.stack):void 0};if(r.taskInfo&&(n.taskInfo=r.taskInfo),r.data&&(n.data=r.data),typeof z?.getErrorChain=="function")try{let o=z.getErrorChain(r);o.length>1&&(n.errorChain=z.formatErrorChain(r,{includeTasks:!0}),n.structuredErrorChain=o.map(a=>({message:a.message,name:a.name,taskInfo:a.taskInfo,stack:a.stack?Re(a.stack):void 0})));}catch{}return Object.getOwnPropertyNames(r).forEach(o=>{if(!n[o]){let a=r[o];n[o]=a;}}),n}}var Nr=t=>{let e=new Error(t);return e.name="ParseError",e};var K=(t,e,r,n)=>{let o=Y.apply(e,r,{name:t,description:e});return Object.assign(o,{code:t,message:e,status:ct(t),context:r,timestamp:new Date().toISOString(),traceId:n?.traceId})},ct=t=>({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})[t],pt={validation:(t,e,r)=>K("VALIDATION_FAILED",`Validation failed: ${t} ${r}`,{field:t,value:e,rule:r}),network:(t,e,r)=>K("NETWORK_ERROR",`Network error: ${e} ${t}${r?` (${r})`:""}`,{url:t,method:e,statusCode:r}),auth:(t,e)=>K("AUTH_REQUIRED",`Authentication required: ${t}${e?` (role: ${e})`:""}`,{resource:t,requiredRole:e}),notFound:(t,e)=>K("NOT_FOUND",`Not found: ${t} with id ${e}`,{resource:t,id:e}),permission:(t,e,r)=>K("PERMISSION_DENIED",`Permission denied: cannot ${t} ${e}`,{action:t,resource:e,userId:r}),rateLimit:(t,e,r)=>K("RATE_LIMITED",`Rate limit exceeded: ${t} requests per ${e}`,{limit:t,window:e,retryAfter:r}),internal:t=>K("INTERNAL_ERROR",`Internal server error: ${t}`,{errorId:t,timestamp:new Date().toISOString()}),badRequest:(t,e)=>K("BAD_REQUEST",`Bad request: ${t}`,{reason:t,expected:e}),conflict:(t,e)=>K("CONFLICT",`Conflict: ${t} already exists with value ${e}`,{resource:t,conflictingValue:e}),timeout:(t,e)=>K("TIMEOUT",`Request timeout: ${e} exceeded ${t}ms`,{duration:t,operation:e}),isTypedError:t=>typeof t=="object"&&t!==null&&"code"in t&&"message"in t&&"status"in t&&"context"in t&&"_tag"in t&&t._tag==="Throwable",hasCode:(t,e)=>t.code===e},x=Object.assign(K,pt);var w=t=>{let e={_tag:"LazyList",[Symbol.iterator]:()=>t[Symbol.iterator](),map:r=>w((function*(){for(let n of t)yield r(n);})()),flatMap:r=>w((function*(){for(let n of t)yield*r(n);})()),filter:r=>w((function*(){for(let n of t)r(n)&&(yield n);})()),take:r=>w((function*(){let n=ae(0);for(let o of t){if(n.get()>=r)break;yield o,n.increment();}})()),drop:r=>w((function*(){let n=ae(0);for(let o of t)n.get()>=r&&(yield o),n.increment();})()),takeWhile:r=>w((function*(){for(let n of t){if(!r(n))break;yield n;}})()),dropWhile:r=>w((function*(){let n=R(true);for(let o of t)n.get()&&r(o)||(n.set(false),yield o);})()),concat:r=>w((function*(){yield*t,yield*r;})()),zip:r=>w((function*(){let n=t[Symbol.iterator](),o=r[Symbol.iterator]();for(;;){let a=n.next(),s=o.next();if(a.done||s.done)break;yield [a.value,s.value];}})()),toList:()=>h(Array.from(t)),toArray:()=>Array.from(t),forEach:r=>{for(let n of t)r(n);},reduce:(r,n)=>{let o=R(n);for(let a of t)o.set(r(o.get(),a));return o.get()},find:r=>{for(let n of t)if(r(n))return f(n);return f.none()},some:r=>{for(let n of t)if(r(n))return true;return false},every:r=>{for(let n of t)if(!r(n))return false;return true},count:()=>{let r=ae(0);for(let n of t)r.increment();return r.get()},first:()=>{let n=t[Symbol.iterator]().next();return n.done?f.none():f(n.value)},last:()=>{let r=R(void 0),n=R(false);for(let o of t)r.set(o),n.set(true);return n.get()?f(r.get()):f.none()},fold:(r,n)=>{let a=t[Symbol.iterator]().next();return a.done?r():n(a.value)},foldLeft:r=>n=>{let o=R(r);for(let a of t)o.set(n(o.get(),a));return o.get()},foldRight:r=>n=>Array.from(t).reduceRight((a,s)=>n(s,a),r),pipe:r=>r(e),serialize:()=>{let r=Array.from(t);return {toJSON:()=>JSON.stringify({_tag:"LazyList",value:r}),toYAML:()=>`_tag: LazyList
28
+ value: ${pe(r)}`,toBinary:()=>Buffer.from(JSON.stringify({_tag:"LazyList",value:r})).toString("base64")}},toString:()=>{let n=[],o=ae(0),a=R(false);for(let i of t)if(o.get()<10)n.push(i),o.increment();else {a.set(true);break}let s=n.map(i=>String(i)).join(", ");return a.get()?`LazyList(${s}, ...)`:`LazyList(${s})`}};return e},dt=t=>w(t),ft={empty:()=>w([]),of:t=>w([t]),from:(...t)=>w(t),iterate:(t,e)=>w((function*(){let r=R(t);for(;;)yield r.get(),r.set(e(r.get()));})()),generate:t=>w((function*(){for(;;)yield t();})()),range:(t,e,r=1)=>w((function*(){if(r===0)throw new Error("Step cannot be zero");let n=R(t);if(r>0)for(;n.get()<e;)yield n.get(),n.set(n.get()+r);else for(;n.get()>e;)yield n.get(),n.set(n.get()+r);})()),repeat:(t,e)=>w((function*(){if(e===void 0)for(;;)yield t;else {let r=ae(0);for(;r.get()<e;)yield t,r.increment();}})()),cycle:t=>w((function*(){let e=Array.from(t);if(e.length!==0)for(;;)yield*e;})())},Jr=a(dt,ft);var N={rule:t=>e=>{if(t==="email")return typeof e!="string"||!/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(e)?c(x.validation("value",e,"must be a valid email")):p(e);if(t==="url")try{return new URL(String(e)),p(e)}catch{return c(x.validation("value",e,"must be a valid URL"))}if(t==="uuid")return typeof e!="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(e)?c(x.validation("value",e,"must be a valid UUID")):p(e);if(t==="required")return e==null||e===""?c(x.validation("value",e,"is required")):p(e);if(t==="numeric")return typeof e!="number"&&!/^\d+$/.test(String(e))?c(x.validation("value",e,"must be numeric")):p(e);if(t==="alpha")return typeof e!="string"||!/^[a-zA-Z]+$/.test(e)?c(x.validation("value",e,"must contain only letters")):p(e);if(t==="alphanumeric")return typeof e!="string"||!/^[a-zA-Z0-9]+$/.test(e)?c(x.validation("value",e,"must be alphanumeric")):p(e);if(t.startsWith("min:")){let r=Number(t.split(":")[1]),n=Number(e);return isNaN(n)||n<r?c(x.validation("value",e,`must be at least ${r}`)):p(e)}if(t.startsWith("max:")){let r=Number(t.split(":")[1]),n=Number(e);return isNaN(n)||n>r?c(x.validation("value",e,`must be at most ${r}`)):p(e)}if(t.startsWith("minLength:")){let r=Number(t.split(":")[1]);return String(e).length<r?c(x.validation("value",e,`must be at least ${r} characters`)):p(e)}if(t.startsWith("maxLength:")){let r=Number(t.split(":")[1]);return String(e).length>r?c(x.validation("value",e,`must be at most ${r} characters`)):p(e)}if(t.startsWith("pattern:")){let r=t.substring(8);return new RegExp(r).test(String(e))?p(e):c(x.validation("value",e,`must match pattern ${r}`))}if(t.startsWith("in:")){let r=t.substring(3).split(",");return r.includes(String(e))?p(e):c(x.validation("value",e,`must be one of: ${r.join(", ")}`))}if(t.startsWith("notIn:")){let r=t.substring(6).split(",");return r.includes(String(e))?c(x.validation("value",e,`must not be one of: ${r.join(", ")}`)):p(e)}if(t==="date"){let r=new Date(String(e));return isNaN(r.getTime())?c(x.validation("value",e,"must be a valid date")):p(e)}if(t==="future"){let r=new Date(String(e));return isNaN(r.getTime())||r<=new Date?c(x.validation("value",e,"must be a future date")):p(e)}if(t==="past"){let r=new Date(String(e));return isNaN(r.getTime())||r>=new Date?c(x.validation("value",e,"must be a past date")):p(e)}return p(e)},combine:(...t)=>e=>{for(let r of t){let n=r(e);if(n.isLeft())return n}return p(e)},custom:(t,e)=>r=>t(r)?p(r):c(x.validation("value",r,e)),form:(t,e)=>{let r=[],n={};for(let[o,a]of Object.entries(t)){let s=e[o],i=a(s);if(i.isLeft()){let u=i.fold(d=>d,()=>{throw new Error("Should not be left")}),l=x.validation(o,s,u.context.rule);r.push(l);}else n[o]=i.get();}return r.length>0?c(h(r)):p(n)}},mt={...N,validators:{email:N.rule("email"),url:N.rule("url"),uuid:N.rule("uuid"),required:N.rule("required"),numeric:N.rule("numeric"),positiveNumber:N.combine(N.rule("numeric"),N.rule("min:0")),nonEmptyString:N.combine(N.rule("required"),N.custom(t=>typeof t=="string"&&t.trim().length>0,"must not be empty"))}},Qr=Object.assign(N.rule,mt);function yt(t){return t!=null&&typeof t=="object"&&"getOrElse"in t&&typeof t.getOrElse=="function"&&"getOrThrow"in t&&typeof t.getOrThrow=="function"&&"get"in t&&typeof t.get=="function"&&"orElse"in t&&typeof t.orElse=="function"&&"orNull"in t&&typeof t.orNull=="function"&&"orUndefined"in t&&typeof t.orUndefined=="function"}var nn={toOption:t=>t.fold(()=>U(),e=>S(e)),toList:t=>t.fold(()=>h([]),e=>h([e])),toEither:(t,e)=>t.fold(()=>c(e),r=>p(r)),isEmpty:t=>t.fold(()=>true,()=>false),size:t=>t.fold(()=>0,()=>1)};var Z=t=>t!==null&&typeof t=="object"&&(t._tag==="Some"||t._tag==="None"),J=t=>t!==null&&typeof t=="object"&&t._tag==="List",se=t=>t!==null&&typeof t=="object"&&(t._tag==="Left"||t._tag==="Right"),ie=t=>t!==null&&typeof t=="object"&&(t._tag==="Success"||t._tag==="Failure"),$=()=>{let t=(s,i)=>{if(Z(s))return s.map(u=>i(u));if(J(s))return s.map(u=>i(u));if(se(s))return s.map(u=>i(u));if(ie(s))return s.map(u=>i(u));throw new Error(`Unsupported functor type: ${JSON.stringify(s)}`)},e=s=>{if(Z(s))return s.get();if(J(s)){let i=s.toArray();if(i.length>0&&J(i[0])){let u=[];for(let l of i)J(l)&&u.push(...l.toArray());return h(u)}return s.flatten()}if(se(s))return s.isRight()?s.fold(()=>null,i=>i):s;if(ie(s))return s.isSuccess()?s.get():s;throw new Error(`Unsupported functor type for flatten: ${JSON.stringify(s)}`)},r=(s,i)=>{if(Z(s))return s.flatMap(u=>i(u));if(J(s))return s.flatMap(u=>i(u));if(se(s))return s.flatMap(u=>i(u));if(ie(s))return s.flatMap(u=>i(u));throw new Error(`Unsupported functor type for flatMap: ${JSON.stringify(s)}`)},n=(s,i)=>{if(Z(s)&&Z(i))return s.flatMap(u=>i.map(l=>u(l)));if(J(s)&&J(i))return s.flatMap(u=>i.map(l=>u(l)));if(se(s)&&se(i))return s.flatMap(u=>i.map(l=>u(l)));if(ie(s)&&ie(i))return s.flatMap(u=>i.map(l=>u(l)));throw new Error(`Unsupported functor type for ap: ${JSON.stringify(s)}`)},o=s=>{if(Z(s)){let i=s;if(i.isEmpty)return h([f.none()]);let u=i.get();if(J(u))return u.map(l=>f(l));throw new Error("Unsupported inner container type for sequence")}if(J(s)){let u=s.toArray();if(u.length===0)return f.none();let l=u[0];if(Z(l)){for(let m of u)if(m.isEmpty)return f.none();let d=u.map(m=>m.get());return f(h(d))}throw new Error("Unsupported inner container type for sequence")}throw new Error(`Unsupported outer container type for sequence: ${JSON.stringify(s)}`)};return {...he("HKT",{map:t,flatten:e,flatMap:r,ap:n,sequence:o,traverse:(s,i)=>o(t(s,u=>i(u)))}),_type:"HKT"}},ue=$();$.map=(t,e)=>ue.map(t,e);$.flatten=t=>ue.flatten(t);$.flatMap=(t,e)=>ue.flatMap(t,e);$.ap=(t,e)=>ue.ap(t,e);$.sequence=t=>ue.sequence(t);$.traverse=(t,e)=>ue.traverse(t,e);$.isOption=Z;$.isList=J;$.isEither=se;$.isTry=ie;function cn(t){return {id:t,isSame:r=>r.id===t}}var Le=t=>({_tag:"Success",error:void 0,isSuccess(){return true},isFailure(){return false},get:()=>t,getOrElse:e=>t,getOrThrow:e=>t,orElse:e=>Le(t),orNull:()=>t,orUndefined:()=>t,orThrow:e=>t,toEither:()=>p(t),map:e=>ve(()=>e(t)),ap:e=>e.map(r=>r(t)),flatMap:e=>e(t),flatMapAsync:async e=>e(t),fold:(e,r)=>r(t),match:e=>e.Success(t),foldLeft:e=>r=>r(e,t),foldRight:e=>r=>r(t,e),toString:()=>`Success(${pe(t)})`,toPromise:()=>Promise.resolve(t),toValue:()=>({_tag:"Success",value:t}),pipe:e=>e(t),serialize:()=>({toJSON:()=>JSON.stringify({_tag:"Success",value:t}),toYAML:()=>`_tag: Success
29
+ value: ${pe(t)}`,toBinary:()=>Buffer.from(JSON.stringify({_tag:"Success",value:t})).toString("base64")}),get size(){return 1},get isEmpty(){return false},contains:e=>t===e,reduce:e=>t,reduceRight:e=>t,count:e=>e(t)?1:0,find:e=>e(t)?f(t):f(void 0),exists:e=>e(t),forEach:e=>e(t)}),j=t=>({_tag:"Failure",error:t,isSuccess(){return false},isFailure(){return true},get:()=>{throw t},getOrElse:e=>e,getOrThrow:e=>{throw e??t},orElse:e=>e,orNull:()=>null,orUndefined:()=>{},orThrow:e=>{throw e},toEither:()=>c(t),map:e=>j(t),ap:e=>j(t),flatMap:e=>j(t),flatMapAsync:e=>Promise.resolve(j(t)),fold:(e,r)=>e(t),match:e=>e.Failure(t),foldLeft:e=>r=>e,foldRight:e=>r=>e,toString:()=>`Failure(${pe(t)}))`,toPromise:()=>Promise.reject(t),toValue:()=>({_tag:"Failure",value:t}),pipe:e=>{throw t},serialize:()=>({toJSON:()=>JSON.stringify({_tag:"Failure",error:t.message,stack:t.stack}),toYAML:()=>`_tag: Failure
30
+ error: ${t.message}
31
+ stack: ${t.stack}`,toBinary:()=>Buffer.from(JSON.stringify({_tag:"Failure",error:t.message,stack:t.stack})).toString("base64")}),get size(){return 0},get isEmpty(){return true},contains:e=>false,reduce:e=>{throw new Error("Cannot reduce a Failure")},reduceRight:e=>{throw new Error("Cannot reduceRight a Failure")},count:e=>0,find:e=>f(null),exists:e=>false,forEach:e=>{}}),gt=t=>{try{return Le(t())}catch(e){return j(e instanceof Error?e:new Error(String(e)))}},Je={fromJSON:t=>{let e=JSON.parse(t);if(e._tag==="Success")return Le(e.value);{let r=new Error(e.error);return e.stack&&(r.stack=e.stack),j(r)}},fromYAML:t=>{let e=t.split(`
32
+ `),r=e[0]?.split(": ")[1];if(!r)return j(new Error("Invalid YAML format for Try"));if(r==="Success"){let n=e[1]?.split(": ")[1];if(!n)return j(new Error("Invalid YAML format for Try Success"));let o=JSON.parse(n);return Le(o)}else {let n=e[1]?.split(": ")[1];if(!n)return j(new Error("Invalid YAML format for Try Failure"));let o=e[2]?.split(": "),a=o&&o.length>1?o.slice(1).join(": "):void 0,s=new Error(n);return a&&(s.stack=a),j(s)}},fromBinary:t=>{let e=Buffer.from(t,"base64").toString();return Je.fromJSON(e)}},ve=a(gt,Je);var X=t=>{let e=false,r,n,o=false,a=()=>{if(!e)try{r=t(),e=!0;}catch(i){throw n=i,o=true,e=true,i}if(o)throw n;return r};return {_tag:"Lazy",get isEvaluated(){return e},get:a,getOrElse:i=>{try{return a()}catch{return i}},getOrNull:()=>{try{return a()}catch{return null}},orNull:()=>{try{return a()}catch{return null}},getOrThrow:i=>{try{return a()}catch(u){throw i??u}},orElse:i=>V(()=>{try{return a()}catch{return i.get()}}),orUndefined:()=>{try{return a()}catch{return}},map:i=>V(()=>i(a())),ap:i=>V(()=>i.get()(a())),mapAsync:async i=>{let u=a(),l=await i(u);return V(()=>l)},flatMap:i=>V(()=>i(a()).get()),flatMapAsync:async i=>{let u=a(),l=await i(u);return V(()=>l.get())},filter:i=>V(()=>{let u=a();return i(u)?S(u):U}),recover:i=>V(()=>{try{return a()}catch(u){return i(u)}}),recoverWith:i=>V(()=>{try{return a()}catch(u){return i(u).get()}}),toOption:()=>{try{return S(a())}catch{return U}},toEither:()=>{try{return p(a())}catch(i){return c(i)}},toEitherWith:i=>{try{return p(a())}catch(u){return c(i(u))}},toTry:()=>ve(()=>a()),tap:i=>V(()=>{let u=a();return i(u),u}),tapError:i=>V(()=>{try{return a()}catch(u){throw i(u),u}}),fold:i=>i(a()),foldWith:(i,u)=>{try{return u(a())}catch(l){return i(l)}},foldLeft:i=>u=>u(i,a()),foldRight:i=>u=>u(a(),i),match:i=>i.Lazy(a()),toString:()=>e&&!o?`Lazy(${pe(r)})`:e&&o?`Lazy(<error: ${n instanceof Error?n.message:String(n)}>)`:"Lazy(<not evaluated>)",toValue:()=>e&&!o?{_tag:"Lazy",evaluated:true,value:r}:{_tag:"Lazy",evaluated:false},get size(){try{return a(),1}catch{return 0}},get isEmpty(){try{return a(),!1}catch{return true}},contains:i=>{try{return a()===i}catch{return false}},reduce:i=>a(),reduceRight:i=>a(),count:i=>{try{return i(a())?1:0}catch{return 0}},find:i=>{try{let u=a();return i(u)?S(u):U}catch{return U}},exists:i=>{try{return i(a())}catch{return false}},forEach:i=>{try{i(a());}catch{}},pipe:i=>i(a()),serialize:()=>({toJSON:()=>JSON.stringify(e&&!o?{_tag:"Lazy",evaluated:true,value:r}:{_tag:"Lazy",evaluated:false}),toYAML:()=>e&&!o?`_tag: Lazy
33
+ evaluated: true
34
+ value: ${pe(r)}`:`_tag: Lazy
35
+ evaluated: false`,toBinary:()=>Buffer.from(JSON.stringify(e&&!o?{_tag:"Lazy",evaluated:true,value:r}:{_tag:"Lazy",evaluated:false})).toString("base64")}),typeable:"Lazy"}},ht={of:t=>X(t),fromValue:t=>X(()=>t),fromOption:(t,e)=>X(()=>t._tag==="Some"?t.value:e()),fromTry:t=>X(()=>t.get()),fromEither:t=>X(()=>t.fold(e=>{throw e},e=>e)),fromPromise:t=>X(()=>{throw new Error("Promise not yet resolved. Use await on the promise before creating Lazy.")}),fail:t=>X(()=>{throw t})},V=a(X,ht);var de=Map;var G=t=>{let r={values:new de(t)},n=()=>Array.from(r.values.entries()).map(([T,g])=>b([T,g])),o=T=>G(new de(r.values).set(T.toArray()[0],T.toArray()[1]).entries()),a=T=>{let g=new de(r.values);return g.delete(T)?G(g.entries()):G(r.values.entries())},s=T=>{let g=T.toArray();return r.values.get(g[0])===g[1]},i=()=>r.values.size,u=T=>G(Array.from(r.values.entries()).map(([g,M])=>[g,T(M)])),l=T=>{let g=G(r.values.entries()).toList();return G(g.flatMap(T).toArray())},d=T=>{let g=[];for(let[M,ne]of r.values.entries()){let ce=T.get(M);ce._tag==="Some"&&ce.value&&g.push([M,ce.value(ne)]);}return G(g)},m=async T=>{let g=new de;for(let[M,ne]of r.values.entries()){let ce=await T(ne);for(let Ge of ce.toList()){let[He,Ze]=Ge.toArray();g.set(He,Ze);}}return G(g.entries())},k=T=>h(n()).reduce(T),b$1=T=>h(n()).reduceRight(T),E=T=>g=>h(n()).foldLeft(T)(g),D=T=>g=>h(n()).foldRight(T)(g),H=T=>f(r.values.get(T)),re=(T,g)=>f(r.values.get(T)).getOrElse(g),le=()=>r.values.size===0,fe=(T,g)=>f(r.values.get(T)).orElse(g),me=(T,g)=>{if(le())return T();let M=n();if(M.length===0)return T();let ne=M[0];return ne===void 0?T():g(ne)},Pe=()=>h(n()),y=()=>ee(n()),B=()=>`Map(${n().toString()})`,O=T=>le()?T.Empty():T.NonEmpty(n());return {_tag:"Map",[Symbol.iterator]:()=>r.values.entries(),add:o,remove:a,contains:s,get size(){return i()},map:u,ap:d,flatMap:l,flatMapAsync:m,reduce:k,reduceRight:b$1,foldLeft:E,foldRight:D,fold:me,match:O,get:H,getOrElse:re,get isEmpty(){return le()},orElse:fe,toList:Pe,toSet:y,toString:B,toValue:()=>({_tag:"Map",value:Array.from(r.values.entries())}),pipe:T=>T(Array.from(r.values.entries())),serialize:()=>({toJSON:()=>JSON.stringify({_tag:"Map",value:Array.from(r.values.entries())}),toYAML:()=>`_tag: Map
36
+ value: ${JSON.stringify(Array.from(r.values.entries()))}`,toBinary:()=>Buffer.from(JSON.stringify({_tag:"Map",value:Array.from(r.values.entries())})).toString("base64")})}},Et=t=>G(t),We={fromJSON:t=>{let e=JSON.parse(t);return Be(e.value)},fromYAML:t=>{let r=t.split(`
37
+ `)[1]?.split(": ")[1];if(!r)return Be([]);let n=JSON.parse(r);return Be(n)},fromBinary:t=>{let e=Buffer.from(t,"base64").toString();return We.fromJSON(e)}},Be=a(Et,We);var At={default:t=>e=>t(e),when:(t,e)=>r=>t(r)?e(r):void 0};var C=(t=[])=>{let e="Stack",r=[...t],n=()=>r.length,o=()=>r.length===0;return {_tag:e,get size(){return n()},get isEmpty(){return o()},contains:y=>r.includes(y),reduce:y=>{if(r.length===0)throw new Error("Cannot reduce an empty stack");return r.reduce(y)},reduceRight:y=>{if(r.length===0)throw new Error("Cannot reduce an empty stack");return r.reduceRight(y)},push:y=>C([...r,y]),pop:()=>{if(o())return [C([]),f(null)];let y=[...r],B=y.pop();return [C(y),f(B)]},peek:()=>o()?f(null):f(r[r.length-1]),map:y=>C(r.map(y)),flatMap:y=>o()?C([]):r.reduce((B,O)=>y(O).toArray().reduce((g,M)=>g.push(M),B),C([])),ap:y=>{let B=[];return r.forEach(O=>{y.toArray().forEach(T=>{B.push(T(O));});}),C(B)},flatMapAsync:async y=>o()?C([]):(await Promise.all(r.map(async O=>await y(O)))).reduce((O,T)=>T.toArray().reduce((g,M)=>g.push(M),O),C([])),toList:()=>h(r),toArray:()=>[...r],toString:()=>`Stack(${r.join(", ")})`,fold:(y,B)=>{if(o())return y();let O=r[r.length-1];return O!==void 0?B(O):y()},foldLeft:y=>B=>r.reduce(B,y),foldRight:y=>B=>r.reduceRight((O,T)=>B(T,O),y),match:y=>o()?y.Empty():y.NonEmpty([...r]),toValue:()=>({_tag:"Stack",value:r}),pipe:y=>y([...r]),serialize:()=>({toJSON:()=>JSON.stringify({_tag:"Stack",value:r}),toYAML:()=>`_tag: Stack
38
+ value: ${JSON.stringify(r)}`,toBinary:()=>Buffer.from(JSON.stringify({_tag:"Stack",value:r})).toString("base64")})}},Rt=(t=[])=>C(t),qe={empty:()=>C([]),of:t=>C([t]),fromJSON:t=>{let e=JSON.parse(t);return Oe(e.value)},fromYAML:t=>{let r=t.split(`
39
+ `)[1]?.split(": ")[1];if(!r)return Oe([]);let n=JSON.parse(r);return Oe(n)},fromBinary:t=>{let e=Buffer.from(t,"base64").toString();return qe.fromJSON(e)}},Oe=a(Rt,qe);function Dn(t){let e=ge({_tag:t._tag,impl:t.impl});return {...e,toValue:()=>({_tag:e._tag,value:t.value})}}var S=t=>({_tag:"Some",value:t,isEmpty:false,isSome(){return true},isNone(){return false},get:()=>t,getOrElse:()=>t,getOrThrow:()=>t,orElse:e=>S(t),orNull:()=>t,orUndefined:()=>t,map:e=>S(e(t)),ap:e=>e._tag==="Some"&&e.value?S(e.value(t)):W,filter(e){return e(t)?S(t):W},count:e=>e(t)?1:0,find:e=>e(t)?S(t):W,exists:e=>e(t),forEach:e=>e(t),fold:(e,r)=>r(t),match:e=>e.Some(t),flatMap:e=>e(t),flatMapAsync:async e=>await e(t),reduce:e=>e(void 0,t),reduceRight:e=>e(void 0,t),foldLeft:e=>r=>r(e,t),foldRight:e=>r=>r(t,e),toList:()=>h([t]),contains:e=>e===t,size:1,toEither:e=>p(t),toPromise:()=>Promise.resolve(t),toString:()=>`Some(${pe(t)})`,toValue:()=>({_tag:"Some",value:t}),pipe:e=>e(t),serialize:()=>({toJSON:()=>JSON.stringify({_tag:"Some",value:t}),toYAML:()=>`_tag: Some
40
+ value: ${pe(t)}`,toBinary:()=>Buffer.from(JSON.stringify({_tag:"Some",value:t})).toString("base64")})}),W={_tag:"None",value:void 0,isEmpty:true,isSome(){return false},isNone(){return true},get:()=>{throw new Error("Cannot call get() on None")},getOrElse:t=>t,getOrThrow(t){throw t},orElse:t=>t,orNull:()=>null,orUndefined:()=>{},map:t=>W,ap:t=>W,filter(t){return W},count:t=>0,find:t=>W,exists:t=>false,forEach:t=>{},flatMap:t=>W,flatMapAsync:t=>Promise.resolve(W),reduce:()=>{},reduceRight:()=>{},fold:(t,e)=>t(),match:t=>t.None(),foldLeft:t=>()=>t,foldRight:t=>()=>t,toList:()=>h([]),contains:()=>false,size:0,toEither:t=>c(t),toPromise:()=>Promise.reject(new Error("Cannot convert None to Promise")),toString:()=>"None",toValue:()=>({_tag:"None",value:void 0}),pipe:t=>t(void 0),serialize:()=>({toJSON:()=>JSON.stringify({_tag:"None",value:null}),toYAML:()=>`_tag: None
41
+ value: null`,toBinary:()=>Buffer.from(JSON.stringify({_tag:"None",value:null})).toString("base64")})},U=()=>W,Lt=t=>t!=null?S(t):U(),Qe={from:t=>f(t),none:()=>U(),fromJSON:t=>{let e=JSON.parse(t);return e._tag==="Some"?S(e.value):U()},fromYAML:t=>{let e=t.split(`
42
+ `),r=e[0]?.split(": ")[1],n=e[1]?.split(": ")[1];if(!r||!n)return U();let o=n==="null"?null:JSON.parse(n);return r==="Some"?S(o):U()},fromBinary:t=>{let e=Buffer.from(t,"base64").toString();return Qe.fromJSON(e)}},f=a(Lt,Qe);export{yt as $,er as A,tr as B,rr as C,nr as D,sr as E,cr as F,he as G,Ee as H,Y as I,it as J,ke as K,R as L,ut as M,Te as N,Q as O,we as P,P as Q,Ue as R,z as S,De as T,Re as U,Or as V,Pr as W,Nr as X,x as Y,Jr as Z,Qr as _,S as a,nn as aa,U as b,$ as ba,Lt as c,cn as ca,f as d,ve as da,ee as e,V as ea,ge as f,de as fa,be as g,Be as ga,h,At as ha,p as i,Oe as ia,c as j,Dn as ja,Ct as k,zt as l,Kt as m,tt as n,rt as o,$t as p,Ie as q,F as r,nt as s,qt as t,Yt as u,Qt as v,Gt as w,Ht as x,Zt as y,Xt as z};//# sourceMappingURL=chunk-VXULTLLY.mjs.map
43
+ //# sourceMappingURL=chunk-VXULTLLY.mjs.map