functype 0.14.7 → 0.16.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 { T as Type, P as Pipe, a as Typeable, S as Serializable, F as Foldable } from './Typeable-CitTP1ay.js';
1
+ import { T as Type, P as Pipe, a as Typeable, S as Serializable, F as Foldable } from './Typeable-DiGVtDnq.js';
2
2
 
3
3
  /**
4
4
  * Protocol definitions for Do-notation
@@ -31,32 +31,37 @@ interface Doable<T> {
31
31
  }
32
32
 
33
33
  /**
34
- * Extractable type class for data structures that can extract their values
35
- * with various fallback strategies.
34
+ * Interface for operations that can fail with exceptions.
35
+ * These methods should be used with care as they can throw at runtime.
36
36
  *
37
- * This interface is implemented by Option, Either, and other types that
38
- * wrap values and need safe extraction methods.
37
+ * @interface Unsafe
38
+ * @template T The type of value that can be extracted
39
39
  */
40
- interface Extractable<T extends Type> {
40
+ interface Unsafe<T extends Type> {
41
41
  /**
42
- * Extracts the value unsafely
43
- * @throws Error if the container is empty
42
+ * Extract the value or throw an error
43
+ * @param error Optional custom error to throw. If not provided, uses type-appropriate default error
44
+ * @throws {Error} The specified error, container's error, or a sensible default
44
45
  * @returns The contained value
45
46
  */
46
- get(): T;
47
+ getOrThrow(error?: Error): T;
48
+ }
49
+ /**
50
+ * Extractable type class for data structures that can extract their values
51
+ * with various fallback strategies.
52
+ *
53
+ * This interface is implemented by Option, Either, and other types that
54
+ * wrap values and need both safe and fallible extraction methods.
55
+ *
56
+ * Extends Unsafe to provide exception-throwing operations alongside safe alternatives.
57
+ */
58
+ interface Extractable<T extends Type> extends Unsafe<T> {
47
59
  /**
48
60
  * Returns the contained value or a default value
49
61
  * @param defaultValue - The value to return if extraction fails
50
62
  * @returns The contained value or defaultValue
51
63
  */
52
64
  getOrElse(defaultValue: T): T;
53
- /**
54
- * Returns the contained value or throws an error
55
- * @param error - Optional error to throw (implementations may have defaults)
56
- * @returns The contained value
57
- * @throws The specified error if extraction fails
58
- */
59
- getOrThrow(error?: Error): T;
60
65
  /**
61
66
  * Returns this container if it has a value, otherwise returns the alternative
62
67
  * @param alternative - The alternative container
@@ -75,7 +80,7 @@ interface Extractable<T extends Type> {
75
80
  orUndefined(): T | undefined;
76
81
  }
77
82
  /**
78
- * Type guard to check if a value implements ExtractableOption
83
+ * Type guard to check if a value implements Extractable
79
84
  */
80
85
  declare function isExtractable<T extends Type>(value: unknown): value is Extractable<T>;
81
86
 
@@ -238,7 +243,6 @@ interface Try<T> extends FunctypeBase<T, TypeNames>, Extractable<T>, Pipe<T>, Pr
238
243
  readonly _tag: "Failure";
239
244
  error: Error;
240
245
  };
241
- get: () => T;
242
246
  getOrElse: (defaultValue: T) => T;
243
247
  getOrThrow: (error?: Error) => T;
244
248
  orElse: (alternative: Try<T>) => Try<T>;
@@ -433,12 +437,6 @@ interface Option<T extends Type> extends Functype<T, "Some" | "None">, Promisabl
433
437
  value: undefined;
434
438
  isEmpty: true;
435
439
  };
436
- /**
437
- * Extracts the value if present
438
- * @throws Error if the Option is None
439
- * @returns The contained value
440
- */
441
- get(): T;
442
440
  /**
443
441
  * Returns the contained value or a default value if None
444
442
  * @param defaultValue - The value to return if this Option is None
@@ -446,12 +444,12 @@ interface Option<T extends Type> extends Functype<T, "Some" | "None">, Promisabl
446
444
  */
447
445
  getOrElse(defaultValue: T): T;
448
446
  /**
449
- * Returns the contained value or throws a specified error if None
450
- * @param error - The error to throw if this Option is None
447
+ * Returns the contained value or throws an error if None
448
+ * @param error - Optional custom error to throw. If not provided, throws a default error
451
449
  * @returns The contained value
452
- * @throws The specified error if the Option is None
450
+ * @throws The specified error or a default error if the Option is None
453
451
  */
454
- getOrThrow(error: Error): T;
452
+ getOrThrow(error?: Error): T;
455
453
  /**
456
454
  * Returns this Option if it contains a value, otherwise returns the alternative
457
455
  * @param alternative - The alternative Option to return if this is None
@@ -816,7 +814,7 @@ declare const tryCatchAsync: <L extends Type, R extends Type>(f: () => Promise<R
816
814
  * @module Either
817
815
  * @category Core
818
816
  */
