functype 0.50.0 → 0.51.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/dist/{Tuple-eVwTSeSr.js → Tuple-DY00RBep.js} +1 -1
- package/dist/{Tuple-DmywDCE9.d.ts → Tuple-DwyoW0ZP.d.ts} +9 -7
- package/dist/cli/exports.js +1 -1
- package/dist/cli/index.js +1 -1
- package/dist/do/index.d.ts +1 -1
- package/dist/do/index.js +1 -1
- package/dist/either/index.d.ts +1 -1
- package/dist/either/index.js +1 -1
- package/dist/{full-interfaces-DVRjnPWW.js → full-interfaces-CbBWKnyv.js} +13 -3
- package/dist/{index-OdnROQtM.d.ts → index-B5zYifBQ.d.ts} +48 -20
- package/dist/index.d.ts +2 -2
- package/dist/index.js +1 -1
- package/dist/list/index.d.ts +1 -1
- package/dist/list/index.js +1 -1
- package/dist/map/index.d.ts +1 -1
- package/dist/map/index.js +1 -1
- package/dist/option/index.d.ts +1 -1
- package/dist/option/index.js +1 -1
- package/dist/set/index.d.ts +1 -1
- package/dist/set/index.js +1 -1
- package/dist/{src-ByDeJzWj.js → src-3rbFE_vI.js} +6 -6
- package/dist/try/index.d.ts +1 -1
- package/dist/try/index.js +1 -1
- package/dist/tuple/index.d.ts +1 -1
- package/dist/tuple/index.js +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
function e(e,t){return Object.assign(e,t)}function t(t,n){return e(t,n)}function n(e){if(e===void 0||typeof e==`symbol`||typeof e==`function`)return;let t=new Set;function n(e){if(e===null)return`null`;switch(typeof e){case`string`:return JSON.stringify(e);case`number`:return isFinite(e)?String(e):`null`;case`boolean`:return String(e);case`bigint`:return`"${e}"`;case`undefined`:case`symbol`:case`function`:return}let r=e;if(t.has(r))return`"[Circular]"`;t.add(r);try{if(`toJSON`in r&&typeof r.toJSON==`function`)return n(r.toJSON());if(Array.isArray(r))return`[${r.map(e=>n(e)??`null`).join(`,`)}]`;let e=Object.keys(r).sort(),t=[];for(let i of e){let e=n(r[i]);e!==void 0&&t.push(`${JSON.stringify(i)}:${e}`)}return`{${t.join(`,`)}}`}finally{t.delete(r)}}try{return n(e)}catch{return}}const r=e=>{let t={[Symbol.toStringTag]:`Tuple`,_tag:`Tuple`,map:t=>i(t(e)),flatMap:t=>t(e),get:t=>e[t],toArray:()=>e,length:e.length,[Symbol.iterator](){let t=0;return{next:()=>t<e.length?{value:e[t++],done:!1}:{value:void 0,done:!0}}},fold:(t,n)=>e.
|
|
1
|
+
function e(e,t){return Object.assign(e,t)}function t(t,n){return e(t,n)}function n(e){if(e===void 0||typeof e==`symbol`||typeof e==`function`)return;let t=new Set;function n(e){if(e===null)return`null`;switch(typeof e){case`string`:return JSON.stringify(e);case`number`:return isFinite(e)?String(e):`null`;case`boolean`:return String(e);case`bigint`:return`"${e}"`;case`undefined`:case`symbol`:case`function`:return}let r=e;if(t.has(r))return`"[Circular]"`;t.add(r);try{if(`toJSON`in r&&typeof r.toJSON==`function`)return n(r.toJSON());if(Array.isArray(r))return`[${r.map(e=>n(e)??`null`).join(`,`)}]`;let e=Object.keys(r).sort(),t=[];for(let i of e){let e=n(r[i]);e!==void 0&&t.push(`${JSON.stringify(i)}:${e}`)}return`{${t.join(`,`)}}`}finally{t.delete(r)}}try{return n(e)}catch{return}}const r=e=>{let t={[Symbol.toStringTag]:`Tuple`,_tag:`Tuple`,map:t=>i(t(e)),flatMap:t=>t(e),get:t=>e[t],toArray:()=>e,length:e.length,[Symbol.iterator](){let t=0;return{next:()=>t<e.length?{value:e[t++],done:!1}:{value:void 0,done:!0}}},fold:(t,n)=>e.reduce(n,t),foldLeft:t=>n=>e.reduce(n,t),foldRight:t=>n=>e.reduceRight((e,t)=>n(t,e),t),pipe:e=>e(t),serialize:()=>({toJSON:()=>JSON.stringify({_tag:`Tuple`,value:e}),toYAML:()=>`_tag: Tuple\nvalue: ${n(e)}`,toBinary:()=>Buffer.from(JSON.stringify({_tag:`Tuple`,value:e})).toString(`base64`)}),toValue:()=>({_tag:`Tuple`,value:e}),toString:()=>`Tuple(${e.map(e=>String(e)).join(`, `)})`};return t},i=t(e=>r(e),{of:(...e)=>r(e),pair:(e,t)=>r([e,t]),triple:(e,t,n)=>r([e,t,n]),empty:()=>r([]),from:e=>r(e)});export{e as i,n,t as r,i as t};
|
|
@@ -5,16 +5,17 @@ type Type = unknown;
|
|
|
5
5
|
/**
|
|
6
6
|
* Foldable type class represents data structures that can be folded to a summary value.
|
|
7
7
|
*
|
|
8
|
+
* This interface provides the universal fold operations (foldLeft, foldRight) that work
|
|
9
|
+
* consistently across all data structures. The `fold` method is intentionally excluded
|
|
10
|
+
* because it has different semantics for sum types vs collections:
|
|
11
|
+
* - Sum types (Option, Either, Try): `fold(onEmpty, onValue)` — pattern match
|
|
12
|
+
* - Collections (List, Set, Map): `fold(initial, fn)` — left-reduce accumulator
|
|
13
|
+
*
|
|
14
|
+
* Each type category defines its own `fold` with the appropriate signature.
|
|
15
|
+
*
|
|
8
16
|
* @typeParam A - The type of elements in the data structure
|
|
9
17
|
*/
|
|
10
18
|
interface Foldable<A> {
|
|
11
|
-
/**
|
|
12
|
-
* Pattern matches over the structure, applying specific handlers for each variant
|
|
13
|
-
* @param onEmpty - Function to apply if the structure is empty or has no value
|
|
14
|
-
* @param onValue - Function to apply if the structure has a value
|
|
15
|
-
* @returns The result of applying the appropriate function
|
|
16
|
-
*/
|
|
17
|
-
fold<B>(onEmpty: () => B, onValue: (value: A) => B): B;
|
|
18
19
|
/**
|
|
19
20
|
* Left-associative fold using the provided zero value and operation
|
|
20
21
|
* @param z - Zero/identity value
|
|
@@ -105,6 +106,7 @@ declare function isTypeable<T>(value: unknown, tag: string): value is T;
|
|
|
105
106
|
interface Tuple<T extends Type[]> extends Foldable<T[number]>, Pipe<Tuple<T>>, Serializable<Tuple<T>>, Typeable<"Tuple"> {
|
|
106
107
|
readonly [Symbol.toStringTag]: string;
|
|
107
108
|
get<K extends number>(index: K): T[K];
|
|
109
|
+
fold<B>(initial: B, fn: (acc: B, a: T[number]) => B): B;
|
|
108
110
|
map<U extends Type[]>(f: (value: T) => U): Tuple<U>;
|
|
109
111
|
flatMap<U extends Type[]>(f: (value: T) => Tuple<U>): Tuple<U>;
|
|
110
112
|
toArray(): T;
|
package/dist/cli/exports.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{a as e,i as t,n,r,t as i}from"../full-interfaces-
|
|
1
|
+
import{a as e,i as t,n,r,t as i}from"../full-interfaces-CbBWKnyv.js";export{n as CATEGORIES,i as FULL_INTERFACES,r as INTERFACES,t as TYPES,e as VERSION};
|
package/dist/cli/index.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import{Ct as e,W as t,ht as n}from"../src-
|
|
2
|
+
import{Ct as e,W as t,ht as n}from"../src-3rbFE_vI.js";import{a as r,i,n as a,r as o,t as s}from"../full-interfaces-CbBWKnyv.js";const c=()=>{let t=n([`functype ${r} - Scala-inspired FP for TypeScript`,``]);return n(Object.entries(a)).foldLeft(t)((t,[r,a])=>{let o=t.add(r.toUpperCase());return n(a).foldLeft(o)((t,n)=>e(i[n]).fold(()=>t,e=>{let r=e.interfaces.length>0?` [${e.interfaces.join(`, `)}]`:``;return t.add(` ${n}${r}`).add(` ${e.description}`)})).add(``)}).concat(n([`Use: npx functype <Type> for details`,`Use: npx functype interfaces for interface reference`])).toArray().join(`
|
|
3
3
|
`)},l=(t,r)=>{let i=r.interfaces.length>0?` [${r.interfaces.join(`, `)}]`:``,a=n([`create`,`transform`,`extract`,`check`,`other`]),o=n([`${t}<T>${i}`,``,r.description,``]);return a.foldLeft(o)((t,i)=>e(r.methods[i]).filter(e=>e.length>0).fold(()=>t,e=>{let r=t.add(i.toUpperCase());return n(e).foldLeft(r)((e,t)=>e.add(` ${t}`)).add(``)})).toArray().join(`
|
|
4
4
|
`).trimEnd()},u=()=>{let e=n([`INTERFACES`,``]);return n(Object.entries(o)).foldLeft(e)((e,[t,r])=>{let i=r.extends?` extends ${r.extends}`:``,a=e.add(`${t}<A>${i}`).add(` ${r.description}`);return n(r.methods).foldLeft(a)((e,t)=>e.add(` ${t}`)).add(``)}).toArray().join(`
|
|
5
5
|
`).trimEnd()},d=e=>JSON.stringify(e,null,2),f=()=>({version:r,categories:a,types:i}),p=t=>e(i[t]).map(e=>({name:t,data:e})).or(n(Object.entries(i)).find(([e])=>e.toLowerCase()===t.toLowerCase()).map(([e,t])=>({name:e,data:t}))).orUndefined(),m=()=>Object.keys(i),h=()=>o,g=e=>{let t=n(e.slice(2));return{flags:{json:t.contains(`--json`),full:t.contains(`--full`),help:t.exists(e=>e===`--help`||e===`-h`)},args:t.filter(e=>!e.startsWith(`--`)&&e!==`-h`)}},_=t=>e(s[t]).or(n(Object.entries(s)).find(([e])=>e.toLowerCase()===t.toLowerCase()).map(([,e])=>e)),v=()=>{let e=n([`FULL INTERFACE DEFINITIONS`,`=`.repeat(60),``]);return n(Object.entries(s)).foldLeft(e)((e,[t,r])=>e.concat(n([`// ${t}`,r,``,`-`.repeat(60),``]))).toArray().join(`
|
package/dist/do/index.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { Gn as Doable, Wn as DoResult, a as EmptyListError, c as LeftError, d as isDoCapable, f as unwrap, i as DoGenerator, l as LeftErrorType, n as Do, o as FailureError, r as DoAsync, s as FailureErrorType, t as $, u as NoneError } from "../index-
|
|
1
|
+
import { Gn as Doable, Wn as DoResult, a as EmptyListError, c as LeftError, d as isDoCapable, f as unwrap, i as DoGenerator, l as LeftErrorType, n as Do, o as FailureError, r as DoAsync, s as FailureErrorType, t as $, u as NoneError } from "../index-B5zYifBQ.js";
|
|
2
2
|
export { $, Do, DoAsync, DoGenerator, DoResult, Doable, EmptyListError, FailureError, FailureErrorType, LeftError, LeftErrorType, NoneError, isDoCapable, unwrap };
|
package/dist/do/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{A as e,D as t,F as n,M as r,N as i,O as a,P as o,j as s,k as c}from"../src-
|
|
1
|
+
import{A as e,D as t,F as n,M as r,N as i,O as a,P as o,j as s,k as c}from"../src-3rbFE_vI.js";export{t as $,a as Do,c as DoAsync,e as EmptyListError,s as FailureError,r as LeftError,i as NoneError,o as isDoCapable,n as unwrap};
|
package/dist/either/index.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { S as tryCatchAsync, _ as TypeCheckLeft, b as isRight, g as TestEither, h as Right, m as Left, p as Either, v as TypeCheckRight, x as tryCatch, y as isLeft } from "../index-
|
|
1
|
+
import { S as tryCatchAsync, _ as TypeCheckLeft, b as isRight, g as TestEither, h as Right, m as Left, p as Either, v as TypeCheckRight, x as tryCatch, y as isLeft } from "../index-B5zYifBQ.js";
|
|
2
2
|
export { Either, Left, Right, TestEither, TypeCheckLeft, TypeCheckRight, isLeft, isRight, tryCatch, tryCatchAsync };
|
package/dist/either/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{ct as e,dt as t,ft as n,lt as r,mt as i,ot as a,pt as o,st as s,ut as c}from"../src-
|
|
1
|
+
import{ct as e,dt as t,ft as n,lt as r,mt as i,ot as a,pt as o,st as s,ut as c}from"../src-3rbFE_vI.js";export{a as Either,s as Left,e as Right,r as TypeCheckLeft,c as TypeCheckRight,t as isLeft,n as isRight,o as tryCatch,i as tryCatchAsync};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
const e=`0.
|
|
1
|
+
const e=`0.51.0`,t={Option:{description:`Safe nullable handling - Some<T> or None`,interfaces:[`Functor`,`Monad`,`Foldable`,`Extractable`,`Matchable`,`Serializable`,`Traversable`],methods:{create:[`Option(v)`,`Option.none()`,`Some(v)`,`None()`],transform:[`.map(f)`,`.flatMap(f)`,`.filter(p)`,`.ap(ff)`],extract:[`.fold(n, s)`,`.orElse(d)`,`.orThrow()`,`.orNull()`,`.match({Some, None})`],check:[`.isSome`,`.isNone`,`.isDefined`,`.isEmpty`]}},Either:{description:`Error handling with Left (error) or Right (success)`,interfaces:[`Functor`,`Monad`,`Foldable`,`Traversable`,`PromiseLike`],methods:{create:[`Right(v)`,`Left(e)`,`Either.right(v)`,`Either.left(e)`],transform:[`.map(f)`,`.flatMap(f)`,`.mapLeft(f)`,`.swap()`],extract:[`.fold(l, r)`,`.orElse(d)`,`.orThrow()`,`.match({Left, Right})`],check:[`.isRight`,`.isLeft`]}},Try:{description:`Wrap operations that may throw - Success<T> or Failure`,interfaces:[`Functor`,`Monad`,`Foldable`,`Extractable`,`Matchable`,`Serializable`,`Traversable`],methods:{create:[`Try(() => expr)`,`Try.success(v)`,`Try.failure(e)`,`Try.fromPromise(p)`],transform:[`.map(f)`,`.flatMap(f)`,`.recover(f)`,`.recoverWith(f)`],extract:[`.fold(f, s)`,`.orElse(d)`,`.orThrow()`,`.toOption()`,`.toEither()`],check:[`.isSuccess`,`.isFailure`]}},List:{description:`Immutable array with functional operations`,interfaces:[`Functor`,`Monad`,`Foldable`,`Collection`,`Serializable`,`Traversable`],methods:{create:[`List([...])`,`List.of(...)`,`List.empty()`],transform:[`.map(f)`,`.flatMap(f)`,`.filter(p)`,`.take(n)`,`.takeWhile(p)`,`.takeRight(n)`,`.drop(n)`,`.dropWhile(p)`,`.concat(list)`,`.reverse()`,`.distinct()`,`.sorted()`,`.sortBy(f)`,`.zip(list)`,`.zipWithIndex()`,`.prepend(v)`,`.slice(s, e)`],extract:[`.fold(z, f)`,`.reduce(f)`,`.head`,`.headOption`,`.tail`,`.last`,`.lastOption`,`.init`,`.indexOf(v)`,`.toArray()`],check:[`.isEmpty`,`.nonEmpty`,`.size`,`.contains(v)`],other:[`.groupBy(f)`,`.partition(p)`,`.span(p)`]}},Set:{description:`Immutable set of unique values`,interfaces:[`Functor`,`Foldable`,`Collection`,`Serializable`,`Traversable`],methods:{create:[`Set([...])`,`Set.of(...)`,`Set.empty()`],transform:[`.map(f)`,`.filter(p)`,`.union(s)`,`.intersection(s)`,`.difference(s)`,`.add(v)`],extract:[`.fold(z, f)`,`.toArray()`],check:[`.has(v)`,`.isEmpty`,`.size`]}},Map:{description:`Immutable key-value store`,interfaces:[`SafeTraversable`,`Collection`,`Serializable`],methods:{create:[`Map([[k, v], ...])`,`Map.of([k, v], ...)`,`Map.empty()`],transform:[`.set(k, v)`,`.delete(k)`,`.map(f)`,`.filter(p)`,`.add(k, v)`],extract:[`.get(k)`,`.keys()`,`.values()`,`.entries()`,`.fold(z, f)`],check:[`.has(k)`,`.isEmpty`,`.size`]}},Lazy:{description:`Deferred computation with memoization`,interfaces:[`Functor`,`Monad`,`Foldable`,`Extractable`,`Serializable`,`Traversable`],methods:{create:[`Lazy(() => expr)`],transform:[`.map(f)`,`.flatMap(f)`],extract:[`.fold(n, s)`,`.orElse(d)`,`.orThrow()`,`.get()`],check:[`.isEvaluated`]}},LazyList:{description:`Lazy sequences for large/infinite data`,interfaces:[`Functor`,`Monad`,`Iterable`],methods:{create:[`LazyList.from(iter)`,`LazyList.range(start, end)`,`LazyList.infinite(f)`],transform:[`.map(f)`,`.filter(p)`,`.take(n)`,`.takeRight(n)`,`.drop(n)`,`.takeWhile(p)`,`.dropWhile(p)`,`.concat(ll)`,`.reverse()`,`.distinct()`,`.zip(ll)`,`.zipWithIndex()`],extract:[`.head`,`.headOption`,`.tail`,`.last`,`.lastOption`,`.init`,`.toArray()`],check:[`.isEmpty`]}},Task:{description:`Async operations with cancellation and progress tracking. Returns TaskOutcome<T> (Ok/Err) which implements Functor, AsyncMonad, Foldable, Extractable, Serializable`,interfaces:[],methods:{create:[`Task(params).Async(fn, errFn)`,`Task(params).Sync(fn, errFn)`,`Task.ok(value)`,`Task.err(error)`,`Task.fromEither(either)`,`Task.fromTry(try)`,`Task.fromPromise(fn)`,`Task.fromNodeCallback(fn)`],transform:[`.map(f)`,`.flatMap(f)`,`.mapError(f)`,`.recover(v)`,`.recoverWith(f)`],extract:[`.fold(onErr, onOk)`,`.match({Ok, Err})`,`.orElse(v)`,`.orThrow()`,`.toEither()`,`.toOption()`],other:[`Task.cancellable(fn)`,`Task.withProgress(fn, onProgress)`,`Task.race(tasks, timeout?)`,`Task.getErrorChain(error)`,`Task.formatErrorChain(error)`]}},IO:{description:`Lazy effect type with typed errors and dependency injection`,interfaces:[`Functor`,`Monad`,`Foldable`,`Matchable`],methods:{create:[`IO(() => v)`,`IO.succeed(v)`,`IO.fail(e)`,`IO.sync(f)`,`IO.async(f)`,`IO.tryPromise({try, catch})`,`IO.fromEither(e)`,`IO.fromOption(o)`,`IO.fromTry(t)`],transform:[`.map(f)`,`.flatMap(f)`,`.tap(f)`,`.mapError(f)`,`.recover(v)`,`.recoverWith(f)`],extract:[`.run()`,`.runOrThrow()`,`.runSync()`,`.runSyncOrThrow()`,`.runExit()`,`.runOption()`,`.runTry()`,`.fold(onErr, onOk)`,`.match({failure, success})`],check:[],other:[`.catchTag(tag, f)`,`.catchAll(f)`,`.retry(n)`,`.retryWithDelay(n, ms)`,`.timeout(ms)`,`.delay(ms)`,`.zip(io)`,`.pipe(f)`,`IO.all([...])`,`IO.race([...])`,`IO.bracket(acquire, use, release)`,`IO.gen(function*() {...})`,`IO.Do.bind().map()`,`IO.service(Tag)`,`.provideService(Tag, impl)`,`.provideLayer(layer)`]}},Cond:{description:`Conditional expression builder - replace if-else chains`,interfaces:[],methods:{create:[`Cond<T>()`],other:[`.case(pred, result)`,`.otherwise(result)`,`.eval()`]}},Match:{description:`Pattern matching - replace switch statements`,interfaces:[],methods:{create:[`Match(value)`],other:[`.case(pattern, result)`,`.when(pred, result)`,`.default(result)`,`.done()`]}},Brand:{description:`Nominal typing without runtime overhead`,interfaces:[],methods:{create:[`Brand<K, T>(value)`],extract:[`.unwrap()`,`.toString()`]}},ValidatedBrand:{description:`Branded types with runtime validation`,interfaces:[],methods:{create:[`ValidatedBrand(validator)`,`.of(v)`,`.from(v)`,`.unsafeOf(v)`],check:[`.is(v)`],other:[`.refine(validator)`]}},Tuple:{description:`Fixed-size typed array`,interfaces:[`Typeable`,`Valuable`,`Iterable`],methods:{create:[`Tuple([a, b, ...])`,`Tuple.of(a, b, ...)`],extract:[`.first`,`.second`,`.toArray()`],transform:[`.map(f)`]}},Stack:{description:`Immutable LIFO stack`,interfaces:[`Foldable`,`Collection`,`Serializable`,`Traversable`],methods:{create:[`Stack()`,`Stack.of(...)`],transform:[`.push(v)`,`.pop()`],extract:[`.peek()`,`.toArray()`],check:[`.isEmpty`,`.size`]}}},n={Functor:{description:`Transform contained values`,methods:[`.map<B>(f: A => B): Functor<B>`]},Applicative:{extends:`Functor`,description:`Apply wrapped functions`,methods:[`.ap<B>(ff: Applicative<A => B>): Applicative<B>`]},Monad:{extends:`Applicative`,description:`Chain operations returning wrapped values`,methods:[`.flatMap<B>(f: A => Monad<B>): Monad<B>`]},Foldable:{description:`Extract via pattern matching`,methods:[`.fold<B>(empty: () => B, f: A => B): B`,`.foldLeft<B>(z: B, op: (B, A) => B): B`,`.foldRight<B>(z: B, op: (A, B) => B): B`]},Extractable:{description:`Get contained value with fallback`,methods:[`.orElse(d: T): T`,`.orThrow(e?: Error): T`,`.orNull(): T | null`,`.orUndefined(): T | undefined`]},Matchable:{description:`Pattern match on type variants`,methods:[`.match<R>(patterns: Record<Tag, Handler>): R`]},Traversable:{description:`Iterate and check contents`,methods:[`.size: number`,`.isEmpty: boolean`,`.contains(v: A): boolean`,`.reduce<B>(f, init): B`]},Collection:{description:`Collection operations`,methods:[`.toArray(): A[]`,`.forEach(f: A => void): void`]},Serializable:{description:`Convert to string formats`,methods:[`.serialize().toJSON(): string`,`.serialize().toYAML(): string`]}},r={Core:[`Option`,`Either`,`Try`],Collection:[`List`,`Set`,`Map`,`LazyList`,`Tuple`,`Stack`],Effect:[`IO`,`Task`],Utility:[`Lazy`,`Cond`,`Match`,`Brand`,`ValidatedBrand`]},i={Option:`export interface Option<T extends Type> extends Functype<T, "Some" | "None">, Promisable<T>, Doable<T>, Reshapeable<T> {
|
|
2
2
|
/** The contained value (undefined for None) */
|
|
3
3
|
readonly value: T | undefined
|
|
4
4
|
/** Whether this Option contains no value */
|
|
@@ -296,7 +296,7 @@ const e=`0.50.0`,t={Option:{description:`Safe nullable handling - Some<T> or Non
|
|
|
296
296
|
flatMap: <B>(f: (a: A) => Iterable<B>) => Set<B>
|
|
297
297
|
filter: (p: (a: A) => boolean) => Set<A>
|
|
298
298
|
filterNot: (p: (a: A) => boolean) => Set<A>
|
|
299
|
-
fold: <
|
|
299
|
+
fold: <B>(initial: B, fn: (acc: B, a: A) => B) => B
|
|
300
300
|
toList: () => List<A>
|
|
301
301
|
toSet: () => Set<A>
|
|
302
302
|
toArray: <B = A>() => B[]
|
|
@@ -321,7 +321,7 @@ const e=`0.50.0`,t={Option:{description:`Safe nullable handling - Some<T> or Non
|
|
|
321
321
|
get(key: K): Option<V>
|
|
322
322
|
getOrElse(key: K, defaultValue: V): V
|
|
323
323
|
orElse(key: K, alternative: Option<V>): Option<V>
|
|
324
|
-
fold<
|
|
324
|
+
fold<B>(initial: B, fn: (acc: B, a: Tuple<[K, V]>) => B): B
|
|
325
325
|
foldLeft<B>(z: B): (op: (b: B, a: Tuple<[K, V]>) => B) => B
|
|
326
326
|
foldRight<B>(z: B): (op: (a: Tuple<[K, V]>, b: B) => B) => B
|
|
327
327
|
/**
|
|
@@ -512,6 +512,9 @@ const e=`0.50.0`,t={Option:{description:`Safe nullable handling - Some<T> or Non
|
|
|
512
512
|
get tail(): LazyList<A>
|
|
513
513
|
get init(): LazyList<A>
|
|
514
514
|
|
|
515
|
+
// Foldable
|
|
516
|
+
fold<B>(initial: B, fn: (acc: B, a: A) => B): B
|
|
517
|
+
|
|
515
518
|
// Terminal operations (force evaluation)
|
|
516
519
|
toList(): List<A>
|
|
517
520
|
toArray(): A[]
|
|
@@ -565,6 +568,8 @@ const e=`0.50.0`,t={Option:{description:`Safe nullable handling - Some<T> or Non
|
|
|
565
568
|
readonly [Symbol.toStringTag]: string
|
|
566
569
|
get<K extends number>(index: K): T[K]
|
|
567
570
|
|
|
571
|
+
fold<B>(initial: B, fn: (acc: B, a: T[number]) => B): B
|
|
572
|
+
|
|
568
573
|
map<U extends Type[]>(f: (value: T) => U): Tuple<U>
|
|
569
574
|
|
|
570
575
|
flatMap<U extends Type[]>(f: (value: T) => Tuple<U>): Tuple<U>
|
|
@@ -645,6 +650,11 @@ const e=`0.50.0`,t={Option:{description:`Safe nullable handling - Some<T> or Non
|
|
|
645
650
|
*/
|
|
646
651
|
toString(): string
|
|
647
652
|
|
|
653
|
+
/**
|
|
654
|
+
* Left-associative fold over all elements using an initial value and combining function.
|
|
655
|
+
*/
|
|
656
|
+
fold<B>(initial: B, fn: (acc: B, a: A) => B): B
|
|
657
|
+
|
|
648
658
|
/**
|
|
649
659
|
* Pattern matches over the Stack, applying a handler function based on whether it's empty
|
|
650
660
|
* @param patterns - Object with handler functions for Empty and NonEmpty variants
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { t as Brand } from "./Brand-BJIRbUKB.js";
|
|
2
|
-
import { c as Pipe, l as Foldable, o as Serializable, r as Typeable, t as Tuple, u as Type } from "./Tuple-
|
|
2
|
+
import { c as Pipe, l as Foldable, o as Serializable, r as Typeable, t as Tuple, u as Type } from "./Tuple-DwyoW0ZP.js";
|
|
3
3
|
|
|
4
4
|
//#region src/error/ParseError.d.ts
|
|
5
5
|
declare const ParseError: (message?: string) => Error & {
|
|
@@ -136,6 +136,7 @@ interface LazyList<A extends Type> extends Foldable<A>, Pipe<LazyList<A>>, Seria
|
|
|
136
136
|
get lastOption(): Option<A>;
|
|
137
137
|
get tail(): LazyList<A>;
|
|
138
138
|
get init(): LazyList<A>;
|
|
139
|
+
fold<B>(initial: B, fn: (acc: B, a: A) => B): B;
|
|
139
140
|
toList(): List<A>;
|
|
140
141
|
toArray(): A[];
|
|
141
142
|
forEach(f: (a: A) => void): void;
|
|
@@ -277,6 +278,20 @@ interface ContainerOps<A extends Type> {
|
|
|
277
278
|
* @typeParam Self - The collection type itself for proper return types
|
|
278
279
|
*/
|
|
279
280
|
interface CollectionOps<A extends Type, Self> {
|
|
281
|
+
/**
|
|
282
|
+
* Left-associative fold over all elements using an initial value and combining function.
|
|
283
|
+
* Unlike foldLeft (which is curried), this provides a convenient uncurried signature.
|
|
284
|
+
*
|
|
285
|
+
* @example
|
|
286
|
+
* ```typescript
|
|
287
|
+
* List([1, 2, 3]).fold(0, (acc, x) => acc + x) // 6
|
|
288
|
+
* ```
|
|
289
|
+
*
|
|
290
|
+
* @param initial - The initial accumulator value
|
|
291
|
+
* @param fn - A function that combines the accumulator with each element
|
|
292
|
+
* @returns The final accumulated value
|
|
293
|
+
*/
|
|
294
|
+
fold<B>(initial: B, fn: (acc: B, a: A) => B): B;
|
|
280
295
|
/**
|
|
281
296
|
* Drops the first n elements from the collection.
|
|
282
297
|
*/
|
|
@@ -1790,45 +1805,54 @@ declare const Validation: (<T extends Type>(rule: ValidationRule) => Validator<T
|
|
|
1790
1805
|
//#endregion
|
|
1791
1806
|
//#region src/foldable/index.d.ts
|
|
1792
1807
|
/**
|
|
1793
|
-
*
|
|
1808
|
+
* Structural type for sum types that support pattern-match fold (Option, Either, Try, etc.).
|
|
1809
|
+
* Uses duck typing so any type with the right fold signature works, without requiring a shared interface.
|
|
1810
|
+
*/
|
|
1811
|
+
type PatternFoldable<A> = {
|
|
1812
|
+
fold<B>(onEmpty: () => B, onValue: (value: A) => B): B;
|
|
1813
|
+
};
|
|
1814
|
+
/**
|
|
1815
|
+
* Utility functions for working with sum-type Foldable data structures.
|
|
1816
|
+
* These utilities use pattern-match fold semantics and are designed for
|
|
1817
|
+
* sum types (Option, Either, Try) — not collections.
|
|
1794
1818
|
*/
|
|
1795
1819
|
declare const FoldableUtils: {
|
|
1796
1820
|
/**
|
|
1797
|
-
* Converts a
|
|
1821
|
+
* Converts a sum type to an Option
|
|
1798
1822
|
*
|
|
1799
|
-
* @param foldable - The
|
|
1823
|
+
* @param foldable - The sum type to convert
|
|
1800
1824
|
* @returns An Option containing the value, or None if empty
|
|
1801
1825
|
*/
|
|
1802
|
-
toOption: <A extends Type>(foldable:
|
|
1826
|
+
toOption: <A extends Type>(foldable: PatternFoldable<A>) => Option<A>;
|
|
1803
1827
|
/**
|
|
1804
|
-
* Converts a
|
|
1828
|
+
* Converts a sum type to a List
|
|
1805
1829
|
*
|
|
1806
|
-
* @param foldable - The
|
|
1830
|
+
* @param foldable - The sum type to convert
|
|
1807
1831
|
* @returns A List containing the value(s), or empty List if empty
|
|
1808
1832
|
*/
|
|
1809
|
-
toList: <A extends Type>(foldable:
|
|
1833
|
+
toList: <A extends Type>(foldable: PatternFoldable<A>) => List<A>;
|
|
1810
1834
|
/**
|
|
1811
|
-
* Converts a
|
|
1835
|
+
* Converts a sum type to an Either
|
|
1812
1836
|
*
|
|
1813
|
-
* @param foldable - The
|
|
1837
|
+
* @param foldable - The sum type to convert
|
|
1814
1838
|
* @param left - The value to use for Left if empty
|
|
1815
1839
|
* @returns Either.Right with the value if non-empty, or Either.Left with left if empty
|
|
1816
1840
|
*/
|
|
1817
|
-
toEither: <A extends Type, E>(foldable:
|
|
1841
|
+
toEither: <A extends Type, E>(foldable: PatternFoldable<A>, left: E) => Either<E, A>;
|
|
1818
1842
|
/**
|
|
1819
|
-
* Checks if the
|
|
1843
|
+
* Checks if the sum type is empty
|
|
1820
1844
|
*
|
|
1821
|
-
* @param foldable - The
|
|
1845
|
+
* @param foldable - The sum type to check
|
|
1822
1846
|
* @returns true if empty, false otherwise
|
|
1823
1847
|
*/
|
|
1824
|
-
isEmpty: <A extends Type>(foldable:
|
|
1848
|
+
isEmpty: <A extends Type>(foldable: PatternFoldable<A>) => boolean;
|
|
1825
1849
|
/**
|
|
1826
|
-
* Calculates the size of the
|
|
1850
|
+
* Calculates the size of the sum type (0 or 1)
|
|
1827
1851
|
*
|
|
1828
|
-
* @param foldable - The
|
|
1829
|
-
* @returns The size (
|
|
1852
|
+
* @param foldable - The sum type to measure
|
|
1853
|
+
* @returns The size (0 if empty, 1 if non-empty)
|
|
1830
1854
|
*/
|
|
1831
|
-
size: <A extends Type>(foldable:
|
|
1855
|
+
size: <A extends Type>(foldable: PatternFoldable<A>) => number;
|
|
1832
1856
|
};
|
|
1833
1857
|
//#endregion
|
|
1834
1858
|
//#region src/hkt/index.d.ts
|
|
@@ -3567,7 +3591,7 @@ interface Map$1<K, V> extends SafeTraversable<K, V>, Collection<Tuple<[K, V]>>,
|
|
|
3567
3591
|
get(key: K): Option<V>;
|
|
3568
3592
|
getOrElse(key: K, defaultValue: V): V;
|
|
3569
3593
|
orElse(key: K, alternative: Option<V>): Option<V>;
|
|
3570
|
-
fold<
|
|
3594
|
+
fold<B>(initial: B, fn: (acc: B, a: Tuple<[K, V]>) => B): B;
|
|
3571
3595
|
foldLeft<B>(z: B): (op: (b: B, a: Tuple<[K, V]>) => B) => B;
|
|
3572
3596
|
foldRight<B>(z: B): (op: (a: Tuple<[K, V]>, b: B) => B) => B;
|
|
3573
3597
|
/**
|
|
@@ -3807,7 +3831,7 @@ interface Set<A> extends FunctypeCollection<A, "Set">, Collection<A> {
|
|
|
3807
3831
|
flatMap: <B>(f: (a: A) => Iterable<B>) => Set<B>;
|
|
3808
3832
|
filter: (p: (a: A) => boolean) => Set<A>;
|
|
3809
3833
|
filterNot: (p: (a: A) => boolean) => Set<A>;
|
|
3810
|
-
fold: <
|
|
3834
|
+
fold: <B>(initial: B, fn: (acc: B, a: A) => B) => B;
|
|
3811
3835
|
toList: () => List<A>;
|
|
3812
3836
|
toSet: () => Set<A>;
|
|
3813
3837
|
toArray: <B = A>() => B[];
|
|
@@ -3937,6 +3961,10 @@ type Stack<A extends Type> = {
|
|
|
3937
3961
|
* @returns A string representation
|
|
3938
3962
|
*/
|
|
3939
3963
|
toString(): string;
|
|
3964
|
+
/**
|
|
3965
|
+
* Left-associative fold over all elements using an initial value and combining function.
|
|
3966
|
+
*/
|
|
3967
|
+
fold<B>(initial: B, fn: (acc: B, a: A) => B): B;
|
|
3940
3968
|
/**
|
|
3941
3969
|
* Pattern matches over the Stack, applying a handler function based on whether it's empty
|
|
3942
3970
|
* @param patterns - Object with handler functions for Empty and NonEmpty variants
|
package/dist/index.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import { a as ExtractBrand, c as hasBrand, i as BrandedString, l as unwrapBrand, n as BrandedBoolean, o as Unwrap, r as BrandedNumber, s as createBrander, t as Brand } from "./Brand-BJIRbUKB.js";
|
|
2
|
-
import { $ as TestClockTag, $t as TaskFailure, A as OptionConstructor, An as ValidatedBrand, At as ValidationRule, B as fromBinary, Bn as ContainerOps, Bt as TaskErrorInfo, C as Functype, Cn as NonEmptyString, Ct as OptionKind, D as List, Dn as PositiveNumber, Dt as FieldValidation, E as Collection, En as PositiveInteger, Et as FoldableUtils, F as Set, Fn as Applicative, Ft as TypedError, G as MatchableUtils, Gn as Doable, Gt as Async, H as fromYAML, Hn as Extractable, Ht as formatError, I as SerializationResult, In as AsyncMonad, It as TypedErrorContext, J as Map, Jt as Err, K as ESMap, Kn as ParseError, Kt as CancellationToken, L as createCustomSerializer, Ln as Functor, Lt as ErrorChainElement, M as Stack, Mn as Try, Mt as ErrorCode, N as Valuable, Nn as TypeNames, Nt as ErrorMessage, O as None, On as UUID, Ot as FormValidation, P as ValuableParams, Pn as Promisable, Pt as ErrorStatus, Q as TestClock, Qt as Task$1, R as createSerializationCompanion, Rn as Monad, Rt as ErrorFormatterOptions, S as tryCatchAsync, Sn as IntegerNumber, St as ListKind, T as FunctypeCollection, Tn as PatternString, Tt as UniversalContainer, U as Ref, Un as isExtractable, Ut as formatStackTrace, V as fromJSON, Vn as LazyList, Vt as createErrorSerializer, W as Matchable, Wn as DoResult, Wt as safeStringify, X as Traversable, Xt as Sync, Y as SafeTraversable, Yt as Ok, Z as Lazy, Zt as TaggedThrowable, _ as TypeCheckLeft, _n as Companion, _t as TagService, a as EmptyListError, an as createCancellationTokenSource, at as TimeoutError, b as isRight, bn as EmailAddress, bt as HKT, c as LeftError, cn as Throwable, ct as LayerError, d as isDoCapable, dn as Match, dt as Exit, en as TaskMetadata, et as TestContext, f as unwrap, fn as UntypedMatch, ft as ExitTag, g as TestEither, gn as isCompanion, gt as Tag, h as Right, hn as InstanceType, ht as HasService, i as DoGenerator, in as TaskSuccess, it as Task, j as Some, jn as ValidatedBrandCompanion, jt as Validator, k as Option, kn as UrlString, kt as Validation, l as LeftErrorType, ln as ThrowableType, lt as LayerInput, m as Left, mn as CompanionMethods, mt as ContextServices, n as Do, nn as TaskParams, nt as InterruptedError, o as FailureError, on as isTaggedThrowable, ot as UIO, p as Either, pn as Cond, pt as Context, q as ESMapType, qt as CancellationTokenSource, r as DoAsync, rn as TaskResult, rt as RIO, s as FailureErrorType, sn as NAME, st as Layer, t as $, tn as TaskOutcome, tt as IO, u as NoneError, un as Base, ut as LayerOutput, v as TypeCheckRight, vn as BoundedNumber, vt as Identity, w as FunctypeBase, wn as NonNegativeNumber, wt as TryKind, x as tryCatch, xn as ISO8601Date, xt as Kind, y as isLeft, yn as BoundedString, yt as EitherKind, z as createSerializer, zn as CollectionOps, zt as ErrorWithTaskInfo } from "./index-
|
|
3
|
-
import { a as isTypeable, c as Pipe, i as TypeableParams, l as Foldable, n as ExtractTag, o as Serializable, r as Typeable, s as SerializationMethods, t as Tuple, u as Type } from "./Tuple-
|
|
2
|
+
import { $ as TestClockTag, $t as TaskFailure, A as OptionConstructor, An as ValidatedBrand, At as ValidationRule, B as fromBinary, Bn as ContainerOps, Bt as TaskErrorInfo, C as Functype, Cn as NonEmptyString, Ct as OptionKind, D as List, Dn as PositiveNumber, Dt as FieldValidation, E as Collection, En as PositiveInteger, Et as FoldableUtils, F as Set, Fn as Applicative, Ft as TypedError, G as MatchableUtils, Gn as Doable, Gt as Async, H as fromYAML, Hn as Extractable, Ht as formatError, I as SerializationResult, In as AsyncMonad, It as TypedErrorContext, J as Map, Jt as Err, K as ESMap, Kn as ParseError, Kt as CancellationToken, L as createCustomSerializer, Ln as Functor, Lt as ErrorChainElement, M as Stack, Mn as Try, Mt as ErrorCode, N as Valuable, Nn as TypeNames, Nt as ErrorMessage, O as None, On as UUID, Ot as FormValidation, P as ValuableParams, Pn as Promisable, Pt as ErrorStatus, Q as TestClock, Qt as Task$1, R as createSerializationCompanion, Rn as Monad, Rt as ErrorFormatterOptions, S as tryCatchAsync, Sn as IntegerNumber, St as ListKind, T as FunctypeCollection, Tn as PatternString, Tt as UniversalContainer, U as Ref, Un as isExtractable, Ut as formatStackTrace, V as fromJSON, Vn as LazyList, Vt as createErrorSerializer, W as Matchable, Wn as DoResult, Wt as safeStringify, X as Traversable, Xt as Sync, Y as SafeTraversable, Yt as Ok, Z as Lazy, Zt as TaggedThrowable, _ as TypeCheckLeft, _n as Companion, _t as TagService, a as EmptyListError, an as createCancellationTokenSource, at as TimeoutError, b as isRight, bn as EmailAddress, bt as HKT, c as LeftError, cn as Throwable, ct as LayerError, d as isDoCapable, dn as Match, dt as Exit, en as TaskMetadata, et as TestContext, f as unwrap, fn as UntypedMatch, ft as ExitTag, g as TestEither, gn as isCompanion, gt as Tag, h as Right, hn as InstanceType, ht as HasService, i as DoGenerator, in as TaskSuccess, it as Task, j as Some, jn as ValidatedBrandCompanion, jt as Validator, k as Option, kn as UrlString, kt as Validation, l as LeftErrorType, ln as ThrowableType, lt as LayerInput, m as Left, mn as CompanionMethods, mt as ContextServices, n as Do, nn as TaskParams, nt as InterruptedError, o as FailureError, on as isTaggedThrowable, ot as UIO, p as Either, pn as Cond, pt as Context, q as ESMapType, qt as CancellationTokenSource, r as DoAsync, rn as TaskResult, rt as RIO, s as FailureErrorType, sn as NAME, st as Layer, t as $, tn as TaskOutcome, tt as IO, u as NoneError, un as Base, ut as LayerOutput, v as TypeCheckRight, vn as BoundedNumber, vt as Identity, w as FunctypeBase, wn as NonNegativeNumber, wt as TryKind, x as tryCatch, xn as ISO8601Date, xt as Kind, y as isLeft, yn as BoundedString, yt as EitherKind, z as createSerializer, zn as CollectionOps, zt as ErrorWithTaskInfo } from "./index-B5zYifBQ.js";
|
|
3
|
+
import { a as isTypeable, c as Pipe, i as TypeableParams, l as Foldable, n as ExtractTag, o as Serializable, r as Typeable, s as SerializationMethods, t as Tuple, u as Type } from "./Tuple-DwyoW0ZP.js";
|
|
4
4
|
export { $, Applicative, Async, AsyncMonad, Base, BoundedNumber, BoundedString, Brand, BrandedBoolean, BrandedBoolean as BrandedBooleanType, BrandedNumber, BrandedNumber as BrandedNumberType, BrandedString, BrandedString as BrandedStringType, CancellationToken, CancellationTokenSource, Collection, CollectionOps, Companion, CompanionMethods, Cond, ContainerOps, Context, Context as ContextType, ContextServices, Do, DoAsync, DoGenerator, DoResult, Doable, ESMap, ESMapType, Either, EitherKind, EmailAddress, EmptyListError, Err, ErrorChainElement, ErrorCode, ErrorFormatterOptions, ErrorMessage, ErrorStatus, ErrorWithTaskInfo, Exit, Exit as ExitType, ExitTag, ExtractBrand, ExtractTag, Extractable, FailureError, FailureErrorType, FieldValidation, Foldable, FoldableUtils, FormValidation, Functor, Functype, FunctypeBase, FunctypeCollection, HKT, HasService, IO, IO as IOType, Task as IOTask, ISO8601Date, Identity, InstanceType, IntegerNumber, InterruptedError, Kind, Layer, Layer as LayerType, LayerError, LayerInput, LayerOutput, Lazy, Lazy as LazyType, LazyList, Left, LeftError, LeftErrorType, List, ListKind, Map, Match, Matchable, MatchableUtils, Monad, NAME, NonEmptyString, NonNegativeNumber, None, NoneError, Ok, Option, OptionConstructor, OptionKind, ParseError, PatternString, Pipe, PositiveInteger, PositiveNumber, Promisable, RIO, Ref, Ref as RefType, Right, SafeTraversable, Serializable, SerializationMethods, SerializationResult, Set, Some, Stack, Sync, Tag, Tag as TagType, TagService, TaggedThrowable, Task$1 as Task, TaskErrorInfo, TaskFailure, TaskMetadata, TaskOutcome, TaskParams, TaskResult, TaskSuccess, TestClock, TestClock as TestClockType, TestClockTag, TestContext, TestContext as TestContextType, TestEither, Throwable, ThrowableType, TimeoutError, Traversable, Try, TryKind, Tuple, Type, TypeCheckLeft, TypeCheckRight, TypeNames, Typeable, TypeableParams, TypedError, TypedErrorContext, UIO, UUID, UniversalContainer, UntypedMatch, Unwrap, UrlString, ValidatedBrand, ValidatedBrand as ValidatedBrandType, ValidatedBrandCompanion, Validation, ValidationRule, Validator, Valuable, ValuableParams, createBrander, createCancellationTokenSource, createCustomSerializer, createErrorSerializer, createSerializationCompanion, createSerializer, formatError, formatStackTrace, fromBinary, fromJSON, fromYAML, hasBrand, isCompanion, isDoCapable, isExtractable, isLeft, isRight, isTaggedThrowable, isTypeable, safeStringify, tryCatch, tryCatchAsync, unwrap, unwrapBrand };
|
package/dist/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{Brand as e,BrandedBoolean as t,BrandedNumber as n,BrandedString as r,createBrander as i,hasBrand as a,unwrap as o}from"./branded/index.js";import{$ as s,A as c,At as l,B as u,C as d,Ct as f,D as p,Dt as m,E as h,Et as g,F as _,G as v,H as y,I as b,J as x,K as S,L as C,M as w,Mt as T,N as E,O as D,Ot as O,P as k,Q as A,R as j,S as M,St as N,T as P,Tt as F,U as I,V as L,W as R,X as z,Y as B,Z as V,_ as H,_t as U,a as W,at as G,b as K,bt as q,c as J,ct as Y,d as X,dt as Z,et as Q,f as $,ft as ee,g as te,gt as ne,h as re,ht as ie,i as ae,it as oe,j as se,jt as ce,k as le,kt as ue,l as de,lt as fe,m as pe,mt as me,n as he,nt as ge,o as _e,ot as ve,p as ye,pt as be,q as xe,r as Se,rt as Ce,s as we,st as Te,t as Ee,tt as De,u as Oe,ut as ke,v as Ae,vt as je,w as Me,wt as Ne,x as Pe,xt as Fe,y as Ie,yt as Le,z as Re}from"./src-
|
|
1
|
+
import{Brand as e,BrandedBoolean as t,BrandedNumber as n,BrandedString as r,createBrander as i,hasBrand as a,unwrap as o}from"./branded/index.js";import{$ as s,A as c,At as l,B as u,C as d,Ct as f,D as p,Dt as m,E as h,Et as g,F as _,G as v,H as y,I as b,J as x,K as S,L as C,M as w,Mt as T,N as E,O as D,Ot as O,P as k,Q as A,R as j,S as M,St as N,T as P,Tt as F,U as I,V as L,W as R,X as z,Y as B,Z as V,_ as H,_t as U,a as W,at as G,b as K,bt as q,c as J,ct as Y,d as X,dt as Z,et as Q,f as $,ft as ee,g as te,gt as ne,h as re,ht as ie,i as ae,it as oe,j as se,jt as ce,k as le,kt as ue,l as de,lt as fe,m as pe,mt as me,n as he,nt as ge,o as _e,ot as ve,p as ye,pt as be,q as xe,r as Se,rt as Ce,s as we,st as Te,t as Ee,tt as De,u as Oe,ut as ke,v as Ae,vt as je,w as Me,wt as Ne,x as Pe,xt as Fe,y as Ie,yt as Le,z as Re}from"./src-3rbFE_vI.js";import{r as ze,t as Be}from"./Tuple-DY00RBep.js";export{p as $,I as Base,xe as BoundedNumber,x as BoundedString,e as Brand,t as BrandedBoolean,n as BrandedNumber,r as BrandedString,ze as Companion,v as Cond,te as Context,D as Do,le as DoAsync,W as ESMap,ve as Either,B as EmailAddress,c as EmptyListError,b as Err,re as Exit,se as FailureError,Ie as FoldableUtils,Ae as HKT,$ as IO,z as ISO8601Date,H as Identity,V as IntegerNumber,ye as InterruptedError,X as Layer,_e as Lazy,Le as LazyList,Te as Left,w as LeftError,ie as List,ae as Map,R as Match,Se as MatchableUtils,L as NAME,A as NonEmptyString,s as NonNegativeNumber,N as None,E as NoneError,C as Ok,f as Option,Ne as OptionConstructor,T as ParseError,Q as PatternString,De as PositiveInteger,ge as PositiveNumber,q as Ref,Y as Right,Fe as Set,F as Some,he as Stack,Oe as Tag,j as Task,we as TestClock,J as TestClockTag,de as TestContext,y as Throwable,pe as TimeoutError,je as Try,Be as Tuple,fe as TypeCheckLeft,ke as TypeCheckRight,ne as Typeable,M as TypedError,Ce as UUID,oe as UrlString,G as ValidatedBrand,Pe as Validation,Ee as Valuable,i as createBrander,Re as createCancellationTokenSource,g as createCustomSerializer,d as createErrorSerializer,m as createSerializationCompanion,O as createSerializer,Me as formatError,P as formatStackTrace,ue as fromBinary,l as fromJSON,ce as fromYAML,a as hasBrand,S as isCompanion,k as isDoCapable,K as isExtractable,Z as isLeft,ee as isRight,u as isTaggedThrowable,U as isTypeable,h as safeStringify,be as tryCatch,me as tryCatchAsync,_ as unwrap,o as unwrapBrand};
|
package/dist/list/index.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { D as List } from "../index-
|
|
1
|
+
import { D as List } from "../index-B5zYifBQ.js";
|
|
2
2
|
export { List };
|
package/dist/list/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{ht as e}from"../src-
|
|
1
|
+
import{ht as e}from"../src-3rbFE_vI.js";export{e as List};
|
package/dist/map/index.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { J as Map, Y as SafeTraversable } from "../index-
|
|
1
|
+
import { J as Map, Y as SafeTraversable } from "../index-B5zYifBQ.js";
|
|
2
2
|
export { Map, SafeTraversable };
|
package/dist/map/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{i as e}from"../src-
|
|
1
|
+
import{i as e}from"../src-3rbFE_vI.js";export{e as Map};
|
package/dist/option/index.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { A as OptionConstructor, O as None, j as Some, k as Option } from "../index-
|
|
1
|
+
import { A as OptionConstructor, O as None, j as Some, k as Option } from "../index-B5zYifBQ.js";
|
|
2
2
|
export { None, Option, OptionConstructor, Some };
|
package/dist/option/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{Ct as e,St as t,Tt as n,wt as r}from"../src-
|
|
1
|
+
import{Ct as e,St as t,Tt as n,wt as r}from"../src-3rbFE_vI.js";export{t as None,e as Option,r as OptionConstructor,n as Some};
|
package/dist/set/index.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { F as Set } from "../index-
|
|
1
|
+
import { F as Set } from "../index-B5zYifBQ.js";
|
|
2
2
|
export { Set };
|
package/dist/set/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{xt as e}from"../src-
|
|
1
|
+
import{xt as e}from"../src-3rbFE_vI.js";export{e as Set};
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import{Brand as e}from"./branded/index.js";import{i as t,n,r,t as i}from"./Tuple-
|
|
1
|
+
import{Brand as e}from"./branded/index.js";import{i as t,n,r,t as i}from"./Tuple-DY00RBep.js";const a=e=>{let t=Error(e);return t.name=`ParseError`,t},o=(e,t)=>({toJSON:()=>JSON.stringify({_tag:e,value:t}),toYAML:()=>`_tag: ${e}\nvalue: ${n(t)}`,toBinary:()=>Buffer.from(JSON.stringify({_tag:e,value:t})).toString(`base64`)}),s=e=>({toJSON:()=>JSON.stringify(e),toYAML:()=>Object.entries(e).map(([e,t])=>`${e}: ${n(t)}`).join(`
|
|
2
2
|
`),toBinary:()=>Buffer.from(JSON.stringify(e)).toString(`base64`)}),c=(e,t)=>t(JSON.parse(e)),l=(e,t)=>{let n=e.split(`
|
|
3
3
|
`),r={};for(let e of n){let t=e.indexOf(`: `);if(t===-1)continue;let n=e.substring(0,t),i=e.substring(t+2);if(!i){r[n]=null;continue}try{r[n]=i===`null`?null:JSON.parse(i)}catch{r[n]=i}}return t(r)},u=(e,t)=>c(Buffer.from(e,`base64`).toString(),t),ee=e=>({fromJSON:t=>c(t,e),fromYAML:t=>l(t,e),fromBinary:t=>u(t,e)}),d=e=>({[Symbol.toStringTag]:`Option`,_tag:`Some`,value:e,isEmpty:!1,isSome(){return!0},isNone(){return!1},orElse:()=>e,orThrow:()=>e,or:t=>d(e),orNull:()=>e,orUndefined:()=>e,map:t=>d(t(e)),ap:t=>t._tag===`Some`&&t.value?d(t.value(e)):f,filter(t){return t(e)?d(e):f},count:t=>t(e)?1:0,find:t=>t(e)?d(e):f,exists:t=>t(e),forEach:t=>t(e),fold:(t,n)=>n(e),match:t=>t.Some(e),flatMap:t=>t(e),flatMapAsync:async t=>await t(e),reduce:t=>t(void 0,e),reduceRight:t=>t(void 0,e),foldLeft:t=>n=>n(t,e),foldRight:t=>n=>n(e,t),toList:()=>w([e]),contains:t=>t===e,size:1,toOption:()=>d(e),toEither:t=>T(e),toTry:()=>S(()=>e),toPromise:()=>Promise.resolve(e),toString:()=>`Some(${n(e)})`,toValue:()=>({_tag:`Some`,value:e}),pipe:t=>t(e),serialize:()=>o(`Some`,e),doUnwrap(){return{ok:!0,value:e}}}),f={[Symbol.toStringTag]:`Option`,_tag:`None`,value:void 0,isEmpty:!0,isSome(){return!1},isNone(){return!0},orElse:e=>e,orThrow(e){throw e??Error(`Cannot extract value from None`)},or:e=>e,orNull:()=>null,orUndefined:()=>void 0,map:e=>f,ap:e=>f,filter(e){return f},count:e=>0,find:e=>f,exists:e=>!1,forEach:e=>{},flatMap:e=>f,flatMapAsync:e=>Promise.resolve(f),reduce:()=>void 0,reduceRight:()=>void 0,fold:(e,t)=>e(),match:e=>e.None(),foldLeft:e=>()=>e,foldRight:e=>()=>e,toList:()=>w([]),contains:()=>!1,size:0,toOption:()=>f,toEither:e=>E(e),toTry:()=>S(()=>{throw Error(`None`)}),toPromise:()=>Promise.reject(Error(`Cannot convert None to Promise`)),toString:()=>`None`,toValue:()=>({_tag:`None`,value:void 0}),pipe:e=>e(void 0),serialize:()=>o(`None`,null),doUnwrap(){return{ok:!1,empty:!0}}},p=()=>f,te=e=>e==null?p():d(e),ne={from:e=>m(e),none:()=>p(),isSome:e=>e.isSome(),isNone:e=>e.isNone(),fromJSON:e=>{let t=JSON.parse(e);return t._tag===`Some`?d(t.value):p()},fromYAML:e=>{let t=e.split(`
|
|
4
|
-
`),n=t[0]?.split(`: `)[1],r=t[1]?.split(`: `)[1];if(!n||!r)return p();let i=r===`null`?null:JSON.parse(r);return n===`Some`?d(i):p()},fromBinary:e=>{let t=Buffer.from(e,`base64`).toString();return ne.fromJSON(t)}},m=r(te,ne),h=globalThis.Set,g=e=>{let t=new h(e),n={[Symbol.toStringTag]:`FunctypeSet`,_tag:`Set`,[Symbol.iterator]:()=>t[Symbol.iterator](),add:e=>g([...t,e]),remove:e=>{let n=new h(t);return n.delete(e),g(n)},contains:e=>t.has(e),has:e=>t.has(e),map:e=>g(Array.from(t).map(e)),ap:e=>{let n=new h;for(let r of t)for(let t of e)n.add(t(r));return g(n)},flatMap:e=>{let n=new h;for(let r of t)for(let t of e(r))n.add(t);return g(n)},flatMapAsync:async e=>{let n=new h;for(let r of t){let t=await e(r);for(let e of t)n.add(e)}return g(n)},fold:(e,n)=>{
|
|
5
|
-
`)[1]?.split(`: `)[1];return oe(t?JSON.parse(t):[])},fromBinary:e=>{let t=Buffer.from(e,`base64`).toString();return ae.fromJSON(t)}},oe=r(re,ae),se=e=>{let t=e;return{get(){return t},set(e){t=e},update(e){t=e(t)},getAndSet(e){let n=t;return t=e,n},updateAndGet(e){return t=e(t),t},getAndUpdate(e){let n=t;return t=e(t),n},compareAndSet(e,n){return t===e?(t=n,!0):!1},modify(e){let[n,r]=e(t);return t=n,r}}},_=r(se,{of:e=>se(e)}),v=(e=0)=>{let t=_(e),n=e;return{get:()=>t.get(),set:e=>t.set(e),increment:()=>t.updateAndGet(e=>e+1),decrement:()=>t.updateAndGet(e=>e-1),reset:()=>t.set(n),compareAndSet:(e,n)=>t.compareAndSet(e,n)}},ce=()=>{let e=_([]);return{add:t=>e.update(e=>[...e,t]),addAll:t=>e.update(e=>[...e,...t]),build:()=>e.get(),clear:()=>e.set([]),size:()=>e.get().length}},y=e=>{let t={[Symbol.toStringTag]:`LazyList`,_tag:`LazyList`,[Symbol.iterator]:()=>e[Symbol.iterator](),map:t=>y((function*(){for(let n of e)yield t(n)})()),flatMap:t=>y((function*(){for(let n of e)yield*t(n)})()),filter:t=>y((function*(){for(let n of e)t(n)&&(yield n)})()),take:t=>y((function*(){let n=v(0);for(let r of e){if(n.get()>=t)break;yield r,n.increment()}})()),drop:t=>y((function*(){let n=v(0);for(let r of e)n.get()>=t&&(yield r),n.increment()})()),takeWhile:t=>y((function*(){for(let n of e){if(!t(n))break;yield n}})()),dropWhile:t=>y((function*(){let n=_(!0);for(let r of e)n.get()&&t(r)||(n.set(!1),yield r)})()),concat:t=>y((function*(){yield*e,yield*t})()),zip:t=>y((function*(){let n=e[Symbol.iterator](),r=t[Symbol.iterator]();for(;;){let e=n.next(),t=r.next();if(e.done||t.done)break;yield[e.value,t.value]}})()),toList:()=>w(Array.from(e)),toArray:()=>Array.from(e),forEach:t=>{for(let n of e)t(n)},reduce:(t,n)=>{let r=_(n);for(let n of e)r.set(t(r.get(),n));return r.get()},find:t=>{for(let n of e)if(t(n))return m(n);return m.none()},some:t=>{for(let n of e)if(t(n))return!0;return!1},every:t=>{for(let n of e)if(!t(n))return!1;return!0},count:()=>{let t=v(0);for(let n of e)t.increment();return t.get()},get head(){let t=e[Symbol.iterator]().next();return t.done?void 0:t.value},get headOption(){let t=e[Symbol.iterator]().next();return t.done?m.none():m(t.value)},get last(){let t;for(let n of e)t=n;return t},get lastOption(){let t=_(void 0),n=_(!1);for(let r of e)t.set(r),n.set(!0);return n.get()?m(t.get()):m.none()},get tail(){return y((function*(){let t=e[Symbol.iterator]();t.next();let n=t.next();for(;!n.done;)yield n.value,n=t.next()})())},get init(){let t=Array.from(e);return y(t.length===0?[]:t.slice(0,-1))},takeRight:t=>{let n=Array.from(e);return y(t<=0?[]:n.slice(-t))},reverse:()=>y(Array.from(e).reverse()),distinct:()=>y((function*(){let t=new globalThis.Set;for(let n of e)t.has(n)||(t.add(n),yield n)})()),zipWithIndex:()=>y((function*(){let t=v(0);for(let n of e)yield[n,t.get()],t.increment()})()),fold:(t,n)=>{let r=e
|
|
6
|
-
`),n=t[0]?.split(`: `)[1];if(!n)return x(Error(`Invalid YAML format for Try`));if(n===`Success`){let e=t[1]?.split(`: `)[1];return e?b(JSON.parse(e)):x(Error(`Invalid YAML format for Try Success`))}else{let e=t[1]?.split(`: `)[1];if(!e)return x(Error(`Invalid YAML format for Try Failure`));let n=t[2]?.split(`: `),r=n&&n.length>1?n.slice(1).join(`: `):void 0,i=Error(e);return r&&(i.stack=r),x(i)}},fromBinary:e=>{let t=Buffer.from(e,`base64`).toString();return de.fromJSON(t)}},S=r(ue,de);function fe({_tag:e,impl:t}){return{...t,_tag:e}}function pe(e,t){return!e||typeof e!=`object`||!(`_tag`in e)?!1:t?e._tag===t:!0}const C=e=>{let t=Array.from(e??[]),r={[Symbol.toStringTag]:`List`,_tag:`List`,[Symbol.iterator]:()=>t[Symbol.iterator](),get size(){return t.length},get length(){return t.length},map:e=>C(t.map(e)),ap:e=>C(t.flatMap(t=>Array.from(e).map(e=>e(t)))),flatMap:e=>C(t.flatMap(t=>Array.from(e(t)))),flatMapAsync:async e=>C((await Promise.all(t.map(async t=>await e(t)))).flatMap(e=>Array.from(e))),forEach:e=>t.forEach(e),contains:e=>t.includes(e),count:e=>t.filter(e).length,exists:e=>t.some(e),filter:e=>C(t.filter(e)),filterNot:e=>C(t.filter(t=>!e(t))),filterType:e=>C(t.filter(t=>pe(t,e))),find:(e,n)=>m(t.find(t=>e(t)&&(n?pe(t,n):!0))),get head(){return t[0]},get headOption(){return t.length>0?m(t[0]):p()},get isEmpty(){return t.length===0},toArray:()=>[...t],reduce:e=>t.reduce(e),reduceRight:e=>t.reduceRight(e),fold:(e,n)=>
|
|
4
|
+
`),n=t[0]?.split(`: `)[1],r=t[1]?.split(`: `)[1];if(!n||!r)return p();let i=r===`null`?null:JSON.parse(r);return n===`Some`?d(i):p()},fromBinary:e=>{let t=Buffer.from(e,`base64`).toString();return ne.fromJSON(t)}},m=r(te,ne),h=globalThis.Set,g=e=>{let t=new h(e),n={[Symbol.toStringTag]:`FunctypeSet`,_tag:`Set`,[Symbol.iterator]:()=>t[Symbol.iterator](),add:e=>g([...t,e]),remove:e=>{let n=new h(t);return n.delete(e),g(n)},contains:e=>t.has(e),has:e=>t.has(e),map:e=>g(Array.from(t).map(e)),ap:e=>{let n=new h;for(let r of t)for(let t of e)n.add(t(r));return g(n)},flatMap:e=>{let n=new h;for(let r of t)for(let t of e(r))n.add(t);return g(n)},flatMapAsync:async e=>{let n=new h;for(let r of t){let t=await e(r);for(let e of t)n.add(e)}return g(n)},fold:(e,n)=>{let r=e;for(let e of t)r=n(r,e);return r},foldLeft:e=>n=>{let r=e;for(let e of t)r=n(r,e);return r},foldRight:e=>n=>Array.from(t).reduceRight((e,t)=>n(t,e),e),get size(){return t.size},get isEmpty(){return t.size===0},reduce:e=>{let n=Array.from(t);if(n.length===0)throw Error(`Cannot reduce empty Set`);return n.reduce(e)},reduceRight:e=>{let n=Array.from(t);if(n.length===0)throw Error(`Cannot reduceRight empty Set`);return n.reduceRight(e)},count:e=>{let n=0;for(let r of t)e(r)&&n++;return n},find:e=>{for(let n of t)if(e(n))return m(n);return m(null)},exists:e=>{for(let n of t)if(e(n))return!0;return!1},forEach:e=>{t.forEach(e)},filter:e=>{let n=new h;for(let r of t)e(r)&&n.add(r);return g(n)},filterNot:e=>{let n=new h;for(let r of t)e(r)||n.add(r);return g(n)},drop:e=>g(Array.from(t).slice(e)),dropRight:e=>g(Array.from(t).slice(0,-e)),dropWhile:e=>{let n=Array.from(t),r=n.findIndex(t=>!e(t));return g(r===-1?[]:n.slice(r))},flatten:()=>{let e=new h;for(let n of t)if(Array.isArray(n))for(let t of n)e.add(t);else if(n&&typeof n==`object`&&Symbol.iterator in n)for(let t of n)e.add(t);else e.add(n);return g(e)},get head(){return Array.from(t)[0]},get headOption(){let e=Array.from(t)[0];return m(e)},take:e=>g(Array.from(t).slice(0,Math.max(0,e))),takeWhile:e=>{let n=Array.from(t),r=[];for(let t of n){if(!e(t))break;r.push(t)}return g(r)},takeRight:e=>{let n=Array.from(t);return g(e<=0?[]:n.slice(-e))},get last(){let e=Array.from(t);return e[e.length-1]},get lastOption(){let e=Array.from(t);return m(e[e.length-1])},get tail(){return g(Array.from(t).slice(1))},get init(){let e=Array.from(t);return g(e.length===0?[]:e.slice(0,-1))},toList:()=>w(Array.from(t)),toSet:()=>n,toArray:()=>Array.from(t),toString:()=>`Set(${Array.from(t).toString()})`,toValue:()=>({_tag:`Set`,value:Array.from(t)}),pipe:e=>e(Array.from(t)),serialize:()=>o(`Set`,Array.from(t))};return n},re=e=>g(e),ie=g([]),ae={empty:()=>ie,of:(...e)=>g(e),fromJSON:e=>oe(JSON.parse(e).value),fromYAML:e=>{let t=e.split(`
|
|
5
|
+
`)[1]?.split(`: `)[1];return oe(t?JSON.parse(t):[])},fromBinary:e=>{let t=Buffer.from(e,`base64`).toString();return ae.fromJSON(t)}},oe=r(re,ae),se=e=>{let t=e;return{get(){return t},set(e){t=e},update(e){t=e(t)},getAndSet(e){let n=t;return t=e,n},updateAndGet(e){return t=e(t),t},getAndUpdate(e){let n=t;return t=e(t),n},compareAndSet(e,n){return t===e?(t=n,!0):!1},modify(e){let[n,r]=e(t);return t=n,r}}},_=r(se,{of:e=>se(e)}),v=(e=0)=>{let t=_(e),n=e;return{get:()=>t.get(),set:e=>t.set(e),increment:()=>t.updateAndGet(e=>e+1),decrement:()=>t.updateAndGet(e=>e-1),reset:()=>t.set(n),compareAndSet:(e,n)=>t.compareAndSet(e,n)}},ce=()=>{let e=_([]);return{add:t=>e.update(e=>[...e,t]),addAll:t=>e.update(e=>[...e,...t]),build:()=>e.get(),clear:()=>e.set([]),size:()=>e.get().length}},y=e=>{let t={[Symbol.toStringTag]:`LazyList`,_tag:`LazyList`,[Symbol.iterator]:()=>e[Symbol.iterator](),map:t=>y((function*(){for(let n of e)yield t(n)})()),flatMap:t=>y((function*(){for(let n of e)yield*t(n)})()),filter:t=>y((function*(){for(let n of e)t(n)&&(yield n)})()),take:t=>y((function*(){let n=v(0);for(let r of e){if(n.get()>=t)break;yield r,n.increment()}})()),drop:t=>y((function*(){let n=v(0);for(let r of e)n.get()>=t&&(yield r),n.increment()})()),takeWhile:t=>y((function*(){for(let n of e){if(!t(n))break;yield n}})()),dropWhile:t=>y((function*(){let n=_(!0);for(let r of e)n.get()&&t(r)||(n.set(!1),yield r)})()),concat:t=>y((function*(){yield*e,yield*t})()),zip:t=>y((function*(){let n=e[Symbol.iterator](),r=t[Symbol.iterator]();for(;;){let e=n.next(),t=r.next();if(e.done||t.done)break;yield[e.value,t.value]}})()),toList:()=>w(Array.from(e)),toArray:()=>Array.from(e),forEach:t=>{for(let n of e)t(n)},reduce:(t,n)=>{let r=_(n);for(let n of e)r.set(t(r.get(),n));return r.get()},find:t=>{for(let n of e)if(t(n))return m(n);return m.none()},some:t=>{for(let n of e)if(t(n))return!0;return!1},every:t=>{for(let n of e)if(!t(n))return!1;return!0},count:()=>{let t=v(0);for(let n of e)t.increment();return t.get()},get head(){let t=e[Symbol.iterator]().next();return t.done?void 0:t.value},get headOption(){let t=e[Symbol.iterator]().next();return t.done?m.none():m(t.value)},get last(){let t;for(let n of e)t=n;return t},get lastOption(){let t=_(void 0),n=_(!1);for(let r of e)t.set(r),n.set(!0);return n.get()?m(t.get()):m.none()},get tail(){return y((function*(){let t=e[Symbol.iterator]();t.next();let n=t.next();for(;!n.done;)yield n.value,n=t.next()})())},get init(){let t=Array.from(e);return y(t.length===0?[]:t.slice(0,-1))},takeRight:t=>{let n=Array.from(e);return y(t<=0?[]:n.slice(-t))},reverse:()=>y(Array.from(e).reverse()),distinct:()=>y((function*(){let t=new globalThis.Set;for(let n of e)t.has(n)||(t.add(n),yield n)})()),zipWithIndex:()=>y((function*(){let t=v(0);for(let n of e)yield[n,t.get()],t.increment()})()),fold:(t,n)=>{let r=t;for(let t of e)r=n(r,t);return r},foldLeft:t=>n=>{let r=_(t);for(let t of e)r.set(n(r.get(),t));return r.get()},foldRight:t=>n=>Array.from(e).reduceRight((e,t)=>n(t,e),t),pipe:e=>e(t),serialize:()=>{let t=Array.from(e);return{toJSON:()=>JSON.stringify({_tag:`LazyList`,value:t}),toYAML:()=>`_tag: LazyList\nvalue: ${n(t)}`,toBinary:()=>Buffer.from(JSON.stringify({_tag:`LazyList`,value:t})).toString(`base64`)}},toString:()=>{let t=[],n=v(0),r=_(!1);for(let i of e)if(n.get()<10)t.push(i),n.increment();else{r.set(!0);break}let i=t.map(e=>String(e)).join(`, `);return r.get()?`LazyList(${i}, ...)`:`LazyList(${i})`}};return t},le=r(e=>y(e),{empty:()=>y([]),of:e=>y([e]),from:(...e)=>y(e),iterate:(e,t)=>y((function*(){let n=_(e);for(;;)yield n.get(),n.set(t(n.get()))})()),generate:e=>y((function*(){for(;;)yield e()})()),range:(e,t,n=1)=>y((function*(){if(n===0)throw Error(`Step cannot be zero`);let r=_(e);if(n>0)for(;r.get()<t;)yield r.get(),r.set(r.get()+n);else for(;r.get()>t;)yield r.get(),r.set(r.get()+n)})()),repeat:(e,t)=>y((function*(){if(t===void 0)for(;;)yield e;else{let n=v(0);for(;n.get()<t;)yield e,n.increment()}})()),cycle:e=>y((function*(){let t=Array.from(e);if(t.length!==0)for(;;)yield*t})())}),b=e=>({[Symbol.toStringTag]:`Try`,_tag:`Success`,error:void 0,isSuccess(){return!0},isFailure(){return!1},orElse:t=>e,orThrow:t=>e,or:t=>b(e),orNull:()=>e,orUndefined:()=>e,toEither:t=>T(e),map:t=>S(()=>t(e)),ap:t=>t.map(t=>t(e)),flatMap:t=>t(e),flatMapAsync:async t=>t(e),fold:(t,n)=>n(e),match:t=>t.Success(e),recover:t=>b(e),recoverWith:t=>b(e),foldLeft:t=>n=>n(t,e),foldRight:t=>n=>n(e,t),toString:()=>`Success(${n(e)})`,toPromise:()=>Promise.resolve(e),toValue:()=>({_tag:`Success`,value:e}),toOption:()=>d(e),toList:()=>w([e]),toTry:()=>b(e),pipe:t=>t(e),serialize:()=>o(`Success`,e),get size(){return 1},get isEmpty(){return!1},contains:t=>e===t,reduce:t=>e,reduceRight:t=>e,count:t=>t(e)?1:0,find:t=>t(e)?m(e):m(void 0),exists:t=>t(e),forEach:t=>t(e),doUnwrap(){return{ok:!0,value:e}}}),x=e=>({[Symbol.toStringTag]:`Try`,_tag:`Failure`,error:e,isSuccess(){return!1},isFailure(){return!0},orElse:e=>e,orThrow:t=>{throw t??e},or:e=>e,orNull:()=>null,orUndefined:()=>void 0,toEither:t=>E(e),map:t=>x(e),ap:t=>x(e),flatMap:t=>x(e),flatMapAsync:t=>Promise.resolve(x(e)),fold:(t,n)=>t(e),match:t=>t.Failure(e),recover:t=>S(()=>t(e)),recoverWith:t=>{try{return t(e)}catch(e){return x(e instanceof Error?e:Error(String(e)))}},foldLeft:e=>t=>e,foldRight:e=>t=>e,toString:()=>`Failure(${n(e)}))`,toPromise:()=>Promise.reject(e),toValue:()=>({_tag:`Failure`,value:e}),toOption:()=>p(),toList:()=>w([]),toTry:()=>x(e),pipe:t=>{throw e},serialize:()=>s({_tag:`Failure`,error:e.message,stack:e.stack}),get size(){return 0},get isEmpty(){return!0},contains:e=>!1,reduce:e=>{throw Error(`Cannot reduce a Failure`)},reduceRight:e=>{throw Error(`Cannot reduceRight a Failure`)},count:e=>0,find:e=>m(null),exists:e=>!1,forEach:e=>{},doUnwrap(){return{ok:!1,empty:!1,error:e}}}),ue=e=>{try{return b(e())}catch(e){return x(e instanceof Error?e:Error(String(e)))}},de={success:e=>b(e),failure:e=>x(typeof e==`string`?Error(e):e),fromPromise:e=>e.then(e=>b(e)).catch(e=>x(e instanceof Error?e:Error(String(e)))),isSuccess:e=>e.isSuccess(),isFailure:e=>e.isFailure(),fromJSON:e=>{let t=JSON.parse(e);if(t._tag===`Success`)return b(t.value);{let e=Error(t.error);return t.stack&&(e.stack=t.stack),x(e)}},fromYAML:e=>{let t=e.split(`
|
|
6
|
+
`),n=t[0]?.split(`: `)[1];if(!n)return x(Error(`Invalid YAML format for Try`));if(n===`Success`){let e=t[1]?.split(`: `)[1];return e?b(JSON.parse(e)):x(Error(`Invalid YAML format for Try Success`))}else{let e=t[1]?.split(`: `)[1];if(!e)return x(Error(`Invalid YAML format for Try Failure`));let n=t[2]?.split(`: `),r=n&&n.length>1?n.slice(1).join(`: `):void 0,i=Error(e);return r&&(i.stack=r),x(i)}},fromBinary:e=>{let t=Buffer.from(e,`base64`).toString();return de.fromJSON(t)}},S=r(ue,de);function fe({_tag:e,impl:t}){return{...t,_tag:e}}function pe(e,t){return!e||typeof e!=`object`||!(`_tag`in e)?!1:t?e._tag===t:!0}const C=e=>{let t=Array.from(e??[]),r={[Symbol.toStringTag]:`List`,_tag:`List`,[Symbol.iterator]:()=>t[Symbol.iterator](),get size(){return t.length},get length(){return t.length},map:e=>C(t.map(e)),ap:e=>C(t.flatMap(t=>Array.from(e).map(e=>e(t)))),flatMap:e=>C(t.flatMap(t=>Array.from(e(t)))),flatMapAsync:async e=>C((await Promise.all(t.map(async t=>await e(t)))).flatMap(e=>Array.from(e))),forEach:e=>t.forEach(e),contains:e=>t.includes(e),count:e=>t.filter(e).length,exists:e=>t.some(e),filter:e=>C(t.filter(e)),filterNot:e=>C(t.filter(t=>!e(t))),filterType:e=>C(t.filter(t=>pe(t,e))),find:(e,n)=>m(t.find(t=>e(t)&&(n?pe(t,n):!0))),get head(){return t[0]},get headOption(){return t.length>0?m(t[0]):p()},get isEmpty(){return t.length===0},toArray:()=>[...t],reduce:e=>t.reduce(e),reduceRight:e=>t.reduceRight(e),fold:(e,n)=>t.reduce(n,e),foldLeft:e=>n=>t.reduce(n,e),foldRight:e=>n=>t.reduceRight((e,t)=>n(t,e),e),match:e=>t.length===0?e.Empty():e.NonEmpty([...t]),remove:e=>C(t.filter(t=>t!==e)),removeAt:e=>e<0||e>=t.length?r:C([...t.slice(0,e),...t.slice(e+1)]),add:e=>C([...t,e]),get:e=>m(t[e]),concat:e=>C([...t,...e.toArray()]),take:e=>C(t.slice(0,Math.max(0,e))),takeWhile:e=>{let n=[];for(let r of t){if(!e(r))break;n.push(r)}return C(n)},takeRight:e=>C(e<=0?[]:t.slice(-e)),get last(){return t[t.length-1]},get lastOption(){return t.length>0?m(t[t.length-1]):p()},get tail(){return C(t.slice(1))},get init(){return C(t.length===0?[]:t.slice(0,-1))},reverse:()=>C([...t].reverse()),indexOf:e=>t.indexOf(e),prepend:e=>C([e,...t]),distinct:()=>{let e=new globalThis.Set,n=[];for(let r of t)e.has(r)||(e.add(r),n.push(r));return C(n)},sorted:e=>C([...t].sort(e)),sortBy:(e,n)=>C([...t].sort((t,r)=>{let i=e(t),a=e(r);return n?n(i,a):i<a?-1:i>a?1:0})),zip:e=>{let n=e.toArray(),r=Math.min(t.length,n.length),i=[];for(let e=0;e<r;e++)i.push([t[e],n[e]]);return C(i)},zipWithIndex:()=>C(t.map((e,t)=>[e,t])),groupBy:e=>{let n=new globalThis.Map;for(let r of t){let t=e(r),i=n.get(t)??[];i.push(r),n.set(t,i)}let r=new globalThis.Map;for(let[e,t]of n)r.set(e,C(t));return r},partition:e=>{let n=[],r=[];for(let i of t)e(i)?n.push(i):r.push(i);return[C(n),C(r)]},span:e=>{let n=t.findIndex(t=>!e(t));return n===-1?[C([...t]),C([])]:[C(t.slice(0,n)),C(t.slice(n))]},slice:(e,n)=>C(t.slice(e,n)),drop:e=>C(t.slice(e)),dropRight:e=>C(t.slice(0,-e)),dropWhile:e=>C(t.slice(t.findIndex(t=>!e(t)))),flatten:()=>C(t.flatMap(e=>Array.isArray(e)?e:[e])),toList:()=>r,toSet:()=>oe(t),toOption:()=>t.length>0?m(t[0]):p(),toEither:e=>t.length>0?T(t[0]):E(e),toTry:()=>t.length>0?S(()=>t[0]):S(()=>{throw Error(`Empty list`)}),toString:()=>`List(${n(t)})`,toValue:()=>({_tag:`List`,value:t}),pipe:e=>e([...t]),serialize:()=>o(`List`,t),doUnwrap(){return t.length===0?{ok:!1,empty:!0}:{ok:!0,value:t[0]}}};return r},me=e=>C(e),he=C([]),ge={empty:()=>he,of:(...e)=>C(e),fromJSON:e=>w(JSON.parse(e).value),fromYAML:e=>{let t=e.split(`
|
|
7
7
|
`)[1]?.split(`: `)[1];return w(t?JSON.parse(t):[])},fromBinary:e=>{let t=Buffer.from(e,`base64`).toString();return ge.fromJSON(t)}},w=r(me,ge),_e=e=>({[Symbol.toStringTag]:`Either`,_tag:`Right`,value:e,isLeft(){return!1},isRight(){return!0},orElse:t=>e,orThrow:()=>e,or:t=>T(e),orNull:()=>e,orUndefined:()=>e,map:t=>T(t(e)),ap:t=>t._tag===`Right`?T(t.value(e)):E(t.value),mapAsync:t=>t(e).then(e=>T(e)).catch(e=>Promise.resolve(E(e))),merge:t=>t.isLeft()?E(t.value):T([e,t.value]),flatMap:t=>t(e),flatMapAsync:t=>t(e).catch(e=>E(e)),toOption:()=>d(e),toList:()=>w([e]),toEither:t=>T(e),toTry:()=>S(()=>e),toJSON(){return{_tag:`Right`,value:e}},toString:()=>`Right(${n(e)})`,*[Symbol.iterator](){yield e},*yield(){yield e},traverse:t=>{let n=t(e);return n.isLeft()?E(n.value):T([n.value])},*lazyMap(t){yield T(t(e))},tap:t=>(t(e),T(e)),tapLeft:t=>T(e),mapLeft:t=>T(e),bimap:(t,n)=>T(n(e)),fold:(t,n)=>n(e),foldLeft:t=>n=>n(t,e),foldRight:t=>n=>n(e,t),match:t=>t.Right(e),swap:()=>E(e),toPromise:()=>Promise.resolve(e),toValue:()=>({_tag:`Right`,value:e}),pipeEither:(t,n)=>n(e),pipe:t=>t(e),serialize:()=>o(`Right`,e),get size(){return 1},get isEmpty(){return!1},contains:t=>e===t,reduce:t=>e,reduceRight:t=>e,count:t=>t(e)?1:0,find:t=>t(e)?d(e):p(),exists:t=>t(e),forEach:t=>t(e),doUnwrap(){return{ok:!0,value:e}}}),ve=e=>({[Symbol.toStringTag]:`Either`,_tag:`Left`,value:e,isLeft(){return!0},isRight(){return!1},orElse:e=>e,orThrow:t=>{throw t??e},or:e=>e,orNull:()=>null,orUndefined:()=>void 0,map:t=>E(e),ap:t=>E(e),mapAsync:t=>Promise.resolve(E(e)),merge:t=>E(e),flatMap:t=>E(e),flatMapAsync:t=>Promise.resolve(E(e)),toOption:()=>p(),toList:()=>w(),toEither:e=>E(e),toTry:()=>S(()=>{throw Error(String(e))}),toJSON(){return{_tag:`Left`,value:e}},toString:()=>`Left(${n(e)})`,*[Symbol.iterator](){},*yield(){},traverse:t=>E(e),*lazyMap(t){yield E(e)},tap:t=>E(e),tapLeft:t=>(t(e),E(e)),mapLeft:t=>E(t(e)),bimap:(t,n)=>E(t(e)),fold:(t,n)=>t(e),foldLeft:e=>t=>e,foldRight:e=>t=>e,match:t=>t.Left(e),swap:()=>T(e),toPromise:()=>Promise.reject(e),toValue:()=>({_tag:`Left`,value:e}),pipeEither:(t,n)=>t(e),pipe:t=>t(e),serialize:()=>o(`Left`,e),get size(){return 0},get isEmpty(){return!0},contains:e=>!1,reduce:e=>{throw Error(`Cannot reduce a Left`)},reduceRight:e=>{throw Error(`Cannot reduceRight a Left`)},count:e=>0,find:e=>p(),exists:e=>!1,forEach:e=>{},doUnwrap(){return{ok:!1,empty:!1,error:e}}}),T=e=>_e(e),E=e=>ve(e),ye=e=>e.isRight(),be=e=>e.isLeft(),xe=(e,t)=>{try{return T(e())}catch(e){return E(t(e))}},Se=e=>_e(e);console.assert(Se);const Ce=e=>ve(e);console.assert(Ce);const we=async(e,t)=>{try{return T(await e())}catch(e){return E(t(e))}},Te=(e,t)=>t?T(e):E(e),Ee={left:e=>E(e),right:e=>T(e),isRight:e=>e.isRight(),isLeft:e=>e.isLeft(),sequence:e=>e.reduce((e,t)=>e.isLeft()?e:t.isLeft()?E(t.value):e.map(e=>[...e,t.value]),T([])),traverse:(e,t)=>Ee.sequence(e.map(t)),fromNullable:(e,t)=>e==null?E(t):T(e),fromPredicate:(e,t,n)=>t(e)?T(e):E(n),ap:(e,t)=>e.flatMap(e=>t.map(e)),fromPromise:async(e,t)=>{try{return T(await e)}catch(e){return E(t(e))}},fromJSON:e=>{let t=JSON.parse(e);return t._tag===`Right`?T(t.value):E(t.value)},fromYAML:e=>{let t=e.split(`
|
|
8
8
|
`),n=t[0]?.split(`: `)[1],r=t[1]?.split(`: `)[1];if(!n||!r)throw Error(`Invalid YAML format for Either`);let i=JSON.parse(r);return n===`Right`?T(i):E(i)},fromBinary:e=>{let t=Buffer.from(e,`base64`).toString();return Ee.fromJSON(t)}},De=r(Te,Ee);function D(t,n){return{brand:t,validate:n,of:r=>n(r)?m(e(t,r)):m.none(),from:r=>n(r)?T(e(t,r)):E(`Invalid ${t}: validation failed`),unsafeOf:r=>{if(!n(r))throw Error(`Invalid ${t}: validation failed`);return e(t,r)},is:e=>{try{return n(e)}catch{return!1}},unwrap:e=>e,refine:(e,t)=>D(e,e=>n(e)&&t(e))}}const Oe=D(`PositiveNumber`,e=>e>0),ke=D(`NonNegativeNumber`,e=>e>=0),Ae=D(`IntegerNumber`,e=>Number.isInteger(e)),je=Oe.refine(`PositiveInteger`,e=>Number.isInteger(e)),Me=D(`NonEmptyString`,e=>e.length>0),Ne=D(`EmailAddress`,e=>/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(e)),Pe=D(`UrlString`,e=>{try{return new URL(e),!0}catch{return!1}}),Fe=D(`UUID`,e=>/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i.test(e)),Ie=D(`ISO8601Date`,e=>!isNaN(Date.parse(e))&&/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}/.test(e));function Le(e,t,n){return D(e,e=>e>=t&&e<=n)}function Re(e,t,n){return D(e,e=>e.length>=t&&e.length<=n)}function ze(e,t){return D(e,e=>t.test(e))}const Be=e=>typeof e==`function`&&Object.keys(e).length>0,Ve=e=>{let t=e=>typeof e==`function`?e():e,n={when:(r,i)=>e.resolved?n:r?Ve({resolved:!0,value:t(i)}):n,elseWhen:(r,i)=>e.resolved?n:r?Ve({resolved:!0,value:t(i)}):n,else:n=>e.resolved?e.value:t(n),orThrow:()=>{if(!e.resolved)throw Error(`Conditional expression has no matching condition`);return e.value}};return n},He=()=>Ve({resolved:!1}),Ue=r(He,{of:()=>He(),match:e=>t=>{let n=t[e];if(n===void 0)throw Error(`No case defined for value: ${String(e)}`);return typeof n==`function`?n():n},lazy:()=>{let e={resolved:!1},t={when:(n,r)=>(e.resolved||n()&&(e.resolved=!0,e.value=r()),t),elseWhen:(n,r)=>(e.resolved||n()&&(e.resolved=!0,e.value=r()),t),else:t=>e.resolved?e.value:t()};return t}}),O=(e,t)=>t===e?!0:typeof t==`function`?t(e):t&&typeof t==`object`&&`_`in t?t._(e):typeof t==`object`&&t&&typeof e==`object`&&e?Object.entries(t).every(([t,n])=>{let r=e[t];return O(r,n)}):!1,k=e=>{let t=(e,t)=>typeof e==`function`?e(t):e,n=()=>{for(let{pattern:n,result:r}of e.patterns)if(O(e.value,n))return{matched:!0,result:t(r,e.value)};return{matched:!1}},r={case:(n,i)=>e.resolved?r:O(e.value,n)?k({value:e.value,resolved:!0,result:t(i,e.value),patterns:[]}):k({...e,patterns:[...e.patterns,{pattern:n,result:i}]}),caseValue:(t,n)=>{if(e.resolved)return r;if(e.value===t){let t=typeof n==`function`?n():n;return k({value:e.value,resolved:!0,result:t,patterns:[]})}return r},caseValues:(t,n)=>{if(e.resolved)return r;if(t.includes(e.value)){let t=typeof n==`function`?n():n;return k({value:e.value,resolved:!0,result:t,patterns:[]})}return r},when:(e,t)=>r.case(e,t),caseAny:(n,i)=>{if(e.resolved)return r;for(let r of n)if(O(e.value,r))return k({value:e.value,resolved:!0,result:t(i,e.value),patterns:[]});return k({...e,patterns:[...e.patterns,...n.map(e=>({pattern:e,result:i}))]})},default:n=>e.resolved?e.result:t(n,e.value),exhaustive:()=>{if(e.resolved)return e.result;let t=n();if(!t.matched)throw Error(`Non-exhaustive match. No pattern matched value: ${JSON.stringify(e.value)}`);return t.result},orThrow:t=>{if(e.resolved)return e.result;let r=n();if(!r.matched)throw Error(t??`No matching pattern for value: ${JSON.stringify(e.value)}`);return r.result},toOption:()=>{if(e.resolved)return m(e.result);let t=n();return t.matched?m(t.result):m.none()}};return r},We=e=>{let t=(e,t)=>typeof e==`function`?e(t):e;return{case:(n,r)=>{let i={value:e,resolved:!1,patterns:[{pattern:n,result:r}]};return O(e,n)?k({...i,resolved:!0,result:t(r,e)}):k(i)},caseValue:(t,n)=>k(e===t?{value:e,resolved:!0,result:typeof n==`function`?n():n,patterns:[]}:{value:e,resolved:!1,patterns:[]}),caseValues:(t,n)=>t.includes(e)?k({value:e,resolved:!0,result:typeof n==`function`?n():n,patterns:[]}):k({value:e,resolved:!1,patterns:[]}),when:(n,r)=>{let i={value:e,resolved:!1,patterns:[{pattern:n,result:r}]};return n(e)?k({...i,resolved:!0,result:t(r,e)}):k(i)},caseAny:(n,r)=>{for(let i of n)if(O(e,i))return k({value:e,resolved:!0,result:t(r,e),patterns:n.map(e=>({pattern:e,result:r}))});return k({value:e,resolved:!1,patterns:n.map(e=>({pattern:e,result:r}))})}}},Ge=r(e=>We(e),{exhaustive:e=>t=>{let n=e[t];if(n===void 0)throw Error(`No case defined for value: ${String(t)}`);return n},partial:e=>({withDefault:t=>n=>{let r=e[n];return r===void 0?typeof t==`function`?t(n):t:typeof r==`function`?r(n):r}}),withGuards:e=>({withDefault:t=>n=>{for(let[t,r]of e)if(t(n))return typeof r==`function`?r(n):r;return typeof t==`function`?t(n):t}}),struct:()=>{let e=[],t={case:(n,r)=>(e.push({pattern:n,handler:r}),t),build:()=>t=>{for(let{pattern:n,handler:r}of e)if(O(t,n))return r(t);throw Error(`No matching pattern for value: ${JSON.stringify(t)}`)}};return t},builder:()=>{let e=[],t,n={case:(t,r)=>(e.push({pattern:t,result:r}),n),when:(t,r)=>(e.push({pattern:t,result:r}),n),default:n=>(t=n,{build:()=>n=>{for(let{pattern:t,result:r}of e)if(O(n,t))return typeof r==`function`?r(n):r;if(t!==void 0)return typeof t==`function`?t(n):t;throw Error(`No matching pattern for value: ${JSON.stringify(n)}`)}})};return n}});function Ke(e,t){return{...fe({_tag:e,impl:t}),toString(){return`${e}()`},doUnwrap(){if(`isSome`in t&&`isNone`in t){if(typeof t.isSome==`function`&&t.isSome()&&`get`in t&&typeof t.get==`function`)return{ok:!0,value:t.get()};if(typeof t.isNone==`function`&&t.isNone())return{ok:!1,empty:!0}}if(`isLeft`in t&&`isRight`in t){if(typeof t.isRight==`function`&&t.isRight()&&`value`in t)return{ok:!0,value:t.value};if(typeof t.isLeft==`function`&&t.isLeft()&&`value`in t)return{ok:!1,empty:!1,error:t.value}}if(`isSuccess`in t&&`isFailure`in t){if(typeof t.isSuccess==`function`&&t.isSuccess()&&`get`in t&&typeof t.get==`function`)return{ok:!0,value:t.get()};if(typeof t.isFailure==`function`&&t.isFailure()&&`getError`in t&&typeof t.getError==`function`)return{ok:!1,empty:!1,error:t.getError()}}if(`isEmpty`in t&&`head`in t){if(typeof t.isEmpty==`function`&&t.isEmpty())return{ok:!1,empty:!0};if(typeof t.head==`function`)return{ok:!0,value:t.head()};if(`head`in t)return{ok:!0,value:t.head}}return{ok:!0,value:t}}}}const qe=`Throwable`;var Je=class e extends Error{constructor(e,t){super(e,{cause:t?.cause}),this._tag=qe,this.name=t?.taskInfo?.name??`Throwable`,Object.defineProperties(this,{_tag:{value:qe,writable:!1,configurable:!1},data:{value:t?.data,writable:!1,configurable:!1},taskInfo:{value:t?.taskInfo,writable:!1,configurable:!1},name:{value:t?.taskInfo?.name??`Throwable`,writable:!1,configurable:!1}}),t?.cause&&Object.defineProperty(this,`cause`,{value:t.cause,writable:!1,configurable:!1}),t?.stack?this.stack=t.stack:Error.captureStackTrace&&Error.captureStackTrace(this,this.constructor)}static apply(t,n,r){if(t instanceof Error){let i=new e(t.message,{data:n,cause:t.cause??void 0,stack:t.stack??void 0,taskInfo:r});for(let e of Object.keys(t))if(!(e in i)){let n=i;n[e]=t[e]}return i}if(t&&typeof t==`object`){let i=t,a=new e(typeof i.message==`string`?i.message:typeof i.error==`string`?i.error:`Object error: ${JSON.stringify(i,Object.getOwnPropertyNames(i).filter(e=>i[e]!==void 0))}`,{data:n??i,taskInfo:r});for(let e of Object.keys(i))if(!(e in a)){let t=a;t[e]=i[e]}return a}if(typeof t==`function`){let i=t.name??`anonymous function`,a=t.toString().substring(0,100)+(t.toString().length>100?`...`:``);return new e(`Function error: ${i}`,{data:n??{functionType:typeof t,functionName:i,functionString:a},taskInfo:r})}let i=typeof t,a=t===null?`null`:t===void 0?`undefined`:String(t);if(i===`number`){let a=t;return new e(Number.isNaN(a)?`Number error: NaN`:Number.isFinite(a)?`Number error: ${a}`:`Number error: ${a>0?`Infinity`:`-Infinity`}`,{data:n??{errorType:i,errorValue:a,originalError:t},taskInfo:r})}if(i===`bigint`)return new e(`BigInt error: ${t}n`,{data:n??{errorType:i,errorValue:String(t),originalError:t},taskInfo:r});if(i===`boolean`)return new e(`Boolean error: ${t}`,{data:n??{errorType:i,errorValue:t,originalError:t},taskInfo:r});if(i===`symbol`){let a=t.description??`unnamed symbol`;return new e(`Symbol error: Symbol(${a})`,{data:n??{errorType:i,symbolDescription:a,originalError:t},taskInfo:r})}return new e(typeof t==`string`?t:`${i.charAt(0).toUpperCase()+i.slice(1)} error: ${a}`,{data:n??{errorType:i,errorValue:a,originalError:t},taskInfo:r})}};function Ye(e){return e instanceof Error&&typeof e==`object`&&e._tag===`Throwable`}const Xe=(e,t)=>{if(e.isRight())return j(e.orThrow(),t);if(e.isLeft())return A(e.fold(e=>e,()=>Error(`Unexpected right value`)),void 0,t);throw Error(`Unrecognized task outcome`)},A=(e,t,r)=>{let i={name:r?.name??`Task`,description:r?.description??``},a=Je.apply(e,t,i),o={...Ke(`Err`,{error:a,meta:i}),[Symbol.toStringTag]:`TaskOutcome`,_tag:`Err`,_meta:i,value:void 0,error:a,isSuccess(){return!1},isFailure(){return!0},isOk(){return!1},isErr(){return!0},map:e=>A(a,t,r),flatMap:e=>A(a,t,r),ap:e=>A(a,t,r),mapAsync:e=>Promise.resolve(A(a,t,r)),flatMapAsync:e=>Promise.resolve(A(a,t,r)),mapError:e=>A(e(a),t,r),recover:e=>j(e,r),recoverWith:e=>j(e(a),r),orThrow:e=>{throw e??a},orElse:e=>e,or:e=>e,orNull:()=>null,orUndefined:()=>void 0,toEither:()=>E(a),toTry:()=>S(()=>{throw a}),toOption:()=>p(),toList:()=>w([]),fold:(e,t)=>e(a),match:e=>e.Err(a),foldLeft:e=>t=>e,foldRight:e=>t=>e,size:0,isEmpty:!0,contains:e=>!1,reduce:e=>{throw Error(`Cannot reduce empty Err`)},reduceRight:e=>{throw Error(`Cannot reduceRight empty Err`)},count:e=>0,find:e=>p(),exists:e=>!1,forEach:e=>{},toPromise:()=>Promise.reject(a),doUnwrap(){return{ok:!1,empty:!1,error:a}},serialize:()=>({toJSON:()=>n({_tag:`Err`,error:a.message??a.toString()})??`{}`,toYAML:()=>`_tag: Err\nerror: ${a.message??a.toString()}`,toBinary:()=>Buffer.from(JSON.stringify({_tag:`Err`,error:a.message??a.toString()})).toString(`base64`)}),pipe:e=>e(o)};return o},j=(e,t)=>{let r={name:t?.name??`Task`,description:t?.description??``},i={...Ke(`Ok`,{value:e,meta:r}),[Symbol.toStringTag]:`TaskOutcome`,_tag:`Ok`,_meta:r,value:e,error:void 0,isSuccess(){return!0},isFailure(){return!1},isOk(){return!0},isErr(){return!1},map:n=>j(n(e),t),flatMap:n=>{let r=n(e);return r&&typeof r==`object`&&`isLeft`in r&&`isRight`in r?Xe(r,t):r},ap:n=>n.isOk()?j(n.value(e),t):A(n.error,void 0,t),mapAsync:async n=>j(await n(e),t),flatMapAsync:async t=>await t(e),mapError:n=>j(e,t),recover:n=>j(e,t),recoverWith:n=>j(e,t),orThrow:t=>e,orElse:t=>e,or:n=>j(e,t),orNull:()=>e,orUndefined:()=>e,toEither:()=>T(e),toTry:()=>S(()=>e),toOption:()=>d(e),toList:()=>w([e]),fold:(t,n)=>n(e),match:t=>t.Ok(e),foldLeft:t=>n=>n(t,e),foldRight:t=>n=>n(e,t),size:1,isEmpty:!1,contains:t=>e===t,reduce:t=>e,reduceRight:t=>e,count:t=>t(e)?1:0,find:t=>t(e)?d(e):p(),exists:t=>t(e),forEach:t=>t(e),toPromise:()=>Promise.resolve(e),doUnwrap(){return{ok:!0,value:e}},serialize:()=>({toJSON:()=>n({_tag:`Ok`,value:e})??`{}`,toYAML:()=>`_tag: Ok\nvalue: ${n(e)??`undefined`}`,toBinary:()=>Buffer.from(JSON.stringify({_tag:`Ok`,value:e})).toString(`base64`)}),pipe:e=>e(i)};return i},Ze=()=>{let e=new AbortController,t=ce();return{token:{get isCancelled(){return e.signal.aborted},get signal(){return e.signal},onCancel(n){e.signal.aborted?n():t.add(n)}},cancel(){e.signal.aborted||(e.abort(),t.build().forEach(e=>{try{e()}catch(e){console.error(`Error in cancellation callback:`,e)}}))}}},Qe=e=>{let t=e?.name??`Task`,n=e?.description??``,r={Async:(e,r=e=>e,i=()=>{},a)=>new Promise(o=>{(async()=>{let s=_(!1),c=_(null),l=_(()=>{});if(a){if(a.isCancelled){try{await i()}catch(e){o(A(e,void 0,{name:t,description:n}));return}o(A(Error(`Task was cancelled before execution started`),void 0,{name:t,description:n}));return}a.onCancel(()=>{s.set(!0),c.set(Error(`Task was cancelled during execution`))}),l.set(()=>{})}try{let r=await e();try{await i()}catch(e){o(A(e,void 0,{name:t,description:n}));return}if(s.get()){c.get()?o(A(c.get(),void 0,{name:t,description:n})):o(A(Error(`Task was cancelled during execution`),void 0,{name:t,description:n}));return}if(r&&typeof r==`object`&&`_tag`in r){let e=r;e._tag===`Ok`||e._tag===`Err`?o(e):o(j(r,{name:t,description:n}))}else o(j(r,{name:t,description:n}))}catch(e){try{await i()}catch(e){o(A(e,void 0,{name:t,description:n}));return}if(s.get()){c.get()?o(A(c.get(),void 0,{name:t,description:n})):o(A(Error(`Task was cancelled during execution`),void 0,{name:t,description:n}));return}try{if(e instanceof Error&&Ye(e)){let i=Error(`${t}: ${e.message}`),a=Je.apply(i,void 0,{name:t,description:n});Object.defineProperty(a,`cause`,{value:e,writable:!1,configurable:!1}),Promise.resolve().then(()=>{try{r(e)}catch(e){console.error(`Error in error handler:`,e)}}),o(A(a,void 0,{name:t,description:n}))}else{let i=await r(e);if(i&&typeof i==`object`&&`_tag`in i){let e=i;e._tag===`Ok`||e._tag===`Err`?o(e):o(A(i,void 0,{name:t,description:n}))}else o(A(i,void 0,{name:t,description:n}))}}catch(e){o(A(e,void 0,{name:t,description:n}))}}finally{l.get()()}})().catch(e=>o(A(e,void 0,{name:t,description:n})))}),Sync:(e,r=e=>e,i=()=>{})=>{try{return j(e(),{name:t,description:n})}catch(e){return A(r(e),void 0,{name:t,description:n})}finally{i()}},AsyncWithProgress:(e,t,n=e=>e,i=()=>{},a)=>{let o=e=>{let n=Math.max(0,Math.min(100,e));n<=100&&t(n)};return r.Async(()=>e(o),n,i,a)}};return{...Ke(`Task`,r),_type:`Task`}},$e={success:(e,t)=>j(e,t),fail:(e,t,n)=>A(e,t,n),ok:(e,t)=>j(e,t),err:(e,t,n)=>A(e,t,n),fromEither:(e,t)=>Xe(e,t),fromTry:(e,t)=>e.isSuccess()?j(e.orThrow(),t):A(e.fold(e=>e,()=>Error(`Unexpected success`)),void 0,t),getErrorChain:e=>{if(!e)return[];let t=ce();t.add(e);let n=_(e);for(;n.get()&&n.get().cause;){let{cause:e}=n.get();if(e)t.add(e),n.set(e);else break;if(t.size()>100)break}return t.build()},formatErrorChain:(e,t)=>{let n=$e.getErrorChain(e),r=t?.separator??`
|
|
9
9
|
`;return n.map((e,n)=>{if(!e)return`${n>0?`↳ `:``}Unknown error`;let{taskInfo:r}=e,i=t?.includeTasks&&r?.name?`[${r.name}] `:``,a=e.message??`No message`,o=_(`${n>0?`↳ `:``}${i}${a}`);return t?.includeStackTrace&&e.stack&&o.set(`${o.get()}\n${e.stack.split(`
|
|
@@ -14,6 +14,6 @@ import{Brand as e}from"./branded/index.js";import{i as t,n,r,t as i}from"./Tuple
|
|
|
14
14
|
`)}function ht(e,t){let n={...ft,...t},r=e instanceof Error?e:Je.apply(e),i=M?.getErrorChain?M.getErrorChain(r):[r],a=`${n.colors?`\x1b[31m${n.title}:\x1b[0m ${r.message}`:`${n.title}: ${r.message}`}\n\n${i.map((e,t)=>{let r=` `.repeat(t),i=t>0?`↳ `:``,{taskInfo:a}=e,o=`${r}${i}${n.includeTasks&&a?.name?n.colors?`\x1b[36m[${a.name}]\x1b[0m `:`[${a.name}] `:``}${e.message}`;if(n.includeStackTrace&&e.stack){let t=mt(e.stack).split(`
|
|
15
15
|
`).slice(1),i=n.maxStackFrames??ft.maxStackFrames??3,a=t.slice(0,i).map(e=>`${r} ${n.colors?`\x1B[90m`:``}${e}${n.colors?`\x1B[0m`:``}`).join(`
|
|
16
16
|
`);o+=`\n${a}`,t.length>i&&(o+=`\n${r} ${n.colors?`\x1B[90m`:``}...${t.length-i} more stack frames${n.colors?`\x1B[0m`:``}`)}return o}).join(n.separator)}`;if(n.includeData){let{data:e}=r;if(e){let t=n.colors?`\n\n\x1b[33mContext:\x1b[0m\n${pt(e)}`:`\n\nContext:\n${pt(e)}`;a+=t}}return a}function gt(){return function(e){if(!e)return e;let t=e instanceof Error?e:Error(String(e)),n={message:t.message,name:t.name||`Error`,stack:t.stack?mt(t.stack):void 0};if(t.taskInfo&&(n.taskInfo=t.taskInfo),t.data&&(n.data=t.data),typeof M?.getErrorChain==`function`)try{let e=M.getErrorChain(t);e.length>1&&(n.errorChain=M.formatErrorChain(t,{includeTasks:!0}),n.structuredErrorChain=e.map(e=>({message:e.message,name:e.name,taskInfo:e.taskInfo,stack:e.stack?mt(e.stack):void 0})))}catch{}return Object.getOwnPropertyNames(t).forEach(e=>{n[e]||(n[e]=t[e])}),n}}const N=(e,n,r,i)=>t(Je.apply(n,r,{name:e,description:n}),{code:e,message:n,status:_t(e),context:r,timestamp:new Date().toISOString(),traceId:i?.traceId}),_t=e=>({VALIDATION_FAILED:400,BAD_REQUEST:400,AUTH_REQUIRED:401,PERMISSION_DENIED:403,NOT_FOUND:404,TIMEOUT:408,CONFLICT:409,RATE_LIMITED:429,INTERNAL_ERROR:500,NETWORK_ERROR:503})[e],P=Object.assign(N,{validation:(e,t,n)=>N(`VALIDATION_FAILED`,`Validation failed: ${e} ${n}`,{field:e,value:t,rule:n}),network:(e,t,n)=>N(`NETWORK_ERROR`,`Network error: ${t} ${e}${n?` (${n})`:``}`,{url:e,method:t,statusCode:n}),auth:(e,t)=>N(`AUTH_REQUIRED`,`Authentication required: ${e}${t?` (role: ${t})`:``}`,{resource:e,requiredRole:t}),notFound:(e,t)=>N(`NOT_FOUND`,`Not found: ${e} with id ${t}`,{resource:e,id:t}),permission:(e,t,n)=>N(`PERMISSION_DENIED`,`Permission denied: cannot ${e} ${t}`,{action:e,resource:t,userId:n}),rateLimit:(e,t,n)=>N(`RATE_LIMITED`,`Rate limit exceeded: ${e} requests per ${t}`,{limit:e,window:t,retryAfter:n}),internal:e=>N(`INTERNAL_ERROR`,`Internal server error: ${e}`,{errorId:e,timestamp:new Date().toISOString()}),badRequest:(e,t)=>N(`BAD_REQUEST`,`Bad request: ${e}`,{reason:e,expected:t}),conflict:(e,t)=>N(`CONFLICT`,`Conflict: ${e} already exists with value ${t}`,{resource:e,conflictingValue:t}),timeout:(e,t)=>N(`TIMEOUT`,`Request timeout: ${t} exceeded ${e}ms`,{duration:e,operation:t}),isTypedError:e=>typeof e==`object`&&!!e&&`code`in e&&`message`in e&&`status`in e&&`context`in e&&`_tag`in e&&e._tag===`Throwable`,hasCode:(e,t)=>e.code===t}),F={rule:e=>t=>{if(e===`email`)return typeof t!=`string`||!/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(t)?E(P.validation(`value`,t,`must be a valid email`)):T(t);if(e===`url`)try{return new URL(String(t)),T(t)}catch{return E(P.validation(`value`,t,`must be a valid URL`))}if(e===`uuid`)return typeof t!=`string`||!/^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i.test(t)?E(P.validation(`value`,t,`must be a valid UUID`)):T(t);if(e===`required`)return t==null||t===``?E(P.validation(`value`,t,`is required`)):T(t);if(e===`numeric`)return typeof t!=`number`&&!/^\d+$/.test(String(t))?E(P.validation(`value`,t,`must be numeric`)):T(t);if(e===`alpha`)return typeof t!=`string`||!/^[a-zA-Z]+$/.test(t)?E(P.validation(`value`,t,`must contain only letters`)):T(t);if(e===`alphanumeric`)return typeof t!=`string`||!/^[a-zA-Z0-9]+$/.test(t)?E(P.validation(`value`,t,`must be alphanumeric`)):T(t);if(e.startsWith(`min:`)){let n=Number(e.split(`:`)[1]),r=Number(t);return isNaN(r)||r<n?E(P.validation(`value`,t,`must be at least ${n}`)):T(t)}if(e.startsWith(`max:`)){let n=Number(e.split(`:`)[1]),r=Number(t);return isNaN(r)||r>n?E(P.validation(`value`,t,`must be at most ${n}`)):T(t)}if(e.startsWith(`minLength:`)){let n=Number(e.split(`:`)[1]);return String(t).length<n?E(P.validation(`value`,t,`must be at least ${n} characters`)):T(t)}if(e.startsWith(`maxLength:`)){let n=Number(e.split(`:`)[1]);return String(t).length>n?E(P.validation(`value`,t,`must be at most ${n} characters`)):T(t)}if(e.startsWith(`pattern:`)){let n=e.substring(8);return new RegExp(n).test(String(t))?T(t):E(P.validation(`value`,t,`must match pattern ${n}`))}if(e.startsWith(`in:`)){let n=e.substring(3).split(`,`);return n.includes(String(t))?T(t):E(P.validation(`value`,t,`must be one of: ${n.join(`, `)}`))}if(e.startsWith(`notIn:`)){let n=e.substring(6).split(`,`);return n.includes(String(t))?E(P.validation(`value`,t,`must not be one of: ${n.join(`, `)}`)):T(t)}if(e===`date`){let e=new Date(String(t));return isNaN(e.getTime())?E(P.validation(`value`,t,`must be a valid date`)):T(t)}if(e===`future`){let e=new Date(String(t));return isNaN(e.getTime())||e<=new Date?E(P.validation(`value`,t,`must be a future date`)):T(t)}if(e===`past`){let e=new Date(String(t));return isNaN(e.getTime())||e>=new Date?E(P.validation(`value`,t,`must be a past date`)):T(t)}return T(t)},combine:(...e)=>t=>{for(let n of e){let e=n(t);if(e.isLeft())return e}return T(t)},custom:(e,t)=>n=>e(n)?T(n):E(P.validation(`value`,n,t)),form:(e,t)=>{let n=[],r={};for(let[i,a]of Object.entries(e)){let e=t[i],o=a(e);if(o.isLeft()){let t=o.fold(e=>e,()=>{throw Error(`Should not be left`)}),r=P.validation(i,e,t.context.rule);n.push(r)}else r[i]=o.orThrow()}return n.length>0?E(w(n)):T(r)}},vt={...F,validators:{email:F.rule(`email`),url:F.rule(`url`),uuid:F.rule(`uuid`),required:F.rule(`required`),numeric:F.rule(`numeric`),positiveNumber:F.combine(F.rule(`numeric`),F.rule(`min:0`)),nonEmptyString:F.combine(F.rule(`required`),F.custom(e=>typeof e==`string`&&e.trim().length>0,`must not be empty`))}},yt=t(F.rule,vt);function bt(e){return typeof e==`object`&&!!e&&`orThrow`in e&&typeof e.orThrow==`function`}function xt(e){return bt(e)&&`orElse`in e&&typeof e.orElse==`function`&&`or`in e&&typeof e.or==`function`&&`orNull`in e&&typeof e.orNull==`function`&&`orUndefined`in e&&typeof e.orUndefined==`function`}const St={toOption:e=>e.fold(()=>p(),e=>d(e)),toList:e=>e.fold(()=>w([]),e=>w([e])),toEither:(e,t)=>e.fold(()=>E(t),e=>T(e)),isEmpty:e=>e.fold(()=>!0,()=>!1),size:e=>e.fold(()=>0,()=>1)},I=e=>typeof e==`object`&&!!e&&(e._tag===`Some`||e._tag===`None`),L=e=>typeof e==`object`&&!!e&&e._tag===`List`,Ct=e=>typeof e==`object`&&!!e&&(e._tag===`Left`||e._tag===`Right`),wt=e=>typeof e==`object`&&!!e&&(e._tag===`Success`||e._tag===`Failure`),R=()=>{let e=(e,t)=>{if(I(e)||L(e)||Ct(e)||wt(e))return e.map(e=>t(e));throw Error(`Unsupported functor type: ${JSON.stringify(e)}`)},t=e=>{if(I(e))return e.orThrow();if(L(e)){let t=e.toArray();if(t.length>0&&L(t[0])){let e=[];for(let n of t)L(n)&&e.push(...n.toArray());return w(e)}return e.flatten()}if(Ct(e))return e.isRight()?e.fold(()=>null,e=>e):e;if(wt(e))return e.isSuccess()?e.orThrow():e;throw Error(`Unsupported functor type for flatten: ${JSON.stringify(e)}`)},n=(e,t)=>{if(I(e)||L(e)||Ct(e)||wt(e))return e.flatMap(e=>t(e));throw Error(`Unsupported functor type for flatMap: ${JSON.stringify(e)}`)},r=(e,t)=>{if(I(e)&&I(t)||L(e)&&L(t)||Ct(e)&&Ct(t)||wt(e)&&wt(t))return e.flatMap(e=>t.map(t=>e(t)));throw Error(`Unsupported functor type for ap: ${JSON.stringify(e)}`)},i=e=>{if(I(e)){let t=e;if(t.isEmpty)return w([m.none()]);let n=t.orThrow();if(L(n))return n.map(e=>m(e));throw Error(`Unsupported inner container type for sequence`)}if(L(e)){let t=e.toArray();if(t.length===0)return m.none();let n=t[0];if(I(n)){for(let e of t)if(e.isEmpty)return m.none();return m(w(t.map(e=>e.orThrow())))}throw Error(`Unsupported inner container type for sequence`)}throw Error(`Unsupported outer container type for sequence: ${JSON.stringify(e)}`)};return{_tag:`HKT`,map:e,flatten:t,flatMap:n,ap:r,sequence:i,traverse:(t,n)=>i(e(t,e=>n(e))),_type:`HKT`}},Tt=R();R.map=(e,t)=>Tt.map(e,t),R.flatten=e=>Tt.flatten(e),R.flatMap=(e,t)=>Tt.flatMap(e,t),R.ap=(e,t)=>Tt.ap(e,t),R.sequence=e=>Tt.sequence(e),R.traverse=(e,t)=>Tt.traverse(e,t),R.isOption=I,R.isList=L,R.isEither=Ct,R.isTry=wt;const Et=e=>({id:e,isSame:t=>t.id===e}),Dt=r(Et,{of:e=>Et(e),pure:e=>Et(e)}),Ot=e=>({_tag:`Context`,services:e,get(t){let n=e.get(t.id);return n===void 0?p():d(n)},unsafeGet(t){let n=e.get(t.id);if(n===void 0)throw Error(`Service not found: ${t.id}`);return n},has(t){return e.has(t.id)},add(t,n){let r=new Map(e);return r.set(t.id,n),Ot(r)},merge(t){let n=new Map(e);for(let[e,r]of t.services)n.set(e,r);return Ot(n)},get size(){return e.size},toString(){return`Context(${Array.from(e.keys()).join(`, `)})`}}),z={empty:()=>Ot(new Map),make:(e,t)=>{let n=new Map;return n.set(e.id,t),Ot(n)},isContext:e=>typeof e==`object`&&!!e&&e._tag===`Context`},B=e=>({[Symbol.toStringTag]:`Exit`,_tag:`Success`,isSuccess(){return!0},isFailure(){return!1},isInterrupted(){return!1},map(t){return B(t(e))},mapError(t){return B(e)},mapBoth(t,n){return B(n(e))},flatMap(t){return t(e)},fold(t,n,r){return n(e)},match(t){return t.Success(e)},orThrow(){return e},orElse(t){return e},toOption(){return d(e)},toEither(){return T(e)},toValue(){return{_tag:`Success`,value:e}},toString(){return`Exit.Success(${n(e)})`},toJSON(){return{_tag:`Success`,value:e}}}),kt=e=>({[Symbol.toStringTag]:`Exit`,_tag:`Failure`,isSuccess(){return!1},isFailure(){return!0},isInterrupted(){return!1},map(t){return kt(e)},mapError(t){return kt(t(e))},mapBoth(t,n){return kt(t(e))},flatMap(t){return kt(e)},fold(t,n,r){return t(e)},match(t){return t.Failure(e)},orThrow(){throw e},orElse(e){return e},toOption(){return p()},toEither(){return E(e)},toValue(){return{_tag:`Failure`,error:e}},toString(){return`Exit.Failure(${n(e)})`},toJSON(){return{_tag:`Failure`,error:e}}}),At=e=>({[Symbol.toStringTag]:`Exit`,_tag:`Interrupted`,isSuccess(){return!1},isFailure(){return!1},isInterrupted(){return!0},map(t){return At(e)},mapError(t){return At(e)},mapBoth(t,n){return At(e)},flatMap(t){return At(e)},fold(t,n,r){if(r)return r(e);throw Error(`Effect was interrupted: ${e}`)},match(t){return t.Interrupted(e)},orThrow(){throw Error(`Effect was interrupted: ${e}`)},orElse(e){return e},toOption(){return p()},toEither(){throw Error(`Cannot convert Interrupted Exit to Either: ${e}`)},toValue(){return{_tag:`Interrupted`,fiberId:e}},toString(){return`Exit.Interrupted(${e})`},toJSON(){return{_tag:`Interrupted`,fiberId:e}}}),V=r(e=>B(e),{succeed:e=>B(e),fail:e=>kt(e),interrupt:e=>At(e),interrupted:()=>At(`interrupted`),isSuccess:e=>e.isSuccess(),isFailure:e=>e.isFailure(),isInterrupted:e=>e.isInterrupted(),fromEither:e=>e.isRight()?B(e.value):kt(e.value),fromOption:(e,t)=>e.isSome()?B(e.value):kt(t()),zip:(e,t)=>e.isInterrupted()?e:t.isInterrupted()?t:e.isFailure()?e:t.isFailure()?t:B([e.orThrow(),t.orThrow()]),all:e=>{let t=[];for(let n of e){if(n.isInterrupted()||n.isFailure())return n;t.push(n.orThrow())}return B(t)}}),H=e=>e;var jt=class extends Error{constructor(e,t){super(t??`Effect timed out after ${e}ms`),this.duration=e,this._tag=`TimeoutError`,this.name=`TimeoutError`}},Mt=class extends Error{constructor(e){super(e??`Effect was interrupted`),this._tag=`InterruptedError`,this.name=`InterruptedError`}};const U=e=>{let t={[Symbol.toStringTag]:`IO`,_effect:e,map(e){return U(H({_tag:`Map`,effect:t,f:e}))},flatMap(e){return U(H({_tag:`FlatMap`,effect:t,f:e}))},tap(e){return t.map(t=>(e(t),t))},tapEffect(e){return t.flatMap(t=>e(t).map(()=>t))},mapError(e){return U(H({_tag:`MapError`,effect:t,f:e}))},tapError(e){return t.mapError(t=>(e(t),t))},recover(e){return U(H({_tag:`Recover`,effect:t,fallback:e}))},recoverWith(e){return U(H({_tag:`RecoverWith`,effect:t,f:e}))},fold(e,n){return U(H({_tag:`Fold`,effect:t,onFailure:e,onSuccess:n}))},match(e){return t.fold(e.failure,e.success)},catchTag(e,n){return U(H({_tag:`RecoverWith`,effect:t,f:t=>typeof t==`object`&&t&&`_tag`in t&&t._tag===e?H(n(t)):H(K.fail(t))}))},catchAll(e){return t.recoverWith(e)},retry(e){return e<=0?t:t.recoverWith(()=>t.retry(e-1))},retryWithDelay(e,n){return e<=0?t:t.recoverWith(()=>K.sleep(n).flatMap(()=>t.retryWithDelay(e-1,n)))},zipRight(e){return t.flatMap(()=>e)},zipLeft(e){return t.flatMap(t=>e.map(()=>t))},zip(e){return t.flatMap(t=>e.map(e=>[t,e]))},flatten(){return this.flatMap(e=>e)},provideContext(e){return U(H({_tag:`ProvideContext`,effect:t,context:e}))},provideService(e,n){return U(H({_tag:`ProvideContext`,effect:t,context:z.make(e,n)}))},provideLayer(e){return H(H(K.async(async()=>{let t=z.empty();return await e.build(H(t))})).flatMap(e=>U(H({_tag:`ProvideContext`,effect:t,context:e}))))},async run(){let e=await G(this._effect);return e.isSuccess()?T(e.orThrow()):E(e.isFailure()?e.toValue().error:new Mt)},async runOrThrow(){let e=await G(this._effect);if(e.isSuccess())return e.orThrow();throw e.isFailure()?e.toValue().error:new Mt},runSync(){try{return T(W(this._effect))}catch(e){return E(e)}},runSyncOrThrow(){return W(this._effect)},async runExit(){return G(this._effect)},async runOption(){let e=await G(this._effect);return e.isSuccess()?d(e.orThrow()):p()},async runTry(){let e=await G(this._effect);if(e.isSuccess())return H(S(()=>e.orThrow()));let t=e.isFailure()?e.toValue().error:Error(`Effect was interrupted`);return H(S(()=>{throw t}))},pipe(e){return e(t)},delay(e){return H(K.async(()=>new Promise(t=>setTimeout(t,e))).flatMap(()=>t))},timeout(e){return U(H({_tag:`Timeout`,effect:t,duration:e}))},timeoutTo(e,n){return H(t.timeout(e).recover(H(n)))},toString(){return`IO(${n(e._tag)})`},toJSON(){return{_tag:`IO`,effect:e._tag}},*[Symbol.iterator](){return yield t}};return t},W=(e,t=z.empty())=>{switch(e._tag){case`Succeed`:return e.value;case`Fail`:throw e.error;case`Die`:throw e.defect;case`Sync`:return e.thunk();case`Async`:throw Error(`Cannot run async effect synchronously`);case`Auto`:{let t=e.thunk();if(t instanceof Promise)throw Error(`Cannot run async effect synchronously`);return t}case`Map`:{let n=W(e.effect._effect,t);return e.f(n)}case`FlatMap`:{let n=W(e.effect._effect,t);return W(e.f(n)._effect,t)}case`MapError`:try{return W(e.effect._effect,t)}catch(t){throw e.f(t)}case`Recover`:try{return W(e.effect._effect,t)}catch{return e.fallback}case`RecoverWith`:try{return W(e.effect._effect,t)}catch(n){return W(e.f(n)._effect,t)}case`Fold`:try{let n=W(e.effect._effect,t);return e.onSuccess(n)}catch(t){return e.onFailure(t)}case`Service`:{let n=t.get(e.tag);if(n.isNone())throw Error(`Service not found: ${e.tag.id}`);return n.orThrow()}case`ProvideContext`:{let n=t.merge(e.context);return W(e.effect._effect,n)}case`Interrupt`:throw new Mt;case`Bracket`:{let n=W(e.acquire._effect,t);try{return W(e.use(n)._effect,t)}finally{W(e.release(n)._effect,t)}}case`Race`:throw Error(`Cannot run race effect synchronously`);case`Timeout`:throw Error(`Cannot run timeout effect synchronously`)}},G=async(e,t=z.empty())=>{try{switch(e._tag){case`Succeed`:return H(V.succeed(e.value));case`Fail`:return H(V.fail(e.error));case`Die`:throw e.defect;case`Sync`:return H(V.succeed(e.thunk()));case`Async`:{let t=await e.thunk();return H(V.succeed(t))}case`Auto`:{let t=e.thunk();return t instanceof Promise?H(V.succeed(await t)):H(V.succeed(t))}case`Map`:{let n=await G(e.effect._effect,t);return n.isSuccess()?H(V.succeed(e.f(n.orThrow()))):H(n)}case`FlatMap`:{let n=await G(e.effect._effect,t);return n.isSuccess()?G(e.f(n.orThrow())._effect,t):H(n)}case`MapError`:{let n=await G(e.effect._effect,t);return n.isSuccess()?H(n):n.isFailure()?H(V.fail(e.f(n.toValue().error))):H(n)}case`Recover`:{let n=await G(e.effect._effect,t);return n.isSuccess()?n:V.succeed(e.fallback)}case`RecoverWith`:{let n=await G(e.effect._effect,t);return n.isSuccess()?n:n.isFailure()?G(e.f(n.toValue().error)._effect,t):n}case`Fold`:{let n=await G(e.effect._effect,t);return n.isSuccess()?V.succeed(e.onSuccess(n.orThrow())):n.isFailure()?V.succeed(e.onFailure(n.toValue().error)):n}case`Service`:{let n=t.get(e.tag);return n.isNone()?V.fail(Error(`Service not found: ${e.tag.id}`)):V.succeed(n.orThrow())}case`ProvideContext`:{let n=t.merge(e.context);return G(e.effect._effect,n)}case`Interrupt`:return V.interrupted();case`Bracket`:{let n=await G(e.acquire._effect,t);if(!n.isSuccess())return n;let r=n.orThrow();try{return await G(e.use(r)._effect,t)}finally{await G(e.release(r)._effect,t)}}case`Race`:return e.effects.length===0?V.fail(Error(`No effects to race`)):await Promise.race(e.effects.map(e=>G(e._effect,t)));case`Timeout`:{let n=new Promise(t=>setTimeout(()=>t(V.fail(new jt(e.duration))),e.duration)),r=G(e.effect._effect,t);return Promise.race([r,n])}}}catch(e){return V.fail(e)}},K={sync:e=>U({_tag:`Sync`,thunk:e}),succeed:e=>U({_tag:`Succeed`,value:e}),fail:e=>U({_tag:`Fail`,error:e}),die:e=>U({_tag:`Die`,defect:e}),async:e=>U(H({_tag:`Async`,thunk:e})),tryPromise:e=>U({_tag:`Async`,thunk:e.try}).mapError(e.catch),tryCatch:(e,t)=>K.sync(()=>{try{return e()}catch(e){throw t(e)}}),liftSync:e=>(...t)=>K.sync(()=>e(...t)),liftPromise:e=>(...t)=>K.async(()=>e(...t)),fromEither:e=>H(e.isRight()?K.succeed(e.value):K.fail(e.value)),fromOption:e=>H(e.isSome()?K.succeed(e.value):K.fail(void 0)),fromOptionOrFail:(e,t)=>H(e.isSome()?K.succeed(e.value):K.fail(t())),fromTry:e=>H(e.isSuccess()?K.succeed(e.orThrow()):K.fail(e.error)),fromResult:e=>H(e.error?K.fail(e.error):K.succeed(m(e.data))),tryAsync:(e,t,n)=>n?.aborted?H(K.fail(t(n.reason??new DOMException(`Aborted`,`AbortError`)))):K.async(()=>e(n)).mapError(t),asyncResult:(e,t,n)=>{let r=n?.dataKey??`data`,i=n?.errorKey??`error`;return K.tryAsync(t=>e(t),t,n?.signal).flatMap(e=>K.fromResult({data:e[r],error:e[i]}))},service:e=>U({_tag:`Service`,tag:e}),serviceWith:(e,t)=>K.service(e).map(t),serviceWithIO:(e,t)=>K.service(e).flatMap(t),withServices:(e,t)=>{let n=Object.entries(e);if(n.length===0)return H(U({_tag:`Auto`,thunk:()=>t({})}));let r=H(K.succeed({}));return H(n.reduce((e,[t,n])=>H(e.flatMap(e=>K.service(n).map(n=>({...e,[t]:n})))),r).flatMap(e=>U({_tag:`Auto`,thunk:()=>t(e)})))},all:e=>{if(e.length===0)return H(K.succeed([]));let t=H(K.succeed([]));return H(e.reduce((e,t)=>e.flatMap(e=>t.map(t=>[...e,t])),t))},firstSuccessOf:e=>e.length===0?H(K.fail(Error(`No effects provided`))):e.reduce((e,t)=>e.recoverWith(()=>t)),sleep:e=>H(K.async(()=>new Promise(t=>setTimeout(t,e)))),never:()=>H(K.async(()=>new Promise(()=>{}))),get unit(){return H(U({_tag:`Succeed`,value:void 0}))},fromNullable:e=>H(e==null?K.fail(void 0):K.succeed(e)),interrupt:()=>U({_tag:`Interrupt`}),bracket:(e,t,n)=>U({_tag:`Bracket`,acquire:e,use:t,release:n}),acquireRelease:(e,t,n)=>K.bracket(e,t,n),race:e=>U({_tag:`Race`,effects:e}),any:e=>e.length===0?H(K.fail(Error(`No effects provided`))):e.reduce((e,t)=>e.recoverWith(()=>t)),forEach:(e,t)=>{if(e.length===0)return H(K.succeed([]));let n=H(K.succeed([]));return H(e.reduce((e,n)=>e.flatMap(e=>t(n).map(t=>[...e,t])),n))},forEachPar:(e,t)=>K.forEach(e,t),timeout:(e,t)=>U(H({_tag:`Timeout`,effect:e,duration:t})),gen:e=>H(K.sync(()=>{let t=e(),n=e=>{let r=t.next(e);return r.done?H(K.succeed(r.value)):H(r.value.flatMap(e=>n(e)))};return n(void 0)}).flatMap(e=>e)),get Do(){return Nt(K.succeed({}))}},Nt=e=>({effect:e,bind(t,n){return Nt(e.flatMap(e=>n(e).map(n=>({...e,[t]:n}))))},let(t,n){return Nt(e.map(e=>({...e,[t]:n(e)})))},map(t){return e.map(t)},flatMap(t){return e.flatMap(t)},tap(t){return Nt(e.tap(t))},tapEffect(t){return Nt(e.tapEffect(t))},done(){return e}}),q=r(e=>U(H({_tag:`Auto`,thunk:e})),K),J=(e,t)=>({_tag:`Layer`,build:e,provideToAndMerge(t){return J(async n=>{let r=await e(n),i=n.merge(r),a=await t.build(i);return r.merge(a)})},merge(t){return J(async n=>{let[r,i]=await Promise.all([e(n),t.build(n)]);return r.merge(i)})},map(t){return J(async n=>t(await e(n)))},toString(){return`Layer(${t??`anonymous`})`}}),Pt={succeed:(e,t)=>J(()=>Promise.resolve(z.make(e,t)),e.id),effect:(e,t)=>J(async()=>{let n=await t();return z.make(e,n)},e.id),sync:(e,t)=>J(()=>Promise.resolve(z.make(e,t())),e.id),fromService:(e,t,n)=>J(r=>{let i=r.unsafeGet(t);return Promise.resolve(z.make(e,n(i)))},e.id),fromServiceEffect:(e,t,n)=>J(async r=>{let i=await n(r.unsafeGet(t));return z.make(e,i)},e.id),fromContext:e=>J(()=>Promise.resolve(e)),empty:()=>J(()=>Promise.resolve(z.empty()),`empty`),mergeAll:(...e)=>J(async t=>(await Promise.all(e.map(e=>e.build(t)))).reduce((e,t)=>e.merge(t),z.empty()))},Ft=e=>({id:e,_tag:`Tag`,toString(){return`Tag(${e})`}}),It=()=>{let e=0,t=[],n=async()=>{for(t.sort((e,t)=>e.time-t.time);t.length>0&&t[0]!==void 0&&t[0].time<=e;){let e=t.shift();e&&(e.resolve(),await Promise.resolve())}};return{get currentTime(){return e},async advance(t){e+=t,await n()},async setTime(t){e=t,await n()},async runAll(){if(t.length>0){let n=t[t.length-1];n&&(e=n.time)}await n()},get pendingCount(){return t.length},sleep(n){return new Promise(r=>{t.push({time:e+n,resolve:r})})}}},Y=Ft(`TestClock`),Lt={make:It,tag:Y,test:async e=>e(It()),get:q.service(Y),advance:e=>q.serviceWithIO(Y,t=>q.async(()=>t.advance(e))),setTime:e=>q.serviceWithIO(Y,t=>q.async(()=>t.setTime(e))),runAll:q.serviceWithIO(Y,e=>q.async(()=>e.runAll())),context:()=>{let e=It();return{clock:e,context:z.make(Y,e)}}},Rt={make:()=>{let e=It(),t=z.empty(),n={get context(){return t},get clock(){return e},withService(e,r){return t=t.add(e,r),n},async run(e){return e.provideContext(t).runOrThrow()}};return n},withClock:()=>{let e=It();return Rt.make().withService(Y,e)}},X=e=>{let t=!1,r,i,a=!1,o=()=>{if(!t)try{r=e(),t=!0}catch(e){throw i=e,a=!0,t=!0,e}if(a)throw i;return r};return{[Symbol.toStringTag]:`Lazy`,_tag:`Lazy`,get isEvaluated(){return t},orElse:e=>{try{return o()}catch{return e}},orNull:()=>{try{return o()}catch{return null}},orThrow:e=>{try{return o()}catch(t){throw e??t}},or:e=>Z(()=>{try{return o()}catch{return e.orThrow()}}),orUndefined:()=>{try{return o()}catch{return}},map:e=>Z(()=>e(o())),ap:e=>Z(()=>e.orThrow()(o())),mapAsync:async e=>{let t=await e(o());return Z(()=>t)},flatMap:e=>Z(()=>e(o()).orThrow()),flatMapAsync:async e=>{let t=await e(o());return Z(()=>t.orThrow())},filter:e=>Z(()=>{let t=o();return e(t)?d(t):p}),recover:e=>Z(()=>{try{return o()}catch(t){return e(t)}}),recoverWith:e=>Z(()=>{try{return o()}catch(t){return e(t).orThrow()}}),toOption:()=>{try{return d(o())}catch{return p}},toEither:()=>{try{return T(o())}catch(e){return E(e)}},toEitherWith:e=>{try{return T(o())}catch(t){return E(e(t))}},toTry:()=>S(()=>o()),tap:e=>Z(()=>{let t=o();return e(t),t}),tapError:e=>Z(()=>{try{return o()}catch(t){throw e(t),t}}),fold:e=>e(o()),foldWith:(e,t)=>{try{return t(o())}catch(t){return e(t)}},foldLeft:e=>t=>t(e,o()),foldRight:e=>t=>t(o(),e),match:e=>e.Lazy(o()),toString:()=>t&&!a?`Lazy(${n(r)})`:t&&a?`Lazy(<error: ${i instanceof Error?i.message:String(i)}>)`:`Lazy(<not evaluated>)`,toValue:()=>t&&!a?{_tag:`Lazy`,evaluated:!0,value:r}:{_tag:`Lazy`,evaluated:!1},get size(){try{return o(),1}catch{return 0}},get isEmpty(){try{return o(),!1}catch{return!0}},contains:e=>{try{return o()===e}catch{return!1}},reduce:e=>o(),reduceRight:e=>o(),count:e=>{try{return e(o())?1:0}catch{return 0}},find:e=>{try{let t=o();return e(t)?d(t):p}catch{return p}},exists:e=>{try{return e(o())}catch{return!1}},forEach:e=>{try{e(o())}catch{}},pipe:e=>e(o()),serialize:()=>({toJSON:()=>JSON.stringify(t&&!a?{_tag:`Lazy`,evaluated:!0,value:r}:{_tag:`Lazy`,evaluated:!1}),toYAML:()=>t&&!a?`_tag: Lazy\nevaluated: true\nvalue: ${n(r)}`:`_tag: Lazy
|
|
17
|
-
evaluated: false`,toBinary:()=>Buffer.from(JSON.stringify(t&&!a?{_tag:`Lazy`,evaluated:!0,value:r}:{_tag:`Lazy`,evaluated:!1})).toString(`base64`)}),typeable:`Lazy`}},Z=r(X,{of:e=>X(e),fromValue:e=>X(()=>e),fromOption:(e,t)=>X(()=>e._tag===`Some`?e.value:t()),fromTry:e=>X(()=>e.orThrow()),fromEither:e=>X(()=>e.fold(e=>{throw e},e=>e)),fromPromise:e=>X(()=>{throw Error(`Promise not yet resolved. Use await on the promise before creating Lazy.`)}),fail:e=>X(()=>{throw e})}),zt=Map,Q=e=>{let t={values:new zt(e)},n=()=>Array.from(t.values.entries()).map(([e,t])=>i([e,t])),r=e=>Q(new zt(t.values).set(e.toArray()[0],e.toArray()[1]).entries()),a=e=>{let n=new zt(t.values);return n.delete(e)?Q(n.entries()):Q(t.values.entries())},s=e=>{let n=e.toArray();return t.values.get(n[0])===n[1]},c=()=>t.values.size,l=e=>Q(Array.from(t.values.entries()).map(([t,n])=>[t,e(n)])),u=e=>Q(Q(t.values.entries()).toList().flatMap(e).toArray()),ee=e=>{let n=[];for(let[r,i]of t.values.entries()){let t=e.get(r);t._tag===`Some`&&t.value&&n.push([r,t.value(i)])}return Q(n)},d=async e=>{let n=new zt;for(let[r,i]of t.values.entries()){let t=await e(i);for(let e of t.toList()){let[t,r]=e.toArray();n.set(t,r)}}return Q(n.entries())},f=e=>w(n()).reduce(e),p=e=>w(n()).reduceRight(e),te=e=>t=>w(n()).foldLeft(e)(t),ne=e=>t=>w(n()).foldRight(e)(t),h=e=>m(t.values.get(e)),g=(e,n)=>m(t.values.get(e)).orElse(n),re=()=>t.values.size===0,ie=(e,n)=>m(t.values.get(e)).or(n),ae=(e,t)=>
|
|
18
|
-
`)[1]?.split(`: `)[1];return Ut(t?JSON.parse(t):[])},fromBinary:e=>{let t=Buffer.from(e,`base64`).toString();return Ht.fromJSON(t)}},Ut=r(Bt,Ht),Wt={default:e=>t=>e(t),when:(e,t)=>n=>e(n)?t(n):void 0},$=(e=[])=>{let t=[...e],r=()=>t.length,i=()=>t.length===0,a=e=>t.includes(e),o=e=>{if(t.length===0)throw Error(`Cannot reduce an empty stack`);return t.reduce(e)},s=e=>{if(t.length===0)throw Error(`Cannot reduce an empty stack`);return t.reduceRight(e)},c=e=>$([...t,e]),l=()=>{if(i())return[$([]),m(null)];let e=[...t],n=e.pop();return[$(e),m(n)]},u=()=>i()?m(null):m(t[t.length-1]),ee=e=>$(t.map(e)),d=e=>i()?$([]):t.reduce((t,n)=>e(n).toArray().reduce((e,t)=>e.push(t),t),$([])),f=e=>{let n=[];return t.forEach(t=>{e.toArray().forEach(e=>{n.push(e(t))})}),$(n)},p=async e=>i()?$([]):(await Promise.all(t.map(async t=>await e(t)))).reduce((e,t)=>t.toArray().reduce((e,t)=>e.push(t),e),$([])),te=()=>w(t),ne=()=>[...t],h=()=>`Stack(${t.join(`, `)})`,g=(e,n)=>
|
|
17
|
+
evaluated: false`,toBinary:()=>Buffer.from(JSON.stringify(t&&!a?{_tag:`Lazy`,evaluated:!0,value:r}:{_tag:`Lazy`,evaluated:!1})).toString(`base64`)}),typeable:`Lazy`}},Z=r(X,{of:e=>X(e),fromValue:e=>X(()=>e),fromOption:(e,t)=>X(()=>e._tag===`Some`?e.value:t()),fromTry:e=>X(()=>e.orThrow()),fromEither:e=>X(()=>e.fold(e=>{throw e},e=>e)),fromPromise:e=>X(()=>{throw Error(`Promise not yet resolved. Use await on the promise before creating Lazy.`)}),fail:e=>X(()=>{throw e})}),zt=Map,Q=e=>{let t={values:new zt(e)},n=()=>Array.from(t.values.entries()).map(([e,t])=>i([e,t])),r=e=>Q(new zt(t.values).set(e.toArray()[0],e.toArray()[1]).entries()),a=e=>{let n=new zt(t.values);return n.delete(e)?Q(n.entries()):Q(t.values.entries())},s=e=>{let n=e.toArray();return t.values.get(n[0])===n[1]},c=()=>t.values.size,l=e=>Q(Array.from(t.values.entries()).map(([t,n])=>[t,e(n)])),u=e=>Q(Q(t.values.entries()).toList().flatMap(e).toArray()),ee=e=>{let n=[];for(let[r,i]of t.values.entries()){let t=e.get(r);t._tag===`Some`&&t.value&&n.push([r,t.value(i)])}return Q(n)},d=async e=>{let n=new zt;for(let[r,i]of t.values.entries()){let t=await e(i);for(let e of t.toList()){let[t,r]=e.toArray();n.set(t,r)}}return Q(n.entries())},f=e=>w(n()).reduce(e),p=e=>w(n()).reduceRight(e),te=e=>t=>w(n()).foldLeft(e)(t),ne=e=>t=>w(n()).foldRight(e)(t),h=e=>m(t.values.get(e)),g=(e,n)=>m(t.values.get(e)).orElse(n),re=()=>t.values.size===0,ie=(e,n)=>m(t.values.get(e)).or(n),ae=(e,t)=>w(n()).fold(e,t),se=()=>w(n()),_=()=>oe(n()),v=()=>`Map(${n().toString()})`,ce=e=>re()?e.Empty():e.NonEmpty(n());return{[Symbol.toStringTag]:`FunctypeMap`,_tag:`Map`,[Symbol.iterator]:()=>t.values.entries(),add:r,remove:a,contains:s,get size(){return c()},map:l,ap:ee,flatMap:u,flatMapAsync:d,reduce:f,reduceRight:p,foldLeft:te,foldRight:ne,fold:ae,match:ce,get:h,getOrElse:g,get isEmpty(){return re()},orElse:ie,toList:se,toSet:_,toString:v,toValue:()=>({_tag:`Map`,value:Array.from(t.values.entries())}),pipe:e=>e(Array.from(t.values.entries())),serialize:()=>o(`Map`,Array.from(t.values.entries()))}},Bt=e=>Q(e),Vt=Q([]),Ht={empty:()=>Vt,of:(...e)=>Q(e),fromJSON:e=>Ut(JSON.parse(e).value),fromYAML:e=>{let t=e.split(`
|
|
18
|
+
`)[1]?.split(`: `)[1];return Ut(t?JSON.parse(t):[])},fromBinary:e=>{let t=Buffer.from(e,`base64`).toString();return Ht.fromJSON(t)}},Ut=r(Bt,Ht),Wt={default:e=>t=>e(t),when:(e,t)=>n=>e(n)?t(n):void 0},$=(e=[])=>{let t=[...e],r=()=>t.length,i=()=>t.length===0,a=e=>t.includes(e),o=e=>{if(t.length===0)throw Error(`Cannot reduce an empty stack`);return t.reduce(e)},s=e=>{if(t.length===0)throw Error(`Cannot reduce an empty stack`);return t.reduceRight(e)},c=e=>$([...t,e]),l=()=>{if(i())return[$([]),m(null)];let e=[...t],n=e.pop();return[$(e),m(n)]},u=()=>i()?m(null):m(t[t.length-1]),ee=e=>$(t.map(e)),d=e=>i()?$([]):t.reduce((t,n)=>e(n).toArray().reduce((e,t)=>e.push(t),t),$([])),f=e=>{let n=[];return t.forEach(t=>{e.toArray().forEach(e=>{n.push(e(t))})}),$(n)},p=async e=>i()?$([]):(await Promise.all(t.map(async t=>await e(t)))).reduce((e,t)=>t.toArray().reduce((e,t)=>e.push(t),e),$([])),te=()=>w(t),ne=()=>[...t],h=()=>`Stack(${t.join(`, `)})`,g=(e,n)=>t.reduce(n,e),re=e=>n=>t.reduce(n,e),ie=e=>n=>t.reduceRight((e,t)=>n(t,e),e),ae=e=>i()?e.Empty():e.NonEmpty([...t]);return{[Symbol.toStringTag]:`Stack`,_tag:`Stack`,get size(){return r()},get isEmpty(){return i()},contains:a,reduce:o,reduceRight:s,push:c,pop:l,peek:u,map:ee,flatMap:d,ap:f,flatMapAsync:p,toList:te,toArray:ne,toString:h,fold:g,foldLeft:re,foldRight:ie,match:ae,toValue:()=>({_tag:`Stack`,value:t}),pipe:e=>e([...t]),serialize:()=>({toJSON:()=>JSON.stringify({_tag:`Stack`,value:t}),toYAML:()=>`_tag: Stack\nvalue: ${n(t)}`,toBinary:()=>Buffer.from(JSON.stringify({_tag:`Stack`,value:t})).toString(`base64`)})}},Gt=(e=[])=>$(e),Kt={empty:()=>$([]),of:e=>$([e]),fromJSON:e=>qt(JSON.parse(e).value),fromYAML:e=>{let t=e.split(`
|
|
19
19
|
`)[1]?.split(`: `)[1];return qt(t?JSON.parse(t):[])},fromBinary:e=>{let t=Buffer.from(e,`base64`).toString();return Kt.fromJSON(t)}},qt=r(Gt,Kt);function Jt(e){let t=fe({_tag:e._tag,impl:e.impl});return{...t,toValue:()=>({_tag:t._tag,value:e.value})}}export{ke as $,ut as A,c as At,Ye as B,gt as C,m as Ct,st as D,ee as Dt,pt as E,s as Et,ot as F,Ue as G,Je as H,A as I,Re as J,Be as K,j as L,lt as M,a as Mt,ct as N,nt as O,o as Ot,at as P,Me as Q,M as R,P as S,p as St,mt as T,d as Tt,Ke as U,qe as V,Ge as W,Ie as X,Ne as Y,Ae as Z,Dt as _,pe as _t,zt as a,D as at,xt as b,_ as bt,Y as c,T as ct,Pt as d,be as dt,ze as et,q as f,ye as ft,z as g,fe as gt,V as h,w as ht,Ut as i,Pe as it,dt as j,l as jt,it as k,u as kt,Rt as l,Ce as lt,jt as m,we as mt,qt as n,Oe as nt,Z as o,De as ot,Mt as p,xe as pt,Le as q,Wt as r,Fe as rt,Lt as s,E as st,Jt as t,je as tt,Ft as u,Se as ut,R as v,S as vt,ht as w,te as wt,yt as x,oe as xt,St as y,le as yt,Ze as z};
|
package/dist/try/index.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { Mn as Try, Nn as TypeNames } from "../index-
|
|
1
|
+
import { Mn as Try, Nn as TypeNames } from "../index-B5zYifBQ.js";
|
|
2
2
|
export { Try, TypeNames };
|
package/dist/try/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{vt as e}from"../src-
|
|
1
|
+
import{vt as e}from"../src-3rbFE_vI.js";export{e as Try};
|
package/dist/tuple/index.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { t as Tuple } from "../Tuple-
|
|
1
|
+
import { t as Tuple } from "../Tuple-DwyoW0ZP.js";
|
|
2
2
|
export { Tuple };
|
package/dist/tuple/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{t as e}from"../Tuple-
|
|
1
|
+
import{t as e}from"../Tuple-DY00RBep.js";export{e as Tuple};
|
package/package.json
CHANGED