functype 0.16.0 → 0.17.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 +30 -0
- package/README.processed.md +5 -1
- package/dist/{Either-C-P6QnvK.d.ts → Either-CM1xSzLl.d.ts} +15 -16
- package/dist/chunk-LW2YTB56.mjs +45 -0
- package/dist/chunk-LW2YTB56.mjs.map +1 -0
- package/dist/do/index.d.ts +2 -2
- package/dist/do/index.mjs +1 -1
- package/dist/either/index.d.ts +1 -1
- package/dist/either/index.mjs +1 -1
- package/dist/fpromise/index.d.ts +1 -1
- package/dist/fpromise/index.mjs +1 -1
- package/dist/index.d.ts +20 -14
- package/dist/index.mjs +1 -1
- package/dist/list/index.d.ts +1 -1
- package/dist/list/index.mjs +1 -1
- package/dist/map/index.d.ts +1 -1
- package/dist/map/index.mjs +1 -1
- package/dist/option/index.d.ts +1 -1
- package/dist/option/index.mjs +1 -1
- package/dist/set/index.d.ts +1 -1
- package/dist/set/index.mjs +1 -1
- package/dist/try/index.d.ts +1 -1
- package/dist/try/index.mjs +1 -1
- package/package.json +15 -10
- package/readme/BRAND_MIGRATION_GUIDE.md +2 -2
- package/readme/ai-guide.md +9 -9
- package/readme/examples.md +19 -19
- package/readme/quick-reference.md +6 -6
- package/dist/chunk-ZRLVS2S5.mjs +0 -45
- package/dist/chunk-ZRLVS2S5.mjs.map +0 -1
package/README.md
CHANGED
|
@@ -648,6 +648,10 @@ opt.forEach(console.log) // Logs: 42
|
|
|
648
648
|
list.forEach(console.log) // Logs: 1, 2, 3, 4, 5
|
|
649
649
|
```
|
|
650
650
|
|
|
651
|
+
## Feature Matrix
|
|
652
|
+
|
|
653
|
+
For a comprehensive overview of which interfaces are supported by each data structure, see the [Functype Feature Matrix](docs/FUNCTYPE_FEATURE_MATRIX.md).
|
|
654
|
+
|
|
651
655
|
## Type Safety
|
|
652
656
|
|
|
653
657
|
Functype leverages TypeScript's advanced type system to provide compile-time safety for functional patterns, ensuring that your code is both robust and maintainable.
|
|
@@ -796,6 +800,32 @@ For more details, see the [Error Formatting Guide](docs/error-formatting.md).
|
|
|
796
800
|
- [ ] Implement more type-level utilities (conditional types, template literals)
|
|
797
801
|
- [ ] Leverage newer TypeScript features (const type parameters, tuple manipulation)
|
|
798
802
|
|
|
803
|
+
## Claude Code Skills
|
|
804
|
+
|
|
805
|
+
Functype provides two specialized Claude Code skills to enhance your development experience:
|
|
806
|
+
|
|
807
|
+
### Functype User Guide
|
|
808
|
+
|
|
809
|
+
Help for developers using functype in their projects:
|
|
810
|
+
|
|
811
|
+
- Pattern conversion (imperative → functional)
|
|
812
|
+
- API lookup and examples
|
|
813
|
+
- Common use cases and debugging tips
|
|
814
|
+
|
|
815
|
+
**Install**: Download from [dist/skills/functype-user.zip](./dist/skills/functype-user.zip)
|
|
816
|
+
|
|
817
|
+
### Functype Library Developer
|
|
818
|
+
|
|
819
|
+
Guide for contributors developing functype itself:
|
|
820
|
+
|
|
821
|
+
- Architecture patterns and development workflow
|
|
822
|
+
- Creating new data structures
|
|
823
|
+
- Testing strategies and interface implementation
|
|
824
|
+
|
|
825
|
+
**Install**: Download from [dist/skills/functype-developer.zip](./dist/skills/functype-developer.zip)
|
|
826
|
+
|
|
827
|
+
See [.claude/skills/README.md](./.claude/skills/README.md) for complete installation and usage instructions.
|
|
828
|
+
|
|
799
829
|
## Contributing
|
|
800
830
|
|
|
801
831
|
Contributions are welcome! Please feel free to submit a Pull Request.
|
package/README.processed.md
CHANGED
|
@@ -81,7 +81,7 @@ const _nothing = empty.map((s) => s.toUpperCase()) // None
|
|
|
81
81
|
const result = value
|
|
82
82
|
.map((s) => s.length)
|
|
83
83
|
.filter((len) => len > 3)
|
|
84
|
-
.
|
|
84
|
+
.orElse(0) // 5
|
|
85
85
|
|
|
86
86
|
// Pattern matching
|
|
87
87
|
const message = value.fold(
|
|
@@ -690,6 +690,10 @@ opt.forEach(console.log) // Logs: 42
|
|
|
690
690
|
list.forEach(console.log) // Logs: 1, 2, 3, 4, 5
|
|
691
691
|
```
|
|
692
692
|
|
|
693
|
+
## Feature Matrix
|
|
694
|
+
|
|
695
|
+
For a comprehensive overview of which interfaces are supported by each data structure, see the [Functype Feature Matrix](docs/FUNCTYPE_FEATURE_MATRIX.md).
|
|
696
|
+
|
|
693
697
|
## Type Safety
|
|
694
698
|
|
|
695
699
|
Functype leverages TypeScript's advanced type system to provide compile-time safety for functional patterns, ensuring that your code is both robust and maintainable.
|
|
@@ -44,7 +44,7 @@ interface Unsafe<T extends Type> {
|
|
|
44
44
|
* @throws {Error} The specified error, container's error, or a sensible default
|
|
45
45
|
* @returns The contained value
|
|
46
46
|
*/
|
|
47
|
-
|
|
47
|
+
orThrow(error?: Error): T;
|
|
48
48
|
}
|
|
49
49
|
/**
|
|
50
50
|
* Extractable type class for data structures that can extract their values
|
|
@@ -61,13 +61,13 @@ interface Extractable<T extends Type> extends Unsafe<T> {
|
|
|
61
61
|
* @param defaultValue - The value to return if extraction fails
|
|
62
62
|
* @returns The contained value or defaultValue
|
|
63
63
|
*/
|
|
64
|
-
|
|
64
|
+
orElse(defaultValue: T): T;
|
|
65
65
|
/**
|
|
66
|
-
* Returns this container if it has a value, otherwise returns the alternative
|
|
66
|
+
* Returns this container if it has a value, otherwise returns the alternative container
|
|
67
67
|
* @param alternative - The alternative container
|
|
68
68
|
* @returns This container or the alternative
|
|
69
69
|
*/
|
|
70
|
-
|
|
70
|
+
or(alternative: Extractable<T>): Extractable<T>;
|
|
71
71
|
/**
|
|
72
72
|
* Returns the contained value or null
|
|
73
73
|
* @returns The contained value or null
|
|
@@ -243,12 +243,11 @@ interface Try<T> extends FunctypeBase<T, TypeNames>, Extractable<T>, Pipe<T>, Pr
|
|
|
243
243
|
readonly _tag: "Failure";
|
|
244
244
|
error: Error;
|
|
245
245
|
};
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
246
|
+
orElse: (defaultValue: T) => T;
|
|
247
|
+
orThrow: (error?: Error) => T;
|
|
248
|
+
or: (alternative: Try<T>) => Try<T>;
|
|
249
249
|
orNull: () => T | null;
|
|
250
250
|
orUndefined: () => T | undefined;
|
|
251
|
-
orThrow: (error: Error) => T;
|
|
252
251
|
toOption: () => Option<T>;
|
|
253
252
|
toEither: <E extends Type>(leftValue: E) => Either<E, T>;
|
|
254
253
|
toList: () => List<T>;
|
|
@@ -331,7 +330,7 @@ declare const Try: (<T>(f: () => T) => Try<T>) & {
|
|
|
331
330
|
*
|
|
332
331
|
* // Convert to desired type for chaining
|
|
333
332
|
* const asOption = result.toOption()
|
|
334
|
-
* asOption.map(x => x * 2).
|
|
333
|
+
* asOption.map(x => x * 2).orElse(0)
|
|
335
334
|
*/
|
|
336
335
|
interface Reshapeable<T extends Type> {
|
|
337
336
|
/**
|
|
@@ -442,20 +441,20 @@ interface Option<T extends Type> extends Functype<T, "Some" | "None">, Promisabl
|
|
|
442
441
|
* @param defaultValue - The value to return if this Option is None
|
|
443
442
|
* @returns The contained value or defaultValue
|
|
444
443
|
*/
|
|
445
|
-
|
|
444
|
+
orElse(defaultValue: T): T;
|
|
446
445
|
/**
|
|
447
446
|
* Returns the contained value or throws an error if None
|
|
448
447
|
* @param error - Optional custom error to throw. If not provided, throws a default error
|
|
449
448
|
* @returns The contained value
|
|
450
449
|
* @throws The specified error or a default error if the Option is None
|
|
451
450
|
*/
|
|
452
|
-
|
|
451
|
+
orThrow(error?: Error): T;
|
|
453
452
|
/**
|
|
454
|
-
* Returns this Option if it contains a value, otherwise returns the alternative
|
|
453
|
+
* Returns this Option if it contains a value, otherwise returns the alternative container
|
|
455
454
|
* @param alternative - The alternative Option to return if this is None
|
|
456
455
|
* @returns This Option or the alternative
|
|
457
456
|
*/
|
|
458
|
-
|
|
457
|
+
or(alternative: Option<T>): Option<T>;
|
|
459
458
|
/**
|
|
460
459
|
* Returns the contained value or null if None
|
|
461
460
|
* @returns The contained value or null
|
|
@@ -825,9 +824,9 @@ interface Either<L extends Type, R extends Type> extends FunctypeBase<R, "Left"
|
|
|
825
824
|
readonly _tag: "Right";
|
|
826
825
|
value: R;
|
|
827
826
|
};
|
|
828
|
-
|
|
829
|
-
|
|
830
|
-
|
|
827
|
+
orElse: (defaultValue: R) => R;
|
|
828
|
+
orThrow: (error?: Error) => R;
|
|
829
|
+
or(alternative: Either<L, R>): Either<L, R>;
|
|
831
830
|
orNull: () => R | null;
|
|
832
831
|
orUndefined: () => R | undefined;
|
|
833
832
|
readonly map: <U extends Type>(f: (value: R) => U) => Either<L, U>;
|
|
@@ -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 he 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 S=t=>{let e={_tag:"LazyList",[Symbol.iterator]:()=>t[Symbol.iterator](),map:r=>S((function*(){for(let n of t)yield r(n);})()),flatMap:r=>S((function*(){for(let n of t)yield*r(n);})()),filter:r=>S((function*(){for(let n of t)r(n)&&(yield n);})()),take:r=>S((function*(){let n=oe(0);for(let o of t){if(n.get()>=r)break;yield o,n.increment();}})()),drop:r=>S((function*(){let n=oe(0);for(let o of t)n.get()>=r&&(yield o),n.increment();})()),takeWhile:r=>S((function*(){for(let n of t){if(!r(n))break;yield n;}})()),dropWhile:r=>S((function*(){let n=b(true);for(let o of t)n.get()&&r(o)||(n.set(false),yield o);})()),concat:r=>S((function*(){yield*t,yield*r;})()),zip:r=>S((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: ${he(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=>S(t),ot={empty:()=>S([]),of:t=>S([t]),from:(...t)=>S(t),iterate:(t,e)=>S((function*(){let r=b(t);for(;;)yield r.get(),r.set(e(r.get()));})()),generate:t=>S((function*(){for(;;)yield t();})()),range:(t,e,r=1)=>S((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)=>S((function*(){if(e===void 0)for(;;)yield t;else {let r=oe(0);for(;r.get()<e;)yield t,r.increment();}})()),cycle:t=>S((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},orElse:e=>t,orThrow:e=>t,or:e=>ce(t),orNull:()=>t,orUndefined:()=>t,toEither:e=>p(t),map:e=>O(()=>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(${he(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: ${he(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},orElse:e=>e,orThrow:e=>{throw e??t},or:e=>e,orNull:()=>null,orUndefined:()=>{},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(${he(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)}},O=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?O(()=>e[0]):O(()=>{throw new Error("Empty list")}),toString:()=>`List(${he(e)})`,toValue:()=>({_tag:"List",value:e}),pipe:n=>n([...e]),serialize:()=>({toJSON:()=>JSON.stringify({_tag:"List",value:e}),toYAML:()=>`_tag: List
|
|
9
|
+
value: ${he(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},orElse:e=>t,orThrow:()=>t,or: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:()=>O(()=>t),toJSON(){return {_tag:"Right",value:t}},toString:()=>`Right(${he(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: ${he(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},orElse:e=>e,orThrow:e=>{throw e??t},or: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:()=>O(()=>{throw new Error(String(t))}),toJSON(){return {_tag:"Left",value:t}},toString:()=>`Left(${he(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: ${he(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),Er=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 ht(t,e,r){return C(t,n=>n.length>=e&&n.length<=r)}function Et(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),orThrow:()=>{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}},Sr=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},orThrow: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 Ee(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.orThrow(),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={...Ee("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),orThrow:s=>{throw s??o},orElse:s=>s,or:s=>s,orNull:()=>null,orUndefined:()=>{},toEither:()=>l(o),toTry:()=>O(()=>{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:()=>he({_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={...Ee("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),orThrow:o=>t,orElse:o=>t,or:o=>P(t,e),orNull:()=>t,orUndefined:()=>t,toEither:()=>p(t),toTry:()=>O(()=>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:()=>he({_tag:"Ok",value:t})??"{}",toYAML:()=>`_tag: Ok
|
|
15
|
+
value: ${he(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(E){u(L(E,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(E){u(L(E,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 E=R;E._tag==="Ok"||E._tag==="Err"?u(E):u(P(R,{name:e,description:r}));}else u(P(R,{name:e,description:r}));}catch(R){try{await s();}catch(E){u(L(E,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 E=new Error(`${e}: ${R.message}`),I=q.apply(E,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 E=await a(R);if(E&&typeof E=="object"&&"_tag"in E){let I=E;I._tag==="Ok"||I._tag==="Err"?u(I):u(L(E,void 0,{name:e,description:r}));}else u(L(E,void 0,{name:e,description:r}));}}catch(E){u(L(E,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 {...Ee("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.orThrow(),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.orThrow()):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.orThrow()):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=>O(()=>t),empty:t=>O(()=>{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(E=>{let I=[...i,E];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}] `:"",E=`${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
|
+
`);E+=`
|
|
25
|
+
${de}`,H.length>re&&(E+=`
|
|
26
|
+
${y} ${r.colors?"\x1B[90m":""}...${H.length-re} more stack frames${r.colors?"\x1B[0m":""}`);}return E}).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 En=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.orThrow();}return r.length>0?l(d(r)):p(n)}},St={...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,St);function Ot(t){return t!=null&&typeof t=="object"&&"orThrow"in t&&typeof t.orThrow=="function"}function Bt(t){return Ot(t)&&"orElse"in t&&typeof t.orElse=="function"&&"or"in t&&typeof t.or=="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.orThrow();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.orThrow():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.orThrow();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.orThrow());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},orElse:i=>{try{return a()}catch{return i}},orNull:()=>{try{return a()}catch{return null}},orThrow:i=>{try{return a()}catch(u){throw i??u}},or:i=>z(()=>{try{return a()}catch{return i.orThrow()}}),orUndefined:()=>{try{return a()}catch{return}},map:i=>z(()=>i(a())),ap:i=>z(()=>i.orThrow()(a())),mapAsync:async i=>{let u=a(),T=await i(u);return z(()=>T)},flatMap:i=>z(()=>i(a()).orThrow()),flatMapAsync:async i=>{let u=a(),T=await i(u);return z(()=>T.orThrow())},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).orThrow()}}),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:()=>O(()=>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(${he(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: ${he(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.orThrow()),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,h])=>b$1([c,h])),o=c=>Q(new fe(r.values).set(c.toArray()[0],c.toArray()[1]).entries()),a=c=>{let h=new fe(r.values);return h.delete(c)?Q(h.entries()):Q(r.values.entries())},s=c=>{let h=c.toArray();return r.values.get(h[0])===h[1]},i=()=>r.values.size,u=c=>Q(Array.from(r.values.entries()).map(([h,F])=>[h,c(F)])),T=c=>{let h=Q(r.values.entries()).toList();return Q(h.flatMap(c).toArray())},y=c=>{let h=[];for(let[F,ne]of r.values.entries()){let pe=c.get(F);pe._tag==="Some"&&pe.value&&h.push([F,pe.value(ne)]);}return Q(h)},m=async c=>{let h=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();h.set(Xe,et);}}return Q(h.entries())},k=c=>d(n()).reduce(c),R=c=>d(n()).reduceRight(c),E=c=>h=>d(n()).foldLeft(c)(h),I=c=>h=>d(n()).foldRight(c)(h),H=c=>f(r.values.get(c)),re=(c,h)=>f(r.values.get(c)).orElse(h),le=()=>r.values.size===0,de=(c,h)=>f(r.values.get(c)).or(h),me=(c,h)=>{if(le())return c();let F=n();if(F.length===0)return c();let ne=F[0];return ne===void 0?c():h(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:E,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 Se(e.value)},fromYAML:t=>{let r=t.split(`
|
|
39
|
+
`)[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 Ye.fromJSON(e)}},Se=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((h,F)=>h.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((h,F)=>h.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 Oe(e.value)},fromYAML:t=>{let r=t.split(`
|
|
41
|
+
`)[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(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},orElse:()=>t,orThrow:()=>t,or: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:()=>O(()=>t),toPromise:()=>Promise.resolve(t),toString:()=>`Some(${he(t)})`,toValue:()=>({_tag:"Some",value:t}),pipe:e=>e(t),serialize:()=>({toJSON:()=>JSON.stringify({_tag:"Some",value:t}),toYAML:()=>`_tag: Some
|
|
42
|
+
value: ${he(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},orElse:t=>t,orThrow(t){throw t??new Error("Cannot extract value from None")},or: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:()=>O(()=>{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,ht as F,Et as G,Sr as H,_r as I,Ee 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,En as ea,b as f,v as fa,Zt as g,wn as ga,O 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,Er as n,Se as na,Rr as o,Nt as oa,Ar as p,Oe 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-LW2YTB56.mjs.map
|
|
45
|
+
//# sourceMappingURL=chunk-LW2YTB56.mjs.map
|