819
- interface Either<L extends Type, R extends Type> extends FunctypeBase<R, "Left" | "Right">, Promisable<R>, Doable<R>, Reshapeable<R> {
817
+ interface Either<L extends Type, R extends Type> extends FunctypeBase<R, "Left" | "Right">, Promisable<R>, Doable<R>, Reshapeable<R>, Extractable<R> {
820
818
  readonly _tag: "Left" | "Right";
821
819
  value: L | R;
822
820
  isLeft(): this is Either<L, R> & {
@@ -827,7 +825,6 @@ interface Either<L extends Type, R extends Type> extends FunctypeBase<R, "Left"
827
825
  readonly _tag: "Right";
828
826
  value: R;
829
827
  };
830
- get: () => R;
831
828
  getOrElse: (defaultValue: R) => R;
832
829
  getOrThrow: (error?: Error) => R;
833
830
  orElse(alternative: Either<L, R>): Either<L, R>;
@@ -901,4 +898,4 @@ declare const Either: {
901
898
  fromBinary: <L extends Type, R extends Type>(binary: string) => Either<L, R>;
902
899
  };
903
900
 
904
- export { type Applicative as A, type Collection as C, type DoResult as D, Either as E, type FunctypeBase as F, List as L, type Matchable as M, None as N, Option as O, type Promisable as P, Right as R, Some as S, Try as T, type Extractable as a, type Traversable as b, type Doable as c, type TestEither as d, Left as e, isLeft as f, TypeCheckRight as g, TypeCheckLeft as h, isRight as i, tryCatchAsync as j, isExtractable as k, type Functype as l, type FunctypeCollection as m, MatchableUtils as n, OptionConstructor as o, Set as p, type TypeNames as q, type CollectionOps as r, type ContainerOps as s, tryCatch as t, type AsyncMonad as u, type Functor as v, type Monad as w, type Reshapeable as x };
901
+ export { type AsyncMonad as A, type Collection as C, type DoResult as D, Either as E, type FunctypeBase as F, List as L, type Matchable as M, None as N, Option as O, type Promisable as P, Right as R, Some as S, Try as T, type Extractable as a, type Doable as b, type Traversable as c, type TestEither as d, Left as e, isLeft as f, TypeCheckRight as g, TypeCheckLeft as h, isRight as i, tryCatchAsync as j, isExtractable as k, type Functype as l, type FunctypeCollection as m, MatchableUtils as n, OptionConstructor as o, Set as p, type TypeNames as q, type CollectionOps as r, type ContainerOps as s, tryCatch as t, type Applicative as u, type Functor as v, type Monad as w, type Reshapeable as x };
@@ -1,4 +1,4 @@
1
- type Unbrand<T> = T extends Brand<string, infer U> ? U : T;
1
+ type Unwrap<T> = T extends Brand<string, infer U> ? U : T;
2
2
  type ExtractBrand<T> = T extends Brand<infer K, unknown> ? K : never;
3
3
  type Brand<K extends string, T> = T & {
4
4
  readonly __brand: K;
@@ -14,11 +14,18 @@ type Brand<K extends string, T> = T & {
14
14
  */
15
15
  declare function Brand<K extends string, T>(_brand: K, value: T): Brand<K, T>;
16
16
  /**
17
- * Helper to remove a brand from a value
18
- * @param branded - The branded value
17
+ * Helper to unwrap a branded value to its underlying type
18
+ * Works with both Brand and ValidatedBrand
19
+ * @param branded - The branded value (can be null or undefined)
19
20
  * @returns The original value without the brand
21
+ *
22
+ * Note: Also exported as 'unwrap' from 'functype/branded' for convenience
20
23
  */
21
- declare function unbrand<K extends string, T>(branded: Brand<K, T>): T;
24
+ declare function unwrapBrand<K extends string, T>(branded: Brand<K, T>): T;
25
+ declare function unwrapBrand<K extends string, T>(branded: Brand<K, T> | null): T | null;
26
+ declare function unwrapBrand<K extends string, T>(branded: Brand<K, T> | undefined): T | undefined;
27
+ declare function unwrapBrand<K extends string, T>(branded: Brand<K, T> | null | undefined): T | null | undefined;
28
+
22
29
  /**
23
30
  * Type guard for checking if a value has a specific brand
24
31
  * @param value - The value to check
@@ -44,4 +51,4 @@ declare const BrandedNumber: <K extends string>(brand: K) => (value: number) =>
44
51
  type BrandedBoolean<K extends string> = Brand<K, boolean>;
45
52
  declare const BrandedBoolean: <K extends string>(brand: K) => (value: boolean) => BrandedBoolean<K>;
46
53
 
47
- export { Brand, BrandedBoolean, BrandedNumber, BrandedString, type ExtractBrand, type Unbrand, createBrander, hasBrand, unbrand };
54
+ export { Brand, BrandedBoolean, BrandedNumber, BrandedString, type ExtractBrand, type Unwrap, createBrander, hasBrand, unwrapBrand as unwrap, unwrapBrand };
@@ -1,2 +1,2 @@
1
- export{a as Brand,g as BrandedBoolean,f as BrandedNumber,e as BrandedString,d as createBrander,c as hasBrand,b as unbrand}from'../chunk-YBBRJTHY.mjs';//# sourceMappingURL=index.mjs.map
1
+ export{a as Brand,g as BrandedBoolean,f as BrandedNumber,e as BrandedString,d as createBrander,c as hasBrand,b as unwrap,b as unwrapBrand}from'../chunk-OR6V4TCO.mjs';//# sourceMappingURL=index.mjs.map
2
2
  //# sourceMappingURL=index.mjs.map
@@ -0,0 +1,2 @@
1
+ function r(n,e){return e}function d(n){return n}function t(n,e){return n!=null}function a(n){return e=>r(n,e)}var s=n=>e=>r(n,e),o=n=>e=>r(n,e),u=n=>e=>r(n,e);export{r as a,d as b,t as c,a as d,s as e,o as f,u as g};//# sourceMappingURL=chunk-OR6V4TCO.mjs.map
2
+ //# sourceMappingURL=chunk-OR6V4TCO.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/branded/Brand.ts"],"names":["Brand","_brand","value","unwrapBrand","branded","hasBrand","createBrander","brand","BrandedString","BrandedNumber","BrandedBoolean"],"mappings":"AAsBO,SAASA,CAAAA,CAA2BC,CAAAA,CAAWC,CAAAA,CAAuB,CAG3E,OAAOA,CACT,CAcO,SAASC,CAAAA,CAAiCC,CAAAA,CAA+D,CAE9G,OACSA,CAIX,CAgBO,SAASC,CAAAA,CAA8BH,CAAAA,CAAgBD,CAAAA,CAAiC,CAG7F,OAAOC,CAAAA,EAAU,IACnB,CAOO,SAASI,CAAAA,CAAmCC,CAAAA,CAAU,CAC3D,OAAQL,CAAAA,EAA0BF,CAAAA,CAAMO,CAAAA,CAAOL,CAAK,CACtD,CAQO,IAAMM,CAAAA,CACQD,CAAAA,EAClBL,CAAAA,EACCF,CAAAA,CAAMO,CAAAA,CAAOL,CAAK,EAETO,CAAAA,CACQF,CAAAA,EAClBL,CAAAA,EACCF,CAAAA,CAAMO,CAAAA,CAAOL,CAAK,CAAA,CAETQ,CAAAA,CACQH,CAAAA,EAClBL,CAAAA,EACCF,CAAAA,CAAMO,CAAAA,CAAOL,CAAK","file":"chunk-OR6V4TCO.mjs","sourcesContent":["// Phantom type brand - exists only at compile time\n// Must use type alias (not interface) because we need intersection with primitives\nexport type Brand<K extends string, T> = T & {\n readonly __brand: K\n}\n\n// Utility type to extract the underlying type from a branded type\n// Handles both Brand and ValidatedBrand\nexport type Unwrap<T> = T extends Brand<string, infer U> ? U : T\n\n// Utility type to extract the brand from a branded type\nexport type ExtractBrand<T> = T extends Brand<infer K, unknown> ? K : never\n\n/**\n * Brand is a utility for creating nominal typing in TypeScript.\n * It creates phantom types that exist only at compile time.\n * At runtime, the branded value IS the primitive value.\n *\n * @param _brand\n * @param value - The value to brand\n * @returns The value with phantom type brand\n */\nexport function Brand<K extends string, T>(_brand: K, value: T): Brand<K, T> {\n // Just return the value with a type assertion\n // No runtime modification - the brand exists only in TypeScript\n return value as Brand<K, T>\n}\n\n/**\n * Helper to unwrap a branded value to its underlying type\n * Works with both Brand and ValidatedBrand\n * @param branded - The branded value (can be null or undefined)\n * @returns The original value without the brand\n *\n * Note: Also exported as 'unwrap' from 'functype/branded' for convenience\n */\nexport function unwrapBrand<K extends string, T>(branded: Brand<K, T>): T\nexport function unwrapBrand<K extends string, T>(branded: Brand<K, T> | null): T | null\nexport function unwrapBrand<K extends string, T>(branded: Brand<K, T> | undefined): T | undefined\nexport function unwrapBrand<K extends string, T>(branded: Brand<K, T> | null | undefined): T | null | undefined\nexport function unwrapBrand<K extends string, T>(branded: Brand<K, T> | null | undefined): T | null | undefined {\n // Handle null/undefined\n if (branded === null || branded === undefined) {\n return branded\n }\n // Since branded values (both Brand and ValidatedBrand) ARE their primitives, just return as-is\n return branded as unknown as T\n}\n\n// Convenience alias for branded module users\nexport { unwrapBrand as unwrap }\n\n/**\n * Type guard for checking if a value has a specific brand\n * @param value - The value to check\n * @param _brand - The brand to check for (unused at runtime)\n * @returns True if the value has the specified brand\n *\n * Note: Since brands are phantom types that exist only at compile time,\n * this function can only provide a runtime approximation. It always returns true\n * for non-null values, as we have no way to actually check the brand at runtime.\n * This function is primarily for API consistency and documentation purposes.\n */\nexport function hasBrand<K extends string, T>(value: unknown, _brand: K): value is Brand<K, T> {\n // In a phantom type system, we can't actually check the brand at runtime\n // We can only verify the value exists\n return value !== null && value !== undefined\n}\n\n/**\n * Create a branded type constructor for a specific brand\n * @param brand - The brand name\n * @returns A function that brands values with the specified brand\n */\nexport function createBrander<K extends string, T>(brand: K) {\n return (value: T): Brand<K, T> => Brand(brand, value)\n}\n\n// Common branded primitive types\nexport type BrandedString<K extends string> = Brand<K, string>\nexport type BrandedNumber<K extends string> = Brand<K, number>\nexport type BrandedBoolean<K extends string> = Brand<K, boolean>\n\n// Factory for common primitive branded types\nexport const BrandedString =\n <K extends string>(brand: K) =>\n (value: string): BrandedString<K> =>\n Brand(brand, value)\n\nexport const BrandedNumber =\n <K extends string>(brand: K) =>\n (value: number): BrandedNumber<K> =>\n Brand(brand, value)\n\nexport const BrandedBoolean =\n <K extends string>(brand: K) =>\n (value: boolean): BrandedBoolean<K> =>\n Brand(brand, value)\n"]}
@@ -0,0 +1,45 @@
1
+ import {a,b as b$1}from'./chunk-BQJB6CCW.mjs';import {a as a$1}from'./chunk-OR6V4TCO.mjs';import Ee from'safe-stable-stringify';var Y=Set;var M=t=>{let e=new Y(t),r={_tag:"Set",[Symbol.iterator]:()=>e[Symbol.iterator](),add:n=>M([...e,n]),remove:n=>{let o=new Y(e);return o.delete(n),M(o)},contains:n=>e.has(n),has:n=>e.has(n),map:n=>M(Array.from(e).map(n)),ap:n=>{let o=new Y;for(let a of e)for(let s of n)o.add(s(a));return M(o)},flatMap:n=>{let o=new Y;for(let a of e)for(let s of n(a))o.add(s);return M(o)},flatMapAsync:async n=>{let o=new Y;for(let a of e){let s=await n(a);for(let i of s)o.add(i);}return M(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 Y;for(let a of e)n(a)&&o.add(a);return M(o)},filterNot:n=>{let o=new Y;for(let a of e)n(a)||o.add(a);return M(o)},drop:n=>M(Array.from(e).slice(n)),dropRight:n=>M(Array.from(e).slice(0,-n)),dropWhile:n=>{let o=Array.from(e),a=o.findIndex(s=>!n(s));return M(a===-1?[]:o.slice(a))},flatten:()=>{let n=new Y;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 M(n)},get head(){return Array.from(e)[0]},get headOption(){let n=Array.from(e)[0];return f(n)},toList:()=>d(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},tt=t=>M(t),_e={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 _e.fromJSON(e)}},ee=a(tt,_e);function b(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}}}b.of=b;var oe=(t=0)=>{let e=b(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 ye=()=>{let t=b([]);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}};var O=t=>{let e={_tag:"LazyList",[Symbol.iterator]:()=>t[Symbol.iterator](),map:r=>O((function*(){for(let n of t)yield r(n);})()),flatMap:r=>O((function*(){for(let n of t)yield*r(n);})()),filter:r=>O((function*(){for(let n of t)r(n)&&(yield n);})()),take:r=>O((function*(){let n=oe(0);for(let o of t){if(n.get()>=r)break;yield o,n.increment();}})()),drop:r=>O((function*(){let n=oe(0);for(let o of t)n.get()>=r&&(yield o),n.increment();})()),takeWhile:r=>O((function*(){for(let n of t){if(!r(n))break;yield n;}})()),dropWhile:r=>O((function*(){let n=b(true);for(let o of t)n.get()&&r(o)||(n.set(false),yield o);})()),concat:r=>O((function*(){yield*t,yield*r;})()),zip:r=>O((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:()=>d(Array.from(t)),toArray:()=>Array.from(t),forEach:r=>{for(let n of t)r(n);},reduce:(r,n)=>{let o=b(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=oe(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=b(void 0),n=b(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=b(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
4
+ value: ${Ee(r)}`,toBinary:()=>Buffer.from(JSON.stringify({_tag:"LazyList",value:r})).toString("base64")}},toString:()=>{let n=[],o=oe(0),a=b(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},nt=t=>O(t),ot={empty:()=>O([]),of:t=>O([t]),from:(...t)=>O(t),iterate:(t,e)=>O((function*(){let r=b(t);for(;;)yield r.get(),r.set(e(r.get()));})()),generate:t=>O((function*(){for(;;)yield t();})()),range:(t,e,r=1)=>O((function*(){if(r===0)throw new Error("Step cannot be zero");let n=b(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)=>O((function*(){if(e===void 0)for(;;)yield t;else {let r=oe(0);for(;r.get()<e;)yield t,r.increment();}})()),cycle:t=>O((function*(){let e=Array.from(t);if(e.length!==0)for(;;)yield*e;})())},Zt=a(nt,ot);var ce=t=>({_tag:"Success",error:void 0,isSuccess(){return true},isFailure(){return false},getOrElse:e=>t,getOrThrow:e=>t,orElse:e=>ce(t),orNull:()=>t,orUndefined:()=>t,orThrow:e=>t,toEither:e=>p(t),map:e=>S(()=>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(${Ee(t)})`,toPromise:()=>Promise.resolve(t),toValue:()=>({_tag:"Success",value:t}),toOption:()=>w(t),toList:()=>d([t]),toTry:()=>ce(t),pipe:e=>e(t),serialize:()=>({toJSON:()=>JSON.stringify({_tag:"Success",value:t}),toYAML:()=>`_tag: Success
5
+ value: ${Ee(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),doUnwrap(){return {ok:true,value:t}}}),K=t=>({_tag:"Failure",error:t,isSuccess(){return false},isFailure(){return true},getOrElse:e=>e,getOrThrow:e=>{throw e??t},orElse:e=>e,orNull:()=>null,orUndefined:()=>{},orThrow:e=>{throw e},toEither:e=>l(t),map:e=>K(t),ap:e=>K(t),flatMap:e=>K(t),flatMapAsync:e=>Promise.resolve(K(t)),fold:(e,r)=>e(t),match:e=>e.Failure(t),foldLeft:e=>r=>e,foldRight:e=>r=>e,toString:()=>`Failure(${Ee(t)}))`,toPromise:()=>Promise.reject(t),toValue:()=>({_tag:"Failure",value:t}),toOption:()=>A(),toList:()=>d([]),toTry:()=>K(t),pipe:e=>{throw t},serialize:()=>({toJSON:()=>JSON.stringify({_tag:"Failure",error:t.message,stack:t.stack}),toYAML:()=>`_tag: Failure
6
+ error: ${t.message}
7
+ 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=>{},doUnwrap(){return {ok:false,empty:false,error:t}}}),at=t=>{try{return ce(t())}catch(e){return K(e instanceof Error?e:new Error(String(e)))}},Ne={fromJSON:t=>{let e=JSON.parse(t);if(e._tag==="Success")return ce(e.value);{let r=new Error(e.error);return e.stack&&(r.stack=e.stack),K(r)}},fromYAML:t=>{let e=t.split(`
8
+ `),r=e[0]?.split(": ")[1];if(!r)return K(new Error("Invalid YAML format for Try"));if(r==="Success"){let n=e[1]?.split(": ")[1];if(!n)return K(new Error("Invalid YAML format for Try Success"));let o=JSON.parse(n);return ce(o)}else {let n=e[1]?.split(": ")[1];if(!n)return K(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),K(s)}},fromBinary:t=>{let e=Buffer.from(t,"base64").toString();return Ne.fromJSON(e)}},S=a(at,Ne);function ge({_tag:t,impl:e}){return {...e,_tag:t}}function xe(t,e){return !t||typeof t!="object"||!("_tag"in t)?false:e?t._tag===e:true}var B=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=>B(e.map(n)),ap:n=>B(e.flatMap(o=>Array.from(n).map(a=>a(o)))),flatMap:n=>B(e.flatMap(o=>Array.from(n(o)))),flatMapAsync:async n=>{let o=await Promise.all(e.map(async a=>await n(a)));return B(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=>B(e.filter(n)),filterNot:n=>B(e.filter(o=>!n(o))),filterType:n=>B(e.filter(o=>xe(o,n))),find:(n,o)=>{let a=e.find(s=>n(s)&&(o?xe(s,o):true));return f(a)},get head(){return e[0]},get headOption(){return e.length>0?f(e[0]):A()},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=>B(e.filter(o=>o!==n)),removeAt:n=>n<0||n>=e.length?r:B([...e.slice(0,n),...e.slice(n+1)]),add:n=>B([...e,n]),get:n=>f(e[n]),concat:n=>B([...e,...n.toArray()]),drop:n=>B(e.slice(n)),dropRight:n=>B(e.slice(0,-n)),dropWhile:n=>B(e.slice(e.findIndex(o=>!n(o)))),flatten:()=>B(e.flatMap(n=>Array.isArray(n)?n:[n])),toList:()=>r,toSet:()=>ee(e),toOption:()=>e.length>0?f(e[0]):A(),toEither:n=>e.length>0?p(e[0]):l(n),toTry:()=>e.length>0?S(()=>e[0]):S(()=>{throw new Error("Empty list")}),toString:()=>`List(${Ee(e)})`,toValue:()=>({_tag:"List",value:e}),pipe:n=>n([...e]),serialize:()=>({toJSON:()=>JSON.stringify({_tag:"List",value:e}),toYAML:()=>`_tag: List
9
+ value: ${Ee(e)}`,toBinary:()=>Buffer.from(JSON.stringify({_tag:"List",value:e})).toString("base64")}),doUnwrap(){return e.length===0?{ok:false,empty:true}:{ok:true,value:e[0]}}};return r},st=t=>B(t),Ce={fromJSON:t=>{let e=JSON.parse(t);return d(e.value)},fromYAML:t=>{let r=t.split(`
10
+ `)[1]?.split(": ")[1];if(!r)return d([]);let n=JSON.parse(r);return d(n)},fromBinary:t=>{let e=Buffer.from(t,"base64").toString();return Ce.fromJSON(e)}},d=a(st,Ce);var Ie=t=>({_tag:"Right",value:t,isLeft(){return false},isRight(){return true},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)):l(e.value),mapAsync:e=>e(t).then(r=>p(r)).catch(r=>Promise.resolve(l(r))),merge:e=>e.isLeft()?l(e.value):p([t,e.value]),flatMap:e=>e(t),flatMapAsync:e=>e(t).catch(r=>l(r)),toOption:()=>w(t),toList:()=>d([t]),toEither:e=>p(t),toTry:()=>S(()=>t),toJSON(){return {_tag:"Right",value:t}},toString:()=>`Right(${Ee(t)})`,*[Symbol.iterator](){yield t;},*yield(){yield t;},traverse:e=>{let r=e(t);return r.isLeft()?l(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:()=>l(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
11
+ value: ${Ee(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)?w(t):A(),exists:e=>e(t),forEach:e=>e(t),doUnwrap(){return {ok:true,value:t}}}),Fe=t=>({_tag:"Left",value:t,isLeft(){return true},isRight(){return false},getOrElse:e=>e,getOrThrow:e=>{throw e??t},orElse:e=>e,orNull:()=>null,orUndefined:()=>{},map:e=>l(t),ap:e=>l(t),mapAsync:e=>Promise.resolve(l(t)),merge:e=>l(t),flatMap:e=>l(t),flatMapAsync:e=>Promise.resolve(l(t)),toOption:()=>A(),toList:()=>d(),toEither:e=>l(e),toTry:()=>S(()=>{throw new Error(String(t))}),toJSON(){return {_tag:"Left",value:t}},toString:()=>`Left(${Ee(t)})`,*[Symbol.iterator](){},*yield(){},traverse:e=>l(t),*lazyMap(e){yield l(t);},tap:e=>l(t),tapLeft:e=>(e(t),l(t)),mapLeft:e=>l(e(t)),bimap:(e,r)=>l(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
12
+ value: ${Ee(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=>A(),exists:e=>false,forEach:e=>{},doUnwrap(){return {ok:false,empty:false,error:t}}}),p=t=>Ie(t),l=t=>Fe(t),hr=t=>t.isRight(),Rr=t=>t.isLeft(),Ar=(t,e)=>{try{return p(t())}catch(r){return l(e(r))}},it=t=>Ie(t);console.assert(it);var ut=t=>Fe(t);console.assert(ut);var Lr=async(t,e)=>{try{let r=await t();return p(r)}catch(r){return l(e(r))}},Ve={sequence:t=>t.reduce((e,r)=>e.isLeft()?e:r.isLeft()?l(r.value):e.map(n=>[...n,r.value]),p([])),traverse:(t,e)=>Ve.sequence(t.map(e)),fromNullable:(t,e)=>t==null?l(e):p(t),fromPredicate:(t,e,r)=>e(t)?p(t):l(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 l(e(r))}},fromJSON:t=>{let e=JSON.parse(t);return e._tag==="Right"?p(e.value):l(e.value)},fromYAML:t=>{let e=t.split(`
13
+ `),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):l(o)},fromBinary:t=>{let e=Buffer.from(t,"base64").toString();return Ve.fromJSON(e)}};function C(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)):l(`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)=>C(r,o=>e(o)&&n(o))}}var ze=C("PositiveNumber",t=>t>0),lt=C("NonNegativeNumber",t=>t>=0),pt=C("IntegerNumber",t=>Number.isInteger(t)),Tt=ze.refine("PositiveInteger",t=>Number.isInteger(t)),ct=C("NonEmptyString",t=>t.length>0),ft=C("EmailAddress",t=>/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(t)),dt=C("UrlString",t=>{try{return new URL(t),!0}catch{return !1}}),mt=C("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)),yt=C("ISO8601Date",t=>!isNaN(Date.parse(t))&&/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}/.test(t));function gt(t,e,r){return C(t,n=>n>=e&&n<=r)}function Et(t,e,r){return C(t,n=>n.length>=e&&n.length<=r)}function ht(t,e){return C(t,r=>e.test(r))}var be=t=>{let e=n=>typeof n=="function"?n():n,r={when:(n,o)=>t.resolved?r:n?be({resolved:true,value:e(o)}):r,elseWhen:(n,o)=>t.resolved?r:n?be({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},De=()=>be({resolved:false}),Rt={of:()=>De(),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}},Or=a(De,Rt);var ae=(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 ae(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(ae(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 ae(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(ae(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:[]}),Lt={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(ae(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(ae(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}},_r=a(At,Lt);function he(t,e){return {...ge({_tag:t,impl:e}),toString(){return `${t}()`},doUnwrap(){if("isSome"in e&&"isNone"in e){if(typeof e.isSome=="function"&&e.isSome()&&"get"in e&&typeof e.get=="function")return {ok:true,value:e.get()};if(typeof e.isNone=="function"&&e.isNone())return {ok:false,empty:true}}if("isLeft"in e&&"isRight"in e){if(typeof e.isRight=="function"&&e.isRight()&&"value"in e)return {ok:true,value:e.value};if(typeof e.isLeft=="function"&&e.isLeft()&&"value"in e)return {ok:false,empty:false,error:e.value}}if("isSuccess"in e&&"isFailure"in e){if(typeof e.isSuccess=="function"&&e.isSuccess()&&"get"in e&&typeof e.get=="function")return {ok:true,value:e.get()};if(typeof e.isFailure=="function"&&e.isFailure()&&"getError"in e&&typeof e.getError=="function")return {ok:false,empty:false,error:e.getError()}}if("isEmpty"in e&&"head"in e){if(typeof e.isEmpty=="function"&&e.isEmpty())return {ok:false,empty:true};if(typeof e.head=="function")return {ok:true,value:e.head()};if("head"in e)return {ok:true,value:e.head}}return {ok:true,value:e}}}}var Re="Throwable",q=class t extends Error{constructor(r,n){super(r,{cause:n?.cause});this._tag=Re;this.name=n?.taskInfo?.name??Re,Object.defineProperties(this,{_tag:{value:Re,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??Re,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 T of Object.keys(r))if(!(T in u)){let y=u,m=r;y[T]=m[T];}return u}if(r&&typeof r=="object"){let u=r,T=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))}`,y=new t(T,{data:n??u,taskInfo:o});for(let m of Object.keys(u))if(!(m in y)){let k=y;k[m]=u[m];}return y}if(typeof r=="function"){let u=r.name??"anonymous function",T=r.toString().substring(0,100)+(r.toString().length>100?"...":"");return new t(`Function error: ${u}`,{data:n??{functionType:typeof r,functionName:u,functionString:T},taskInfo:o})}let a=typeof r,s=r===null?"null":r===void 0?"undefined":String(r);if(a==="number"){let u=r,T=Number.isNaN(u)?"Number error: NaN":Number.isFinite(u)?`Number error: ${u}`:`Number error: ${u>0?"Infinity":"-Infinity"}`;return new t(T,{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 U=t=>{let e=new Promise((r,n)=>{try{t(r,n);}catch(o){n(o);}});return {_tag:"FPromise",map:r=>U((n,o)=>{e.then(a=>{try{n(r(a));}catch(s){o(s);}}).catch(o);}),flatMap:r=>U((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=>U((n,o)=>{e.then(a=>{try{r(a),n(a);}catch(s){o(s);}}).catch(o);}),mapError:r=>U((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=>U((n,o)=>{e.then(n).catch(a=>{try{r(a),o(a);}catch(s){o(s);}});}),recover:r=>U(n=>{e.then(n).catch(()=>n(r));}),recoverWith:r=>U(n=>{e.then(n).catch(o=>{try{n(r(o));}catch{n(null);}});}),recoverWithF:r=>U((n,o)=>{e.then(n).catch(a=>{try{r(a).then(n,o);}catch(s){o(s);}});}),filterError:(r,n)=>U((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=>U((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 l(r)}},fold:(r,n)=>U((o,a)=>{e.then(s=>{try{o(n(s));}catch(i){a(i);}}).catch(s=>{try{o(r(s));}catch(i){a(i);}});})}},kt={resolve:t=>U(e=>e(t)),reject:t=>U((e,r)=>r(t)),from:t=>U((e,r)=>{t.then(e).catch(r);}),fromEither:t=>t.isRight()?U(e=>e(t.value)):U((e,r)=>r(t.value)),all:t=>U((e,r)=>{Promise.all(t.map(n=>n instanceof Promise?n:Promise.resolve(n))).then(e).catch(r);}),allSettled:t=>U(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]=l(s),n++,n===t.length&&e(r);});});}),race:t=>U((e,r)=>{Promise.race(t).then(e,r);}),any:t=>U((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 U((a,s)=>{let i=0,u=()=>{t().toPromise().then(a).catch(T=>{if(i++,i<=r&&o(T,i)){let y=n*Math.pow(2,i-1);setTimeout(u,y);}else s(T);});};u();})}},we=a(U,kt);function xt(t){return t instanceof Error&&typeof t=="object"&&true&&t._tag==="Throwable"}var Ke=(t,e)=>{if(t.isRight())return P(t.getOrThrow(),e);if(t.isLeft())return L(t.fold(r=>r,()=>new Error("Unexpected right value")),void 0,e);throw new Error("Unrecognized task outcome")},L=(t,e,r)=>{let n={name:r?.name??"Task",description:r?.description??""},o=q.apply(t,e,n),a={...he("Err",{error:o,meta:n}),_tag:"Err",_meta:n,value:void 0,error:o,isSuccess(){return false},isFailure(){return true},isOk(){return false},isErr(){return true},map:s=>L(o,e,r),flatMap:s=>L(o,e,r),ap:s=>L(o,e,r),mapAsync:s=>Promise.resolve(L(o,e,r)),flatMapAsync:s=>Promise.resolve(L(o,e,r)),mapError:s=>L(s(o),e,r),recover:s=>P(s,r),recoverWith:s=>P(s(o),r),getOrThrow:s=>{throw s??o},getOrElse:s=>s,orElse:s=>s,orNull:()=>null,orUndefined:()=>{},toEither:()=>l(o),toTry:()=>S(()=>{throw o}),toOption:()=>A(),toList:()=>d([]),fold:(s,i)=>s(o),match:s=>s.Err(o),foldLeft:s=>i=>s,foldRight:s=>i=>s,size:0,isEmpty:true,contains:s=>false,reduce:s=>{throw new Error("Cannot reduce empty Err")},reduceRight:s=>{throw new Error("Cannot reduceRight empty Err")},count:s=>0,find:s=>A(),exists:s=>false,forEach:s=>{},toPromise:()=>Promise.reject(o),doUnwrap(){return {ok:false,empty:false,error:o}},serialize:()=>({toJSON:()=>Ee({_tag:"Err",error:o.message??o.toString()})??"{}",toYAML:()=>`_tag: Err
14
+ error: ${o.message??o.toString()}`,toBinary:()=>Buffer.from(JSON.stringify({_tag:"Err",error:o.message??o.toString()})).toString("base64")}),pipe:s=>s(a)};return a},P=(t,e)=>{let r={name:e?.name??"Task",description:e?.description??""},n={...he("Ok",{value:t,meta:r}),_tag:"Ok",_meta:r,value:t,error:void 0,isSuccess(){return true},isFailure(){return false},isOk(){return true},isErr(){return false},map:o=>P(o(t),e),flatMap:o=>{let a=o(t);return a&&typeof a=="object"&&"isLeft"in a&&"isRight"in a?Ke(a,e):a},ap:o=>o.isOk()?P(o.value(t),e):L(o.error,void 0,e),mapAsync:async o=>P(await o(t),e),flatMapAsync:async o=>await o(t),mapError:o=>P(t,e),recover:o=>P(t,e),recoverWith:o=>P(t,e),getOrThrow:o=>t,getOrElse:o=>t,orElse:o=>P(t,e),orNull:()=>t,orUndefined:()=>t,toEither:()=>p(t),toTry:()=>S(()=>t),toOption:()=>w(t),toList:()=>d([t]),fold:(o,a)=>a(t),match:o=>o.Ok(t),foldLeft:o=>a=>a(o,t),foldRight:o=>a=>a(t,o),size:1,isEmpty:false,contains:o=>t===o,reduce:o=>t,reduceRight:o=>t,count:o=>o(t)?1:0,find:o=>o(t)?w(t):A(),exists:o=>o(t),forEach:o=>o(t),toPromise:()=>Promise.resolve(t),doUnwrap(){return {ok:true,value:t}},serialize:()=>({toJSON:()=>Ee({_tag:"Ok",value:t})??"{}",toYAML:()=>`_tag: Ok
15
+ value: ${Ee(t)??"undefined"}`,toBinary:()=>Buffer.from(JSON.stringify({_tag:"Ok",value:t})).toString("base64")}),pipe:o=>o(n)};return n},Ue=()=>{let t=new AbortController,e=ye();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);}}));}}},bt=t=>{let e=t?.name??"Task",r=t?.description??"",n={Async:(o,a=u=>u,s=()=>{},i)=>we((u,T)=>{(async()=>{let y=b(false),m=b(null),k=b(()=>{});if(i){if(i.isCancelled){try{await s();}catch(h){u(L(h,void 0,{name:e,description:r}));return}u(L(new Error("Task was cancelled before execution started"),void 0,{name:e,description:r}));return}let R=()=>{y.set(true),m.set(new Error("Task was cancelled during execution"));};i.onCancel(R),k.set(()=>{});}try{let R=await o();try{await s();}catch(h){u(L(h,void 0,{name:e,description:r}));return}if(y.get()){m.get()?u(L(m.get(),void 0,{name:e,description:r})):u(L(new Error("Task was cancelled during execution"),void 0,{name:e,description:r}));return}if(R&&typeof R=="object"&&"_tag"in R){let h=R;h._tag==="Ok"||h._tag==="Err"?u(h):u(P(R,{name:e,description:r}));}else u(P(R,{name:e,description:r}));}catch(R){try{await s();}catch(h){u(L(h,void 0,{name:e,description:r}));return}if(y.get()){m.get()?u(L(m.get(),void 0,{name:e,description:r})):u(L(new Error("Task was cancelled during execution"),void 0,{name:e,description:r}));return}try{if(R instanceof Error&&xt(R)){let h=new Error(`${e}: ${R.message}`),I=q.apply(h,void 0,{name:e,description:r});Object.defineProperty(I,"cause",{value:R,writable:!1,configurable:!1}),Promise.resolve().then(()=>{try{a(R);}catch(H){console.error("Error in error handler:",H);}}),u(L(I,void 0,{name:e,description:r}));}else {let h=await a(R);if(h&&typeof h=="object"&&"_tag"in h){let I=h;I._tag==="Ok"||I._tag==="Err"?u(I):u(L(h,void 0,{name:e,description:r}));}else u(L(h,void 0,{name:e,description:r}));}}catch(h){u(L(h,void 0,{name:e,description:r}));}}finally{k.get()();}})().catch(y=>u(L(y,void 0,{name:e,description:r})));}),Sync:(o,a=i=>i,s=()=>{})=>{try{return P(o(),{name:e,description:r})}catch(i){return L(a(i),void 0,{name:e,description:r})}finally{s();}},AsyncWithProgress:(o,a,s=T=>T,i=()=>{},u)=>{let T=y=>{let m=Math.max(0,Math.min(100,y));m<=100&&a(m);};return n.Async(()=>o(T),s,i,u)}};return {...he("Task",n),_type:"Task"}},$e={success:(t,e)=>P(t,e),fail:(t,e,r)=>L(t,e,r),ok:(t,e)=>P(t,e),err:(t,e,r)=>L(t,e,r),fromEither:(t,e)=>Ke(t,e),fromTry:(t,e)=>t.isSuccess()?P(t.getOrThrow(),e):L(t.fold(r=>r,()=>new Error("Unexpected success")),void 0,e),getErrorChain:t=>{if(!t)return [];let e=ye();e.add(t);let r=b(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=$e.getErrorChain(t),n=e?.separator??`
16
+ `;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",T=b(`${a>0?"\u21B3 ":""}${i}${u}`);return e?.includeStackTrace&&o.stack&&T.set(`${T.get()}
17
+ ${o.stack.split(`
18
+ `).slice(1).join(`
19
+ `)}`),T.get()}).join(n)},fromPromise:(t,e)=>(...r)=>$(e??{name:"PromiseTask",description:"Task from Promise"}).Async(()=>t(...r),o=>o),toPromise:t=>new Promise((e,r)=>{t.isSuccess()?e(t.getOrThrow()):r(t.error);}),race:(t,e,r)=>{let n=r?.name??"TaskRace",o=r?.description??"Race between multiple tasks";return $({name:n,description:o}).Async(async()=>{let s=ye();t.forEach(u=>s.add(u));let i=b(void 0);if(typeof e=="number"&&e>0){let u=we((T,y)=>{i.set(setTimeout(()=>{y(new Error(`Task race timed out after ${e}ms`));},e));});s.add(u);}try{return await new Promise((u,T)=>{s.build().forEach(y=>{y.then(m=>{if(m&&typeof m=="object"&&"_tag"in m){let k=m;k._tag==="Ok"?u(k.getOrThrow()):k._tag==="Err"?T(k.error):u(m);}else u(m);},m=>T(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)=>$(o).Async(()=>new Promise((s,i)=>{try{t(...a,(u,T)=>{u?i(u):s(T);});}catch(u){i(u);}}),s=>s)},createCancellationTokenSource:Ue,cancellable:(t,e)=>{let r=Ue();return {task:$(e).Async(()=>t(r.token),o=>o,()=>{},r.token),cancel:()=>r.cancel()}},withProgress:(t,e=()=>{},r)=>{let n=Ue(),o=b(0),a=i=>{o.set(Math.max(0,Math.min(100,i))),e(o.get());};return {task:$(r).Async(()=>t(a,n.token),i=>i,()=>{},n.token),cancel:()=>n.cancel(),currentProgress:()=>o.get()}}},$=a(bt,$e);function Je(t){if(!t||typeof t!="object"||!("_tag"in t))return "unknown";switch(t._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"}}var Ae={Option:{of:t=>f(t),empty:()=>f.none()},Either:{of:t=>p(t),empty:t=>l(t)},List:{of:t=>d([t]),empty:()=>d([])},Try:{of:t=>S(()=>t),empty:t=>S(()=>{throw t??new Error("Try failed")})}};function nn(t){let e=t(),r=null,n;function o(a){let s=e.next(a);if(s.done)return n?n.of(s.value):d([s.value]);let i=s.value;if(i==null||typeof i!="object")throw new 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(!r&&"_tag"in i&&(r=Je(i),r!=="unknown"&&r in Ae&&(n=Ae[r]),r==="List"))return wt(t);if("doUnwrap"in i){let u=i.doUnwrap();if(!u.ok){if(!n)return d([]);if(!u.empty&&"error"in u){if(r==="Either")return n.empty(u.error);if(r==="Try")return n.empty(u.error instanceof Error?u.error:new Error(String(u.error)))}return n.empty()}return o(u.value)}throw new 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 o()}function wt(t){function e(o){if(o==null||typeof o!="object")return [o];if(!("doUnwrap"in o))return [o];let a=o;if("toArray"in a){let i=a.toArray();return i.length===0?[]:i}let s=a.doUnwrap();return s.ok?[s.value]:[]}function r(o){let a=t(),s=[],i=[],u=0;function T(y){let m=a.next(y);if(m.done){s.push(m.value);return}if(u<o.length){let R=o[u];i.push(R),u++,T(R);return}let k=e(m.value);if(k.length!==0)if(k.length>1){let R=k.flatMap(h=>{let I=[...i,h];return r(I)});s.push(...R);}else i.push(k[0]),u++,T(k[0]);}return T(void 0),s}let n=r([]);return d(n)}async function on(t){let e=t(),r=null,n;async function o(a){let s=await e.next(a);if(s.done)return n?n.of(s.value):d([s.value]);let i=await Promise.resolve(s.value);if(i==null||typeof i!="object")return o(i);if(!r&&"_tag"in i&&(r=Je(i),r!=="unknown"&&r in Ae&&(n=Ae[r])),"doUnwrap"in i){let u=i.doUnwrap();if(!u.ok){if(!n)return d([]);if(!u.empty&&"error"in u){if(r==="Either")return n.empty(u.error);if(r==="Try")return n.empty(u.error instanceof Error?u.error:new Error(String(u.error)))}return n.empty()}return o(u.value)}return o(i)}return o()}function an(t){return t!==null&&typeof t=="object"&&"doUnwrap"in t&&typeof t.doUnwrap=="function"}function sn(t){let e=t.doUnwrap();if(e.ok)return e.value;throw "error"in e?e.error:new Error("Cannot unwrap empty monad")}function*un(t){return yield t}var ln=(t="Cannot unwrap None in Do-notation")=>{let e=new Error(t),r=Object.create(Error.prototype);return r.message=e.message,r.stack=e.stack,r.name="NoneError",r},pn=(t,e="Cannot unwrap Left in Do-notation")=>{let r=new Error(e),n=Object.create(Error.prototype);return n.message=r.message,n.stack=r.stack,n.name="LeftError",n.value=t,n},Tn=(t="Cannot unwrap empty List in Do-notation")=>{let e=new Error(t),r=Object.create(Error.prototype);return r.message=e.message,r.stack=e.stack,r.name="EmptyListError",r},cn=(t,e="Cannot unwrap Failure in Do-notation")=>{let r=new Error(e),n=Object.create(Error.prototype);return n.message=r.message,n.stack=r.stack,n.name="FailureError",n.cause=t,n};var je={includeTasks:true,includeStackTrace:false,separator:`
20
+ `,includeData:false,maxStackFrames:3,title:"Error",colors:false};function We(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"?Le(n):n},2)}function Le(t){if(t===void 0||t==="")return "";let e=t.split(`
21
+ `),r=e[0],n=e.slice(1).map(o=>o.trim());return [r,...n].join(`
22
+ `)}function yn(t,e){let r={...je,...e},n=t instanceof Error?t:q.apply(t),o=$?.getErrorChain?$.getErrorChain(n):[n],a=r.colors?`\x1B[31m${r.title}:\x1B[0m ${n.message}`:`${r.title}: ${n.message}`,s=o.map((u,T)=>{let y=" ".repeat(T),m=T>0?"\u21B3 ":"",{taskInfo:k}=u,R=r.includeTasks&&k?.name?r.colors?`\x1B[36m[${k.name}]\x1B[0m `:`[${k.name}] `:"",h=`${y}${m}${R}${u.message}`;if(r.includeStackTrace&&u.stack){let H=Le(u.stack).split(`
23
+ `).slice(1),re=r.maxStackFrames??je.maxStackFrames??3,de=H.slice(0,re).map(me=>`${y} ${r.colors?"\x1B[90m":""}${me}${r.colors?"\x1B[0m":""}`).join(`
24
+ `);h+=`
25
+ ${de}`,H.length>re&&(h+=`
26
+ ${y} ${r.colors?"\x1B[90m":""}...${H.length-re} more stack frames${r.colors?"\x1B[0m":""}`);}return h}).join(r.separator),i=`${a}
27
+
28
+ ${s}`;if(r.includeData){let{data:u}=n;if(u){let T=r.colors?`
29
+
30
+ \x1B[33mContext:\x1B[0m
31
+ ${We(u)}`:`
32
+
33
+ Context:
34
+ ${We(u)}`;i+=T;}}return i}function gn(){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?Le(r.stack):void 0};if(r.taskInfo&&(n.taskInfo=r.taskInfo),r.data&&(n.data=r.data),typeof $?.getErrorChain=="function")try{let o=$.getErrorChain(r);o.length>1&&(n.errorChain=$.formatErrorChain(r,{includeTasks:!0}),n.structuredErrorChain=o.map(a=>({message:a.message,name:a.name,taskInfo:a.taskInfo,stack:a.stack?Le(a.stack):void 0})));}catch{}return Object.getOwnPropertyNames(r).forEach(o=>{if(!n[o]){let a=r[o];n[o]=a;}}),n}}var hn=t=>{let e=new Error(t);return e.name="ParseError",e};var J=(t,e,r,n)=>{let o=q.apply(e,r,{name:t,description:e});return Object.assign(o,{code:t,message:e,status:Ut(t),context:r,timestamp:new Date().toISOString(),traceId:n?.traceId})},Ut=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],vt={validation:(t,e,r)=>J("VALIDATION_FAILED",`Validation failed: ${t} ${r}`,{field:t,value:e,rule:r}),network:(t,e,r)=>J("NETWORK_ERROR",`Network error: ${e} ${t}${r?` (${r})`:""}`,{url:t,method:e,statusCode:r}),auth:(t,e)=>J("AUTH_REQUIRED",`Authentication required: ${t}${e?` (role: ${e})`:""}`,{resource:t,requiredRole:e}),notFound:(t,e)=>J("NOT_FOUND",`Not found: ${t} with id ${e}`,{resource:t,id:e}),permission:(t,e,r)=>J("PERMISSION_DENIED",`Permission denied: cannot ${t} ${e}`,{action:t,resource:e,userId:r}),rateLimit:(t,e,r)=>J("RATE_LIMITED",`Rate limit exceeded: ${t} requests per ${e}`,{limit:t,window:e,retryAfter:r}),internal:t=>J("INTERNAL_ERROR",`Internal server error: ${t}`,{errorId:t,timestamp:new Date().toISOString()}),badRequest:(t,e)=>J("BAD_REQUEST",`Bad request: ${t}`,{reason:t,expected:e}),conflict:(t,e)=>J("CONFLICT",`Conflict: ${t} already exists with value ${e}`,{resource:t,conflictingValue:e}),timeout:(t,e)=>J("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},v=Object.assign(J,vt);var V={rule:t=>e=>{if(t==="email")return typeof e!="string"||!/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(e)?l(v.validation("value",e,"must be a valid email")):p(e);if(t==="url")try{return new URL(String(e)),p(e)}catch{return l(v.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)?l(v.validation("value",e,"must be a valid UUID")):p(e);if(t==="required")return e==null||e===""?l(v.validation("value",e,"is required")):p(e);if(t==="numeric")return typeof e!="number"&&!/^\d+$/.test(String(e))?l(v.validation("value",e,"must be numeric")):p(e);if(t==="alpha")return typeof e!="string"||!/^[a-zA-Z]+$/.test(e)?l(v.validation("value",e,"must contain only letters")):p(e);if(t==="alphanumeric")return typeof e!="string"||!/^[a-zA-Z0-9]+$/.test(e)?l(v.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?l(v.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?l(v.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?l(v.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?l(v.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):l(v.validation("value",e,`must match pattern ${r}`))}if(t.startsWith("in:")){let r=t.substring(3).split(",");return r.includes(String(e))?p(e):l(v.validation("value",e,`must be one of: ${r.join(", ")}`))}if(t.startsWith("notIn:")){let r=t.substring(6).split(",");return r.includes(String(e))?l(v.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())?l(v.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?l(v.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?l(v.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):l(v.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(y=>y,()=>{throw new Error("Should not be left")}),T=v.validation(o,s,u.context.rule);r.push(T);}else n[o]=i.getOrThrow();}return r.length>0?l(d(r)):p(n)}},Ot={...V,validators:{email:V.rule("email"),url:V.rule("url"),uuid:V.rule("uuid"),required:V.rule("required"),numeric:V.rule("numeric"),positiveNumber:V.combine(V.rule("numeric"),V.rule("min:0")),nonEmptyString:V.combine(V.rule("required"),V.custom(t=>typeof t=="string"&&t.trim().length>0,"must not be empty"))}},wn=Object.assign(V.rule,Ot);function St(t){return t!=null&&typeof t=="object"&&"getOrThrow"in t&&typeof t.getOrThrow=="function"}function Bt(t){return St(t)&&"getOrElse"in t&&typeof t.getOrElse=="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(()=>A(),e=>w(e)),toList:t=>t.fold(()=>d([]),e=>d([e])),toEither:(t,e)=>t.fold(()=>l(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"),G=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"),j=()=>{let t=(s,i)=>{if(Z(s))return s.map(u=>i(u));if(G(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.getOrThrow();if(G(s)){let i=s.toArray();if(i.length>0&&G(i[0])){let u=[];for(let T of i)G(T)&&u.push(...T.toArray());return d(u)}return s.flatten()}if(se(s))return s.isRight()?s.fold(()=>null,i=>i):s;if(ie(s))return s.isSuccess()?s.getOrThrow():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(G(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(T=>u(T)));if(G(s)&&G(i))return s.flatMap(u=>i.map(T=>u(T)));if(se(s)&&se(i))return s.flatMap(u=>i.map(T=>u(T)));if(ie(s)&&ie(i))return s.flatMap(u=>i.map(T=>u(T)));throw new Error(`Unsupported functor type for ap: ${JSON.stringify(s)}`)},o=s=>{if(Z(s)){let i=s;if(i.isEmpty)return d([f.none()]);let u=i.getOrThrow();if(G(u))return u.map(T=>f(T));throw new Error("Unsupported inner container type for sequence")}if(G(s)){let u=s.toArray();if(u.length===0)return f.none();let T=u[0];if(Z(T)){for(let m of u)if(m.isEmpty)return f.none();let y=u.map(m=>m.getOrThrow());return f(d(y))}throw new Error("Unsupported inner container type for sequence")}throw new Error(`Unsupported outer container type for sequence: ${JSON.stringify(s)}`)};return {_tag:"HKT",map:t,flatten:e,flatMap:r,ap:n,sequence:o,traverse:(s,i)=>o(t(s,u=>i(u))),_type:"HKT"}},ue=j();j.map=(t,e)=>ue.map(t,e);j.flatten=t=>ue.flatten(t);j.flatMap=(t,e)=>ue.flatMap(t,e);j.ap=(t,e)=>ue.ap(t,e);j.sequence=t=>ue.sequence(t);j.traverse=(t,e)=>ue.traverse(t,e);j.isOption=Z;j.isList=G;j.isEither=se;j.isTry=ie;function Fn(t){return {id:t,isSame:r=>r.id===t}}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=>z(()=>{try{return a()}catch{return i.getOrThrow()}}),orUndefined:()=>{try{return a()}catch{return}},map:i=>z(()=>i(a())),ap:i=>z(()=>i.getOrThrow()(a())),mapAsync:async i=>{let u=a(),T=await i(u);return z(()=>T)},flatMap:i=>z(()=>i(a()).getOrThrow()),flatMapAsync:async i=>{let u=a(),T=await i(u);return z(()=>T.getOrThrow())},filter:i=>z(()=>{let u=a();return i(u)?w(u):A}),recover:i=>z(()=>{try{return a()}catch(u){return i(u)}}),recoverWith:i=>z(()=>{try{return a()}catch(u){return i(u).getOrThrow()}}),toOption:()=>{try{return w(a())}catch{return A}},toEither:()=>{try{return p(a())}catch(i){return l(i)}},toEitherWith:i=>{try{return p(a())}catch(u){return l(i(u))}},toTry:()=>S(()=>a()),tap:i=>z(()=>{let u=a();return i(u),u}),tapError:i=>z(()=>{try{return a()}catch(u){throw i(u),u}}),fold:i=>i(a()),foldWith:(i,u)=>{try{return u(a())}catch(T){return i(T)}},foldLeft:i=>u=>u(i,a()),foldRight:i=>u=>u(a(),i),match:i=>i.Lazy(a()),toString:()=>e&&!o?`Lazy(${Ee(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)?w(u):A}catch{return A}},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
35
+ evaluated: true
36
+ value: ${Ee(r)}`:`_tag: Lazy
37
+ evaluated: false`,toBinary:()=>Buffer.from(JSON.stringify(e&&!o?{_tag:"Lazy",evaluated:true,value:r}:{_tag:"Lazy",evaluated:false})).toString("base64")}),typeable:"Lazy"}},Pt={of:t=>X(t),fromValue:t=>X(()=>t),fromOption:(t,e)=>X(()=>t._tag==="Some"?t.value:e()),fromTry:t=>X(()=>t.getOrThrow()),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})},z=a(X,Pt);var fe=Map;var Q=t=>{let r={values:new fe(t)},n=()=>Array.from(r.values.entries()).map(([c,E])=>b$1([c,E])),o=c=>Q(new fe(r.values).set(c.toArray()[0],c.toArray()[1]).entries()),a=c=>{let E=new fe(r.values);return E.delete(c)?Q(E.entries()):Q(r.values.entries())},s=c=>{let E=c.toArray();return r.values.get(E[0])===E[1]},i=()=>r.values.size,u=c=>Q(Array.from(r.values.entries()).map(([E,F])=>[E,c(F)])),T=c=>{let E=Q(r.values.entries()).toList();return Q(E.flatMap(c).toArray())},y=c=>{let E=[];for(let[F,ne]of r.values.entries()){let pe=c.get(F);pe._tag==="Some"&&pe.value&&E.push([F,pe.value(ne)]);}return Q(E)},m=async c=>{let E=new fe;for(let[F,ne]of r.values.entries()){let pe=await c(ne);for(let Ze of pe.toList()){let[Xe,et]=Ze.toArray();E.set(Xe,et);}}return Q(E.entries())},k=c=>d(n()).reduce(c),R=c=>d(n()).reduceRight(c),h=c=>E=>d(n()).foldLeft(c)(E),I=c=>E=>d(n()).foldRight(c)(E),H=c=>f(r.values.get(c)),re=(c,E)=>f(r.values.get(c)).getOrElse(E),le=()=>r.values.size===0,de=(c,E)=>f(r.values.get(c)).orElse(E),me=(c,E)=>{if(le())return c();let F=n();if(F.length===0)return c();let ne=F[0];return ne===void 0?c():E(ne)},Be=()=>d(n()),g=()=>ee(n()),_=()=>`Map(${n().toString()})`,N=c=>le()?c.Empty():c.NonEmpty(n());return {_tag:"Map",[Symbol.iterator]:()=>r.values.entries(),add:o,remove:a,contains:s,get size(){return i()},map:u,ap:y,flatMap:T,flatMapAsync:m,reduce:k,reduceRight:R,foldLeft:h,foldRight:I,fold:me,match:N,get:H,getOrElse:re,get isEmpty(){return le()},orElse:de,toList:Be,toSet:g,toString:_,toValue:()=>({_tag:"Map",value:Array.from(r.values.entries())}),pipe:c=>c(Array.from(r.values.entries())),serialize:()=>({toJSON:()=>JSON.stringify({_tag:"Map",value:Array.from(r.values.entries())}),toYAML:()=>`_tag: Map
38
+ value: ${JSON.stringify(Array.from(r.values.entries()))}`,toBinary:()=>Buffer.from(JSON.stringify({_tag:"Map",value:Array.from(r.values.entries())})).toString("base64")})}},_t=t=>Q(t),Ye={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 Ye.fromJSON(e)}},Oe=a(_t,Ye);var Nt={default:t=>e=>t(e),when:(t,e)=>r=>t(r)?e(r):void 0};var D=(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:g=>r.includes(g),reduce:g=>{if(r.length===0)throw new Error("Cannot reduce an empty stack");return r.reduce(g)},reduceRight:g=>{if(r.length===0)throw new Error("Cannot reduce an empty stack");return r.reduceRight(g)},push:g=>D([...r,g]),pop:()=>{if(o())return [D([]),f(null)];let g=[...r],_=g.pop();return [D(g),f(_)]},peek:()=>o()?f(null):f(r[r.length-1]),map:g=>D(r.map(g)),flatMap:g=>o()?D([]):r.reduce((_,N)=>g(N).toArray().reduce((E,F)=>E.push(F),_),D([])),ap:g=>{let _=[];return r.forEach(N=>{g.toArray().forEach(c=>{_.push(c(N));});}),D(_)},flatMapAsync:async g=>o()?D([]):(await Promise.all(r.map(async N=>await g(N)))).reduce((N,c)=>c.toArray().reduce((E,F)=>E.push(F),N),D([])),toList:()=>d(r),toArray:()=>[...r],toString:()=>`Stack(${r.join(", ")})`,fold:(g,_)=>{if(o())return g();let N=r[r.length-1];return N!==void 0?_(N):g()},foldLeft:g=>_=>r.reduce(_,g),foldRight:g=>_=>r.reduceRight((N,c)=>_(c,N),g),match:g=>o()?g.Empty():g.NonEmpty([...r]),toValue:()=>({_tag:"Stack",value:r}),pipe:g=>g([...r]),serialize:()=>({toJSON:()=>JSON.stringify({_tag:"Stack",value:r}),toYAML:()=>`_tag: Stack
40
+ value: ${JSON.stringify(r)}`,toBinary:()=>Buffer.from(JSON.stringify({_tag:"Stack",value:r})).toString("base64")})}},Mt=(t=[])=>D(t),qe={empty:()=>D([]),of:t=>D([t]),fromJSON:t=>{let e=JSON.parse(t);return Se(e.value)},fromYAML:t=>{let r=t.split(`
41
+ `)[1]?.split(": ")[1];if(!r)return Se([]);let n=JSON.parse(r);return Se(n)},fromBinary:t=>{let e=Buffer.from(t,"base64").toString();return qe.fromJSON(e)}},Se=a(Mt,qe);function fo(t){let e=ge({_tag:t._tag,impl:t.impl});return {...e,toValue:()=>({_tag:e._tag,value:t.value})}}var w=t=>({_tag:"Some",value:t,isEmpty:false,isSome(){return true},isNone(){return false},getOrElse:()=>t,getOrThrow:()=>t,orElse:e=>w(t),orNull:()=>t,orUndefined:()=>t,map:e=>w(e(t)),ap:e=>e._tag==="Some"&&e.value?w(e.value(t)):W,filter(e){return e(t)?w(t):W},count:e=>e(t)?1:0,find:e=>e(t)?w(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:()=>d([t]),contains:e=>e===t,size:1,toOption:()=>w(t),toEither:e=>p(t),toTry:()=>S(()=>t),toPromise:()=>Promise.resolve(t),toString:()=>`Some(${Ee(t)})`,toValue:()=>({_tag:"Some",value:t}),pipe:e=>e(t),serialize:()=>({toJSON:()=>JSON.stringify({_tag:"Some",value:t}),toYAML:()=>`_tag: Some
42
+ value: ${Ee(t)}`,toBinary:()=>Buffer.from(JSON.stringify({_tag:"Some",value:t})).toString("base64")}),doUnwrap(){return {ok:true,value:t}}}),W={_tag:"None",value:void 0,isEmpty:true,isSome(){return false},isNone(){return true},getOrElse:t=>t,getOrThrow(t){throw t??new Error("Cannot extract value from None")},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:()=>d([]),contains:()=>false,size:0,toOption:()=>W,toEither:t=>l(t),toTry:()=>S(()=>{throw new Error("None")}),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
43
+ value: null`,toBinary:()=>Buffer.from(JSON.stringify({_tag:"None",value:null})).toString("base64")}),doUnwrap(){return {ok:false,empty:true}}},A=()=>W,Ct=t=>t!=null?w(t):A(),He={from:t=>f(t),none:()=>A(),fromJSON:t=>{let e=JSON.parse(t);return e._tag==="Some"?w(e.value):A()},fromYAML:t=>{let e=t.split(`
44
+ `),r=e[0]?.split(": ")[1],n=e[1]?.split(": ")[1];if(!r||!n)return A();let o=n==="null"?null:JSON.parse(n);return r==="Some"?w(o):A()},fromBinary:t=>{let e=Buffer.from(t,"base64").toString();return He.fromJSON(e)}},f=a(Ct,He);export{cn as $,ft as A,dt as B,mt as C,yt as D,gt as E,Et as F,ht as G,Or as H,_r as I,he as J,Re as K,q as L,kt as M,we as N,xt as O,L as P,P as Q,Ue as R,$ as S,nn as T,on as U,an as V,sn as W,un as X,ln as Y,pn as Z,Tn as _,w as a,We as aa,A as b,Le as ba,Ct as c,yn as ca,f as d,gn as da,ee as e,hn as ea,b as f,v as fa,Zt as g,wn as ga,S as h,Bt as ha,ge as i,Nn as ia,xe as j,j as ja,d as k,Fn as ka,p as l,z as la,l as m,fe as ma,hr as n,Oe as na,Rr as o,Nt as oa,Ar as p,Se as pa,it as q,fo as qa,ut as r,Lr as s,Ve as t,C as u,ze as v,lt as w,pt as x,Tt as y,ct as z};//# sourceMappingURL=chunk-ZRLVS2S5.mjs.map
45
+ //# sourceMappingURL=chunk-ZRLVS2S5.mjs.map