functype 0.52.0 → 0.54.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -0
- package/dist/cli/exports.js +1 -1
- package/dist/cli/index.js +5 -5
- 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-BnWYmAFM.js → full-interfaces-CFqhF0Y6.js} +9 -2
- package/dist/{index-CF-cX2K8.d.ts → index-DN9rYP81.d.ts} +235 -137
- 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-BhBVtHJY.js +19 -0
- package/dist/try/index.d.ts +1 -1
- package/dist/try/index.js +1 -1
- package/package.json +11 -6
- package/dist/src-D3ewZ2Rm.js +0 -19
package/README.md
CHANGED
|
@@ -37,6 +37,7 @@ npx functype --json # JSON output for programmatic use
|
|
|
37
37
|
- **Try Type**: Safely execute operations that might throw exceptions
|
|
38
38
|
- **Do-notation**: Scala-like for-comprehensions with **optimized List performance** (up to 12x faster than traditional flatMap)
|
|
39
39
|
- **Task**: Handle synchronous and asynchronous operations with error handling
|
|
40
|
+
- **Http**: Typed HTTP fetch wrapper returning IO effects with HttpError ADT, auto content-type detection, and configurable clients
|
|
40
41
|
- **Lazy**: Deferred computation with memoization
|
|
41
42
|
- **Tuple**: Type-safe fixed-length arrays
|
|
42
43
|
- **Typeable**: Runtime type identification with compile-time safety
|
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-CFqhF0Y6.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,8 +1,8 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import{
|
|
3
|
-
`)},l=(
|
|
4
|
-
`).trimEnd()},u=()=>{let e=
|
|
5
|
-
`).trimEnd()},d=e=>JSON.stringify(e,null,2),f=()=>({version:r,categories:a,types:i}),p=e
|
|
2
|
+
import{Dt as e,J as t,yt as n}from"../src-BhBVtHJY.js";import{a as r,i,n as a,r as o,t as s}from"../full-interfaces-CFqhF0Y6.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
|
+
`)},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
|
+
`).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
|
+
`).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(`
|
|
6
6
|
`).trimEnd()},y=()=>{console.log(`functype - API documentation for LLMs
|
|
7
7
|
|
|
8
8
|
USAGE
|
|
@@ -24,4 +24,4 @@ EXAMPLES
|
|
|
24
24
|
npx functype Option --json # Option as JSON
|
|
25
25
|
npx functype Option --full # Full TypeScript interface
|
|
26
26
|
npx functype --full # All full interfaces (large output!)
|
|
27
|
-
`)},b=e=>{console.error(`Unknown type: ${e}`),console.error(``),console.error(`Available types: ${m().join(`, `)}`),console.error(``),console.error(`Use: npx functype interfaces - for interface reference`),process.exit(1)},x=e=>console.log(e),S=(
|
|
27
|
+
`)},b=e=>{console.error(`Unknown type: ${e}`),console.error(``),console.error(`Available types: ${m().join(`, `)}`),console.error(``),console.error(`Use: npx functype interfaces - for interface reference`),process.exit(1)},x=e=>console.log(e),S=(t,n)=>e(p(t)).fold(()=>b(t),e=>{n.full?_(e.name).fold(()=>x(n.json?d({[e.name]:e.data}):l(e.name,e.data)),t=>x(n.json?d({[e.name]:{...e.data,fullInterface:t}}):t)):x(n.json?d({[e.name]:e.data}):l(e.name,e.data))});(()=>{let{flags:e,args:n}=g(process.argv);t(!0).when(()=>e.help,()=>y()).when(()=>n.isEmpty,()=>e.full?x(e.json?d(s):v()):x(e.json?d(f()):c())).when(()=>n.headOption.contains(`interfaces`),()=>x(e.json?d(h()):u())).default(()=>n.headOption.fold(()=>x(e.json?d(f()):c()),t=>S(t,e)))})();
|
package/dist/do/index.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { a as EmptyListError, c as LeftError, d as isDoCapable, f as unwrap, i as DoGenerator, ir as Doable, l as LeftErrorType, n as Do, o as FailureError, r as DoAsync, rr as DoResult, s as FailureErrorType, t as $, u as NoneError } from "../index-DN9rYP81.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{
|
|
1
|
+
import{F as e,I as t,L as n,M as r,N as i,P as a,R as o,j as s,z as c}from"../src-BhBVtHJY.js";export{s as $,r as Do,i as DoAsync,a as EmptyListError,e as FailureError,t as LeftError,n as NoneError,o as isDoCapable,c 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-DN9rYP81.js";
|
|
2
2
|
export { Either, Left, Right, TestEither, TypeCheckLeft, TypeCheckRight, isLeft, isRight, tryCatch, tryCatchAsync };
|
package/dist/either/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{
|
|
1
|
+
import{_t as e,dt as t,ft as n,gt as r,ht as i,mt as a,pt as o,ut as s,vt as c}from"../src-BhBVtHJY.js";export{s as Either,t as Left,n as Right,o as TypeCheckLeft,a as TypeCheckRight,i as isLeft,r as isRight,e as tryCatch,c as tryCatchAsync};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
const e=`0.
|
|
1
|
+
const e=`0.54.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`]}},Obj:{description:`Immutable object wrapper with fluent operations`,interfaces:[`KVTraversable`,`Foldable`,`Matchable`,`Extractable`,`Serializable`,`Reshapeable`,`Doable`],methods:{create:[`Obj({...})`,`Obj.of({...})`,`Obj.empty()`],transform:[`.set(k, v)`,`.assign(partial)`,`.merge(obj)`,`.when(cond, partial)`,`.omit(...keys)`,`.pick(...keys)`,`.map(f)`,`.flatMap(f)`],extract:[`.get(k)`,`.value()`,`.keys()`,`.values()`,`.entries()`,`.fold(n, s)`,`.match({Obj})`],check:[`.has(k)`,`.isEmpty`,`.size`]}},Map:{description:`Immutable key-value store`,interfaces:[`KVTraversable`,`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`]}},Http:{description:`HTTP fetch wrapper returning IO<never, HttpError, HttpResponse<unknown>> by default. Provide a validate function to get typed responses (BYOV: bring your own validator). Works with Zod, TypeBox, Valibot, or manual validators.`,interfaces:[],methods:{create:[`Http.get(url, { validate }?)`,`Http.post(url, { body, validate }?)`,`Http.put(url, { body, validate }?)`,`Http.patch(url, { body, validate }?)`,`Http.delete(url, { validate }?)`,`Http.request({ url, validate })`,`Http.client(config)`],transform:[`.map(f)`,`.flatMap(f)`,`.retry(n)`,`.retryWithDelay(n, ms)`,`.timeout(ms)`],extract:[`.run()`,`.runOrThrow()`,`.runOption()`,`.runTry()`],check:[],other:[`.catchTag(tag, handler)`,`.catchAll(handler)`,`.mapError(f)`,`.recover(fallback)`]}},HttpError:{description:`Three-variant ADT for HTTP failures: NetworkError | HttpStatusError | DecodeError`,interfaces:[],methods:{create:[`HttpError.networkError(url, method, cause)`,`HttpError.httpStatusError(url, method, status, statusText, body)`,`HttpError.decodeError(url, method, body, cause)`],check:[`HttpError.isNetworkError(e)`,`HttpError.isHttpStatusError(e)`,`HttpError.isDecodeError(e)`],other:[`HttpError.match(error, { NetworkError, HttpStatusError, DecodeError })`]}}},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`,`Obj`],Collection:[`List`,`Set`,`Map`,`LazyList`,`Tuple`,`Stack`],Effect:[`IO`,`Task`,`Http`,`HttpError`],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 */
|
|
@@ -661,4 +661,11 @@ const e=`0.52.0`,t={Option:{description:`Safe nullable handling - Some<T> or Non
|
|
|
661
661
|
* @returns The result of applying the matching handler function
|
|
662
662
|
*/
|
|
663
663
|
match<R>(patterns: { Empty: () => R; NonEmpty: (values: A[]) => R }): R
|
|
664
|
-
} & Traversable<A>
|
|
664
|
+
} & Traversable<A> &`,HttpError:`export type HttpError = NetworkError | HttpStatusError | DecodeError
|
|
665
|
+
|
|
666
|
+
const networkError = (url: string, method: HttpMethod, cause: unknown): NetworkError => ({
|
|
667
|
+
_tag: "NetworkError",
|
|
668
|
+
url,
|
|
669
|
+
method,
|
|
670
|
+
cause,
|
|
671
|
+
})`};export{e as a,t as i,r as n,n as r,i as t};
|
|
@@ -1803,142 +1803,6 @@ declare const Validation: (<T extends Type>(rule: ValidationRule) => Validator<T
|
|
|
1803
1803
|
form: <T extends Record<string, Type>>(schema: { [K in keyof T]: Validator<T[K]> }, data: Record<string, unknown>) => FormValidation<T>;
|
|
1804
1804
|
};
|
|
1805
1805
|
//#endregion
|
|
1806
|
-
//#region src/foldable/index.d.ts
|
|
1807
|
-
/**
|
|
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.
|
|
1818
|
-
*/
|
|
1819
|
-
declare const FoldableUtils: {
|
|
1820
|
-
/**
|
|
1821
|
-
* Converts a sum type to an Option
|
|
1822
|
-
*
|
|
1823
|
-
* @param foldable - The sum type to convert
|
|
1824
|
-
* @returns An Option containing the value, or None if empty
|
|
1825
|
-
*/
|
|
1826
|
-
toOption: <A extends Type>(foldable: PatternFoldable<A>) => Option<A>;
|
|
1827
|
-
/**
|
|
1828
|
-
* Converts a sum type to a List
|
|
1829
|
-
*
|
|
1830
|
-
* @param foldable - The sum type to convert
|
|
1831
|
-
* @returns A List containing the value(s), or empty List if empty
|
|
1832
|
-
*/
|
|
1833
|
-
toList: <A extends Type>(foldable: PatternFoldable<A>) => List<A>;
|
|
1834
|
-
/**
|
|
1835
|
-
* Converts a sum type to an Either
|
|
1836
|
-
*
|
|
1837
|
-
* @param foldable - The sum type to convert
|
|
1838
|
-
* @param left - The value to use for Left if empty
|
|
1839
|
-
* @returns Either.Right with the value if non-empty, or Either.Left with left if empty
|
|
1840
|
-
*/
|
|
1841
|
-
toEither: <A extends Type, E>(foldable: PatternFoldable<A>, left: E) => Either<E, A>;
|
|
1842
|
-
/**
|
|
1843
|
-
* Checks if the sum type is empty
|
|
1844
|
-
*
|
|
1845
|
-
* @param foldable - The sum type to check
|
|
1846
|
-
* @returns true if empty, false otherwise
|
|
1847
|
-
*/
|
|
1848
|
-
isEmpty: <A extends Type>(foldable: PatternFoldable<A>) => boolean;
|
|
1849
|
-
/**
|
|
1850
|
-
* Calculates the size of the sum type (0 or 1)
|
|
1851
|
-
*
|
|
1852
|
-
* @param foldable - The sum type to measure
|
|
1853
|
-
* @returns The size (0 if empty, 1 if non-empty)
|
|
1854
|
-
*/
|
|
1855
|
-
size: <A extends Type>(foldable: PatternFoldable<A>) => number;
|
|
1856
|
-
};
|
|
1857
|
-
//#endregion
|
|
1858
|
-
//#region src/hkt/index.d.ts
|
|
1859
|
-
/**
|
|
1860
|
-
* Type function for representing higher-kinded types
|
|
1861
|
-
*/
|
|
1862
|
-
type Kind<F, A> = F extends ((arg: infer T) => infer R) ? R : never;
|
|
1863
|
-
/**
|
|
1864
|
-
* Type constructors for common Functype data types
|
|
1865
|
-
*/
|
|
1866
|
-
type OptionKind = <A>(a: A) => Option<A>;
|
|
1867
|
-
type ListKind = <A>(a: A) => List<A>;
|
|
1868
|
-
type EitherKind<E> = <A>(a: A) => Either<E, A>;
|
|
1869
|
-
type TryKind = <A>(a: A) => Try<A>;
|
|
1870
|
-
/**
|
|
1871
|
-
* Generic container types for type-safe operations
|
|
1872
|
-
* @internal
|
|
1873
|
-
*/
|
|
1874
|
-
type Mappable<T> = {
|
|
1875
|
-
map<U>(f: (value: T) => U): unknown;
|
|
1876
|
-
};
|
|
1877
|
-
/**
|
|
1878
|
-
* @internal
|
|
1879
|
-
*/
|
|
1880
|
-
type Flattenable = {
|
|
1881
|
-
flatten(): unknown;
|
|
1882
|
-
};
|
|
1883
|
-
/**
|
|
1884
|
-
* @internal
|
|
1885
|
-
*/
|
|
1886
|
-
type FlatMappable<T> = {
|
|
1887
|
-
flatMap<U>(f: (value: T) => unknown): unknown;
|
|
1888
|
-
};
|
|
1889
|
-
/**
|
|
1890
|
-
* Universal type that includes all potential return types from the HKT functions
|
|
1891
|
-
* Used to avoid 'any' usage which the linter prohibits
|
|
1892
|
-
*/
|
|
1893
|
-
type UniversalContainer = Option<unknown> | List<unknown> | Either<unknown, unknown> | Try<unknown>;
|
|
1894
|
-
/**
|
|
1895
|
-
* HKT provides utilities for working with higher-kinded types
|
|
1896
|
-
* This allows writing generic code that works across different
|
|
1897
|
-
* container types like Option, List, Either, etc.
|
|
1898
|
-
*/
|
|
1899
|
-
declare const HKT: {
|
|
1900
|
-
(): {
|
|
1901
|
-
_tag: string;
|
|
1902
|
-
map: <F, A, B>(fa: unknown, f: (a: A) => B) => unknown;
|
|
1903
|
-
flatten: <F, A>(ffa: unknown) => unknown;
|
|
1904
|
-
flatMap: <F, A, B>(fa: unknown, f: (a: A) => unknown) => unknown;
|
|
1905
|
-
ap: <F, A, B>(ff: unknown, fa: unknown) => unknown;
|
|
1906
|
-
sequence: <F, G, A>(fga: unknown) => unknown;
|
|
1907
|
-
traverse: <F, G, A, B>(fa: unknown, f: (a: A) => unknown) => unknown;
|
|
1908
|
-
_type: string;
|
|
1909
|
-
};
|
|
1910
|
-
map<F = unknown, A = unknown, B = unknown>(fa: unknown, f: (a: A) => B): unknown;
|
|
1911
|
-
flatten<F = unknown, A = unknown>(ffa: unknown): unknown;
|
|
1912
|
-
flatMap<F = unknown, A = unknown, B = unknown>(fa: unknown, f: (a: A) => unknown): unknown;
|
|
1913
|
-
ap<F = unknown, A = unknown, B = unknown>(ff: unknown, fa: unknown): unknown;
|
|
1914
|
-
sequence<F = unknown, G = unknown, A = unknown>(fga: unknown): unknown;
|
|
1915
|
-
traverse<F = unknown, G = unknown, A = unknown, B = unknown>(fa: unknown, f: (a: A) => unknown): unknown;
|
|
1916
|
-
isOption: <T extends Type>(value: unknown) => value is Option<T> & Mappable<T> & FlatMappable<T>;
|
|
1917
|
-
isList: <T extends Type>(value: unknown) => value is List<T> & Mappable<T> & Flattenable & FlatMappable<T>;
|
|
1918
|
-
isEither: <E extends Type, A extends Type>(value: unknown) => value is Either<E, A> & Mappable<A> & FlatMappable<A>;
|
|
1919
|
-
isTry: <T extends Type>(value: unknown) => value is Try<T> & Mappable<T> & FlatMappable<T>;
|
|
1920
|
-
};
|
|
1921
|
-
//#endregion
|
|
1922
|
-
//#region src/identity/Identity.d.ts
|
|
1923
|
-
type Identity<T> = {
|
|
1924
|
-
id: T;
|
|
1925
|
-
isSame?: (other: Identity<T>) => boolean;
|
|
1926
|
-
};
|
|
1927
|
-
declare const Identity: (<T>(value: T) => Identity<T>) & {
|
|
1928
|
-
/**
|
|
1929
|
-
* Creates an Identity. Alias for Identity constructor.
|
|
1930
|
-
* @param value - The value to wrap
|
|
1931
|
-
* @returns Identity instance
|
|
1932
|
-
*/
|
|
1933
|
-
of: <T>(value: T) => Identity<T>;
|
|
1934
|
-
/**
|
|
1935
|
-
* Creates an Identity. Same as of.
|
|
1936
|
-
* @param value - The value to wrap
|
|
1937
|
-
* @returns Identity instance
|
|
1938
|
-
*/
|
|
1939
|
-
pure: <T>(value: T) => Identity<T>;
|
|
1940
|
-
};
|
|
1941
|
-
//#endregion
|
|
1942
1806
|
//#region src/io/Tag.d.ts
|
|
1943
1807
|
/**
|
|
1944
1808
|
* Tag module - service identifiers for dependency injection.
|
|
@@ -3308,6 +3172,240 @@ declare const TestContext: {
|
|
|
3308
3172
|
withClock: () => TestContext<TestClock>;
|
|
3309
3173
|
};
|
|
3310
3174
|
//#endregion
|
|
3175
|
+
//#region src/fetch/HttpClient.d.ts
|
|
3176
|
+
interface HttpClientConfig {
|
|
3177
|
+
readonly baseUrl?: string;
|
|
3178
|
+
readonly defaultHeaders?: Record<string, string>;
|
|
3179
|
+
readonly fetch?: typeof globalThis.fetch;
|
|
3180
|
+
}
|
|
3181
|
+
declare const HttpClient: Tag<HttpClientConfig>;
|
|
3182
|
+
//#endregion
|
|
3183
|
+
//#region src/fetch/HttpError.d.ts
|
|
3184
|
+
type HttpMethod = "GET" | "POST" | "PUT" | "PATCH" | "DELETE" | "HEAD" | "OPTIONS";
|
|
3185
|
+
type NetworkError = {
|
|
3186
|
+
readonly _tag: "NetworkError";
|
|
3187
|
+
readonly url: string;
|
|
3188
|
+
readonly method: HttpMethod;
|
|
3189
|
+
readonly cause: unknown;
|
|
3190
|
+
};
|
|
3191
|
+
type HttpStatusError = {
|
|
3192
|
+
readonly _tag: "HttpStatusError";
|
|
3193
|
+
readonly url: string;
|
|
3194
|
+
readonly method: HttpMethod;
|
|
3195
|
+
readonly status: number;
|
|
3196
|
+
readonly statusText: string;
|
|
3197
|
+
readonly body: string;
|
|
3198
|
+
};
|
|
3199
|
+
type DecodeError = {
|
|
3200
|
+
readonly _tag: "DecodeError";
|
|
3201
|
+
readonly url: string;
|
|
3202
|
+
readonly method: HttpMethod;
|
|
3203
|
+
readonly body: string;
|
|
3204
|
+
readonly cause: unknown;
|
|
3205
|
+
};
|
|
3206
|
+
type HttpError = NetworkError | HttpStatusError | DecodeError;
|
|
3207
|
+
declare const HttpError: {
|
|
3208
|
+
readonly _tag: "HttpError";
|
|
3209
|
+
} & {
|
|
3210
|
+
networkError: (url: string, method: HttpMethod, cause: unknown) => NetworkError;
|
|
3211
|
+
httpStatusError: (url: string, method: HttpMethod, status: number, statusText: string, body: string) => HttpStatusError;
|
|
3212
|
+
decodeError: (url: string, method: HttpMethod, body: string, cause: unknown) => DecodeError;
|
|
3213
|
+
isNetworkError: (error: HttpError) => error is NetworkError;
|
|
3214
|
+
isHttpStatusError: (error: HttpError) => error is HttpStatusError;
|
|
3215
|
+
isDecodeError: (error: HttpError) => error is DecodeError;
|
|
3216
|
+
match: <T>(error: HttpError, patterns: {
|
|
3217
|
+
readonly NetworkError: (e: NetworkError) => T;
|
|
3218
|
+
readonly HttpStatusError: (e: HttpStatusError) => T;
|
|
3219
|
+
readonly DecodeError: (e: DecodeError) => T;
|
|
3220
|
+
}) => T;
|
|
3221
|
+
};
|
|
3222
|
+
//#endregion
|
|
3223
|
+
//#region src/fetch/HttpRequest.d.ts
|
|
3224
|
+
type ParseMode = "json" | "text" | "blob" | "arrayBuffer" | "raw";
|
|
3225
|
+
interface HttpRequestOptions<T = unknown> {
|
|
3226
|
+
readonly url: string;
|
|
3227
|
+
readonly method: HttpMethod;
|
|
3228
|
+
readonly headers?: Record<string, string>;
|
|
3229
|
+
readonly body?: unknown;
|
|
3230
|
+
readonly signal?: AbortSignal;
|
|
3231
|
+
readonly parseAs?: ParseMode;
|
|
3232
|
+
readonly validate?: (data: unknown) => T;
|
|
3233
|
+
}
|
|
3234
|
+
interface HttpMethodOptions<T = unknown> {
|
|
3235
|
+
readonly headers?: Record<string, string>;
|
|
3236
|
+
readonly body?: unknown;
|
|
3237
|
+
readonly signal?: AbortSignal;
|
|
3238
|
+
readonly parseAs?: ParseMode;
|
|
3239
|
+
readonly validate?: (data: unknown) => T;
|
|
3240
|
+
}
|
|
3241
|
+
interface HttpResponse<T> {
|
|
3242
|
+
readonly data: T;
|
|
3243
|
+
readonly status: number;
|
|
3244
|
+
readonly statusText: string;
|
|
3245
|
+
readonly headers: Headers;
|
|
3246
|
+
}
|
|
3247
|
+
//#endregion
|
|
3248
|
+
//#region src/fetch/Http.d.ts
|
|
3249
|
+
type HttpMethods = {
|
|
3250
|
+
readonly request: <T = unknown>(options: HttpRequestOptions<T>) => IO<never, HttpError, HttpResponse<T>>;
|
|
3251
|
+
readonly get: <T = unknown>(url: string, options?: HttpMethodOptions<T>) => IO<never, HttpError, HttpResponse<T>>;
|
|
3252
|
+
readonly post: <T = unknown>(url: string, options?: HttpMethodOptions<T>) => IO<never, HttpError, HttpResponse<T>>;
|
|
3253
|
+
readonly put: <T = unknown>(url: string, options?: HttpMethodOptions<T>) => IO<never, HttpError, HttpResponse<T>>;
|
|
3254
|
+
readonly patch: <T = unknown>(url: string, options?: HttpMethodOptions<T>) => IO<never, HttpError, HttpResponse<T>>;
|
|
3255
|
+
readonly delete: <T = unknown>(url: string, options?: HttpMethodOptions<T>) => IO<never, HttpError, HttpResponse<T>>;
|
|
3256
|
+
readonly head: (url: string, options?: HttpMethodOptions) => IO<never, HttpError, HttpResponse<void>>;
|
|
3257
|
+
readonly options: (url: string, options?: HttpMethodOptions) => IO<never, HttpError, HttpResponse<void>>;
|
|
3258
|
+
};
|
|
3259
|
+
declare const Http: {
|
|
3260
|
+
readonly _tag: "Http";
|
|
3261
|
+
} & {
|
|
3262
|
+
request: <T = unknown>(options: HttpRequestOptions<T>) => IO<never, HttpError, HttpResponse<T>>;
|
|
3263
|
+
get: <T = unknown>(url: string, options?: HttpMethodOptions<T>) => IO<never, HttpError, HttpResponse<T>>;
|
|
3264
|
+
post: <T = unknown>(url: string, options?: HttpMethodOptions<T>) => IO<never, HttpError, HttpResponse<T>>;
|
|
3265
|
+
put: <T = unknown>(url: string, options?: HttpMethodOptions<T>) => IO<never, HttpError, HttpResponse<T>>;
|
|
3266
|
+
patch: <T = unknown>(url: string, options?: HttpMethodOptions<T>) => IO<never, HttpError, HttpResponse<T>>;
|
|
3267
|
+
delete: <T = unknown>(url: string, options?: HttpMethodOptions<T>) => IO<never, HttpError, HttpResponse<T>>;
|
|
3268
|
+
head: (url: string, options?: HttpMethodOptions) => IO<never, HttpError, HttpResponse<void>>;
|
|
3269
|
+
options: (url: string, options?: HttpMethodOptions) => IO<never, HttpError, HttpResponse<void>>;
|
|
3270
|
+
client: (config: HttpClientConfig) => HttpMethods;
|
|
3271
|
+
};
|
|
3272
|
+
//#endregion
|
|
3273
|
+
//#region src/foldable/index.d.ts
|
|
3274
|
+
/**
|
|
3275
|
+
* Structural type for sum types that support pattern-match fold (Option, Either, Try, etc.).
|
|
3276
|
+
* Uses duck typing so any type with the right fold signature works, without requiring a shared interface.
|
|
3277
|
+
*/
|
|
3278
|
+
type PatternFoldable<A> = {
|
|
3279
|
+
fold<B>(onEmpty: () => B, onValue: (value: A) => B): B;
|
|
3280
|
+
};
|
|
3281
|
+
/**
|
|
3282
|
+
* Utility functions for working with sum-type Foldable data structures.
|
|
3283
|
+
* These utilities use pattern-match fold semantics and are designed for
|
|
3284
|
+
* sum types (Option, Either, Try) — not collections.
|
|
3285
|
+
*/
|
|
3286
|
+
declare const FoldableUtils: {
|
|
3287
|
+
/**
|
|
3288
|
+
* Converts a sum type to an Option
|
|
3289
|
+
*
|
|
3290
|
+
* @param foldable - The sum type to convert
|
|
3291
|
+
* @returns An Option containing the value, or None if empty
|
|
3292
|
+
*/
|
|
3293
|
+
toOption: <A extends Type>(foldable: PatternFoldable<A>) => Option<A>;
|
|
3294
|
+
/**
|
|
3295
|
+
* Converts a sum type to a List
|
|
3296
|
+
*
|
|
3297
|
+
* @param foldable - The sum type to convert
|
|
3298
|
+
* @returns A List containing the value(s), or empty List if empty
|
|
3299
|
+
*/
|
|
3300
|
+
toList: <A extends Type>(foldable: PatternFoldable<A>) => List<A>;
|
|
3301
|
+
/**
|
|
3302
|
+
* Converts a sum type to an Either
|
|
3303
|
+
*
|
|
3304
|
+
* @param foldable - The sum type to convert
|
|
3305
|
+
* @param left - The value to use for Left if empty
|
|
3306
|
+
* @returns Either.Right with the value if non-empty, or Either.Left with left if empty
|
|
3307
|
+
*/
|
|
3308
|
+
toEither: <A extends Type, E>(foldable: PatternFoldable<A>, left: E) => Either<E, A>;
|
|
3309
|
+
/**
|
|
3310
|
+
* Checks if the sum type is empty
|
|
3311
|
+
*
|
|
3312
|
+
* @param foldable - The sum type to check
|
|
3313
|
+
* @returns true if empty, false otherwise
|
|
3314
|
+
*/
|
|
3315
|
+
isEmpty: <A extends Type>(foldable: PatternFoldable<A>) => boolean;
|
|
3316
|
+
/**
|
|
3317
|
+
* Calculates the size of the sum type (0 or 1)
|
|
3318
|
+
*
|
|
3319
|
+
* @param foldable - The sum type to measure
|
|
3320
|
+
* @returns The size (0 if empty, 1 if non-empty)
|
|
3321
|
+
*/
|
|
3322
|
+
size: <A extends Type>(foldable: PatternFoldable<A>) => number;
|
|
3323
|
+
};
|
|
3324
|
+
//#endregion
|
|
3325
|
+
//#region src/hkt/index.d.ts
|
|
3326
|
+
/**
|
|
3327
|
+
* Type function for representing higher-kinded types
|
|
3328
|
+
*/
|
|
3329
|
+
type Kind<F, A> = F extends ((arg: infer T) => infer R) ? R : never;
|
|
3330
|
+
/**
|
|
3331
|
+
* Type constructors for common Functype data types
|
|
3332
|
+
*/
|
|
3333
|
+
type OptionKind = <A>(a: A) => Option<A>;
|
|
3334
|
+
type ListKind = <A>(a: A) => List<A>;
|
|
3335
|
+
type EitherKind<E> = <A>(a: A) => Either<E, A>;
|
|
3336
|
+
type TryKind = <A>(a: A) => Try<A>;
|
|
3337
|
+
/**
|
|
3338
|
+
* Generic container types for type-safe operations
|
|
3339
|
+
* @internal
|
|
3340
|
+
*/
|
|
3341
|
+
type Mappable<T> = {
|
|
3342
|
+
map<U>(f: (value: T) => U): unknown;
|
|
3343
|
+
};
|
|
3344
|
+
/**
|
|
3345
|
+
* @internal
|
|
3346
|
+
*/
|
|
3347
|
+
type Flattenable = {
|
|
3348
|
+
flatten(): unknown;
|
|
3349
|
+
};
|
|
3350
|
+
/**
|
|
3351
|
+
* @internal
|
|
3352
|
+
*/
|
|
3353
|
+
type FlatMappable<T> = {
|
|
3354
|
+
flatMap<U>(f: (value: T) => unknown): unknown;
|
|
3355
|
+
};
|
|
3356
|
+
/**
|
|
3357
|
+
* Universal type that includes all potential return types from the HKT functions
|
|
3358
|
+
* Used to avoid 'any' usage which the linter prohibits
|
|
3359
|
+
*/
|
|
3360
|
+
type UniversalContainer = Option<unknown> | List<unknown> | Either<unknown, unknown> | Try<unknown>;
|
|
3361
|
+
/**
|
|
3362
|
+
* HKT provides utilities for working with higher-kinded types
|
|
3363
|
+
* This allows writing generic code that works across different
|
|
3364
|
+
* container types like Option, List, Either, etc.
|
|
3365
|
+
*/
|
|
3366
|
+
declare const HKT: {
|
|
3367
|
+
(): {
|
|
3368
|
+
_tag: string;
|
|
3369
|
+
map: <F, A, B>(fa: unknown, f: (a: A) => B) => unknown;
|
|
3370
|
+
flatten: <F, A>(ffa: unknown) => unknown;
|
|
3371
|
+
flatMap: <F, A, B>(fa: unknown, f: (a: A) => unknown) => unknown;
|
|
3372
|
+
ap: <F, A, B>(ff: unknown, fa: unknown) => unknown;
|
|
3373
|
+
sequence: <F, G, A>(fga: unknown) => unknown;
|
|
3374
|
+
traverse: <F, G, A, B>(fa: unknown, f: (a: A) => unknown) => unknown;
|
|
3375
|
+
_type: string;
|
|
3376
|
+
};
|
|
3377
|
+
map<F = unknown, A = unknown, B = unknown>(fa: unknown, f: (a: A) => B): unknown;
|
|
3378
|
+
flatten<F = unknown, A = unknown>(ffa: unknown): unknown;
|
|
3379
|
+
flatMap<F = unknown, A = unknown, B = unknown>(fa: unknown, f: (a: A) => unknown): unknown;
|
|
3380
|
+
ap<F = unknown, A = unknown, B = unknown>(ff: unknown, fa: unknown): unknown;
|
|
3381
|
+
sequence<F = unknown, G = unknown, A = unknown>(fga: unknown): unknown;
|
|
3382
|
+
traverse<F = unknown, G = unknown, A = unknown, B = unknown>(fa: unknown, f: (a: A) => unknown): unknown;
|
|
3383
|
+
isOption: <T extends Type>(value: unknown) => value is Option<T> & Mappable<T> & FlatMappable<T>;
|
|
3384
|
+
isList: <T extends Type>(value: unknown) => value is List<T> & Mappable<T> & Flattenable & FlatMappable<T>;
|
|
3385
|
+
isEither: <E extends Type, A extends Type>(value: unknown) => value is Either<E, A> & Mappable<A> & FlatMappable<A>;
|
|
3386
|
+
isTry: <T extends Type>(value: unknown) => value is Try<T> & Mappable<T> & FlatMappable<T>;
|
|
3387
|
+
};
|
|
3388
|
+
//#endregion
|
|
3389
|
+
//#region src/identity/Identity.d.ts
|
|
3390
|
+
type Identity<T> = {
|
|
3391
|
+
id: T;
|
|
3392
|
+
isSame?: (other: Identity<T>) => boolean;
|
|
3393
|
+
};
|
|
3394
|
+
declare const Identity: (<T>(value: T) => Identity<T>) & {
|
|
3395
|
+
/**
|
|
3396
|
+
* Creates an Identity. Alias for Identity constructor.
|
|
3397
|
+
* @param value - The value to wrap
|
|
3398
|
+
* @returns Identity instance
|
|
3399
|
+
*/
|
|
3400
|
+
of: <T>(value: T) => Identity<T>;
|
|
3401
|
+
/**
|
|
3402
|
+
* Creates an Identity. Same as of.
|
|
3403
|
+
* @param value - The value to wrap
|
|
3404
|
+
* @returns Identity instance
|
|
3405
|
+
*/
|
|
3406
|
+
pure: <T>(value: T) => Identity<T>;
|
|
3407
|
+
};
|
|
3408
|
+
//#endregion
|
|
3311
3409
|
//#region src/lazy/Lazy.d.ts
|
|
3312
3410
|
/**
|
|
3313
3411
|
* Lazy type module
|
|
@@ -4940,4 +5038,4 @@ interface FailureErrorType extends Error {
|
|
|
4940
5038
|
}
|
|
4941
5039
|
declare const FailureError: (cause: Error, message?: string) => FailureErrorType;
|
|
4942
5040
|
//#endregion
|
|
4943
|
-
export {
|
|
5041
|
+
export { Identity as $, ContainerOps as $n, TaskErrorInfo as $t, OptionConstructor as A, Companion as An, LayerError as At, fromBinary as B, PositiveNumber as Bn, FieldValidation as Bt, Functype as C, Base as Cn, IO as Ct, List as D, CompanionMethods as Dn, TimeoutError as Dt, Collection as E, Cond as En, Task as Et, Set as F, IntegerNumber as Fn, Context as Ft, Matchable as G, Try as Gn, ErrorCode as Gt, fromYAML as H, UrlString as Hn, Validation as Ht, SerializationResult as I, NonEmptyString as In, ContextServices as It, ESMapType as J, Applicative as Jn, TypedError as Jt, MatchableUtils as K, TypeNames as Kn, ErrorMessage as Kt, createCustomSerializer as L, NonNegativeNumber as Ln, HasService as Lt, Stack as M, BoundedString as Mn, LayerOutput as Mt, Valuable as N, EmailAddress as Nn, Exit as Nt, None as O, InstanceType as On, UIO as Ot, ValuableParams as P, ISO8601Date as Pn, ExitTag as Pt, Lazy as Q, CollectionOps as Qn, ErrorWithTaskInfo as Qt, createSerializationCompanion as R, PatternString as Rn, Tag as Rt, tryCatchAsync as S, ThrowableType as Sn, TestContext as St, FunctypeCollection as T, UntypedMatch as Tn, RIO as Tt, Ref as U, ValidatedBrand as Un, ValidationRule as Ut, fromJSON as V, UUID as Vn, FormValidation as Vt, Obj as W, ValidatedBrandCompanion as Wn, Validator as Wt, KVTraversable as X, Functor as Xn, ErrorChainElement as Xt, Map$1 as Y, AsyncMonad as Yn, TypedErrorContext as Yt, Traversable as Z, Monad as Zn, ErrorFormatterOptions as Zt, TypeCheckLeft as _, TaskSuccess as _n, NetworkError as _t, EmptyListError as a, CancellationToken as an, ParseError as ar, TryKind as at, isRight as b, NAME as bn, TestClock as bt, LeftError as c, Ok as cn, Http as ct, isDoCapable as d, Task$1 as dn, HttpResponse as dt, createErrorSerializer as en, LazyList as er, EitherKind as et, unwrap as f, TaskFailure as fn, ParseMode as ft, TestEither as g, TaskResult as gn, HttpStatusError as gt, Right as h, TaskParams as hn, HttpMethod as ht, DoGenerator as i, Async as in, Doable as ir, OptionKind as it, Some as j, BoundedNumber as jn, LayerInput as jt, Option as k, isCompanion as kn, Layer as kt, LeftErrorType as l, Sync as ln, HttpMethodOptions as lt, Left as m, TaskOutcome as mn, HttpError as mt, Do as n, formatStackTrace as nn, isExtractable as nr, Kind as nt, FailureError as o, CancellationTokenSource as on, UniversalContainer as ot, Either as p, TaskMetadata as pn, DecodeError as pt, ESMap as q, Promisable as qn, ErrorStatus as qt, DoAsync as r, safeStringify as rn, DoResult as rr, ListKind as rt, FailureErrorType as s, Err as sn, FoldableUtils as st, $ as t, formatError as tn, Extractable as tr, HKT as tt, NoneError as u, TaggedThrowable as un, HttpRequestOptions as ut, TypeCheckRight as v, createCancellationTokenSource as vn, HttpClient as vt, FunctypeBase as w, Match as wn, InterruptedError as wt, tryCatch as x, Throwable as xn, TestClockTag as xt, isLeft as y, isTaggedThrowable as yn, HttpClientConfig as yt, createSerializer as z, PositiveInteger as zn, TagService as zt };
|
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
|
|
2
|
+
import { $ as Identity, $n as ContainerOps, $t as TaskErrorInfo, A as OptionConstructor, An as Companion, At as LayerError, B as fromBinary, Bn as PositiveNumber, Bt as FieldValidation, C as Functype, Cn as Base, Ct as IO, D as List, Dn as CompanionMethods, Dt as TimeoutError, E as Collection, En as Cond, Et as Task, F as Set, Fn as IntegerNumber, Ft as Context, G as Matchable, Gn as Try, Gt as ErrorCode, H as fromYAML, Hn as UrlString, Ht as Validation, I as SerializationResult, In as NonEmptyString, It as ContextServices, J as ESMapType, Jn as Applicative, Jt as TypedError, K as MatchableUtils, Kn as TypeNames, Kt as ErrorMessage, L as createCustomSerializer, Ln as NonNegativeNumber, Lt as HasService, M as Stack, Mn as BoundedString, Mt as LayerOutput, N as Valuable, Nn as EmailAddress, Nt as Exit, O as None, On as InstanceType, Ot as UIO, P as ValuableParams, Pn as ISO8601Date, Pt as ExitTag, Q as Lazy, Qn as CollectionOps, Qt as ErrorWithTaskInfo, R as createSerializationCompanion, Rn as PatternString, Rt as Tag, S as tryCatchAsync, Sn as ThrowableType, St as TestContext, T as FunctypeCollection, Tn as UntypedMatch, Tt as RIO, U as Ref, Un as ValidatedBrand, Ut as ValidationRule, V as fromJSON, Vn as UUID, Vt as FormValidation, W as Obj, Wn as ValidatedBrandCompanion, Wt as Validator, X as KVTraversable, Xn as Functor, Xt as ErrorChainElement, Y as Map, Yn as AsyncMonad, Yt as TypedErrorContext, Z as Traversable, Zn as Monad, Zt as ErrorFormatterOptions, _ as TypeCheckLeft, _n as TaskSuccess, _t as NetworkError, a as EmptyListError, an as CancellationToken, ar as ParseError, at as TryKind, b as isRight, bn as NAME, bt as TestClock, c as LeftError, cn as Ok, ct as Http, d as isDoCapable, dn as Task$1, dt as HttpResponse, en as createErrorSerializer, er as LazyList, et as EitherKind, f as unwrap, fn as TaskFailure, ft as ParseMode, g as TestEither, gn as TaskResult, gt as HttpStatusError, h as Right, hn as TaskParams, ht as HttpMethod, i as DoGenerator, in as Async, ir as Doable, it as OptionKind, j as Some, jn as BoundedNumber, jt as LayerInput, k as Option, kn as isCompanion, kt as Layer, l as LeftErrorType, ln as Sync, lt as HttpMethodOptions, m as Left, mn as TaskOutcome, mt as HttpError, n as Do, nn as formatStackTrace, nr as isExtractable, nt as Kind, o as FailureError, on as CancellationTokenSource, ot as UniversalContainer, p as Either, pn as TaskMetadata, pt as DecodeError, q as ESMap, qn as Promisable, qt as ErrorStatus, r as DoAsync, rn as safeStringify, rr as DoResult, rt as ListKind, s as FailureErrorType, sn as Err, st as FoldableUtils, t as $, tn as formatError, tr as Extractable, tt as HKT, u as NoneError, un as TaggedThrowable, ut as HttpRequestOptions, v as TypeCheckRight, vn as createCancellationTokenSource, vt as HttpClient, w as FunctypeBase, wn as Match, wt as InterruptedError, x as tryCatch, xn as Throwable, xt as TestClockTag, y as isLeft, yn as isTaggedThrowable, yt as HttpClientConfig, z as createSerializer, zn as PositiveInteger, zt as TagService } from "./index-DN9rYP81.js";
|
|
3
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
|
-
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, KVTraversable, 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, Obj, Ok, Option, OptionConstructor, OptionKind, ParseError, PatternString, Pipe, PositiveInteger, PositiveNumber, Promisable, RIO, Ref, Ref as RefType, Right, 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 };
|
|
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, DecodeError, 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, Http, HttpClient, HttpClientConfig, HttpError, HttpError as HttpErrors, HttpMethod, HttpMethodOptions, HttpRequestOptions, HttpResponse, HttpStatusError, IO, IO as IOType, Task as IOTask, ISO8601Date, Identity, InstanceType, IntegerNumber, InterruptedError, KVTraversable, Kind, Layer, Layer as LayerType, LayerError, LayerInput, LayerOutput, Lazy, Lazy as LazyType, LazyList, Left, LeftError, LeftErrorType, List, ListKind, Map, Match, Matchable, MatchableUtils, Monad, NAME, NetworkError, NonEmptyString, NonNegativeNumber, None, NoneError, Obj, Ok, Option, OptionConstructor, OptionKind, ParseError, ParseMode, PatternString, Pipe, PositiveInteger, PositiveNumber, Promisable, RIO, Ref, Ref as RefType, Right, 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 _,
|
|
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 _,Ft as v,G as y,H as b,I as x,It as S,J as C,K as w,L as T,M as E,Mt as D,N as O,Nt as k,O as A,Ot as j,P as M,Pt as N,Q as P,R as F,S as I,St as L,T as R,Tt as z,U as B,V,W as H,X as U,Y as W,Z as G,_ as K,_t as q,a as J,at as Y,b as X,bt as Z,c as Q,ct as $,d as ee,dt as te,et as ne,f as re,ft as ie,g as ae,gt as oe,h as se,ht as ce,i as le,it as ue,j as de,jt as fe,k as pe,kt as me,l as he,lt as ge,m as _e,mt as ve,n as ye,nt as be,o as xe,ot as Se,p as Ce,pt as we,q as Te,r as Ee,rt as De,s as Oe,st as ke,t as Ae,tt as je,u as Me,ut as Ne,v as Pe,vt as Fe,w as Ie,wt as Le,x as Re,xt as ze,y as Be,yt as Ve,z as He}from"./src-BhBVtHJY.js";import{r as Ue,t as We}from"./Tuple-DY00RBep.js";export{de as $,Te as Base,G as BoundedNumber,P as BoundedString,e as Brand,t as BrandedBoolean,n as BrandedNumber,r as BrandedString,Ue as Companion,W as Cond,d as Context,E as Do,O as DoAsync,xe as ESMap,Ne as Either,s as EmailAddress,M as EmptyListError,u as Err,I as Exit,_ as FailureError,Me as FoldableUtils,he as HKT,ee as Http,Ce as HttpClient,re as HttpErrors,Be as IO,ne as ISO8601Date,Q as Identity,je as IntegerNumber,X as InterruptedError,Pe as Layer,Oe as Lazy,f as LazyList,te as Left,x as LeftError,Ve as List,J as Map,C as Match,le as MatchableUtils,y as NAME,be as NonEmptyString,De as NonNegativeNumber,g as None,T as NoneError,Ee as Obj,V as Ok,m as Option,j as OptionConstructor,S as ParseError,ue as PatternString,Y as PositiveInteger,Se as PositiveNumber,Le as Ref,ie as Right,z as Set,me as Some,ye as Stack,K as Tag,b as Task,_e as TestClock,se as TestClockTag,ae as TestContext,w as Throwable,Re as TimeoutError,L as Try,We as Tuple,we as TypeCheckLeft,ve as TypeCheckRight,Z as Typeable,h as TypedError,ke as UUID,$ as UrlString,ge as ValidatedBrand,R as Validation,Ae as Valuable,i as createBrander,B as createCancellationTokenSource,l as createCustomSerializer,p as createErrorSerializer,fe as createSerializationCompanion,D as createSerializer,A as formatError,pe as formatStackTrace,k as fromBinary,N as fromJSON,v as fromYAML,a as hasBrand,U as isCompanion,F as isDoCapable,Ie as isExtractable,ce as isLeft,oe as isRight,H as isTaggedThrowable,ze as isTypeable,c as safeStringify,q as tryCatch,Fe as tryCatchAsync,He 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-DN9rYP81.js";
|
|
2
2
|
export { List };
|
package/dist/list/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{
|
|
1
|
+
import{yt as e}from"../src-BhBVtHJY.js";export{e as List};
|
package/dist/map/index.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { Y as Map } from "../index-
|
|
1
|
+
import { Y as Map } from "../index-DN9rYP81.js";
|
|
2
2
|
export { Map };
|
package/dist/map/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{a as e}from"../src-
|
|
1
|
+
import{a as e}from"../src-BhBVtHJY.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-DN9rYP81.js";
|
|
2
2
|
export { None, Option, OptionConstructor, Some };
|
package/dist/option/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{
|
|
1
|
+
import{Dt as e,Et as t,Ot as n,kt as r}from"../src-BhBVtHJY.js";export{t as None,e as Option,n as OptionConstructor,r 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-DN9rYP81.js";
|
|
2
2
|
export { Set };
|
package/dist/set/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{
|
|
1
|
+
import{Tt as e}from"../src-BhBVtHJY.js";export{e as Set};
|
|
@@ -0,0 +1,19 @@
|
|
|
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
|
+
`),toBinary:()=>Buffer.from(JSON.stringify(e)).toString(`base64`)}),c=(e,t)=>t(JSON.parse(e)),l=(e,t)=>{let n=e.split(`
|
|
3
|
+
`),r={};for(let e of n){let t=e.indexOf(`: `);if(t===-1)continue;let n=e.substring(0,t),i=e.substring(t+2);if(!i){r[n]=null;continue}try{r[n]=i===`null`?null:JSON.parse(i)}catch{r[n]=i}}return t(r)},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:()=>C([e]),contains:t=>t===e,size:1,toOption:()=>d(e),toEither:t=>w(e),toTry:()=>x(()=>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:()=>C([]),contains:()=>!1,size:0,toOption:()=>f,toEither:e=>T(e),toTry:()=>x(()=>{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)=>{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:()=>C(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)}),ce=(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)}},le=()=>{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}},v=e=>{let t={[Symbol.toStringTag]:`LazyList`,_tag:`LazyList`,[Symbol.iterator]:()=>e[Symbol.iterator](),map:t=>v((function*(){for(let n of e)yield t(n)})()),flatMap:t=>v((function*(){for(let n of e)yield*t(n)})()),filter:t=>v((function*(){for(let n of e)t(n)&&(yield n)})()),take:t=>v((function*(){let n=ce(0);for(let r of e){if(n.get()>=t)break;yield r,n.increment()}})()),drop:t=>v((function*(){let n=ce(0);for(let r of e)n.get()>=t&&(yield r),n.increment()})()),takeWhile:t=>v((function*(){for(let n of e){if(!t(n))break;yield n}})()),dropWhile:t=>v((function*(){let n=_(!0);for(let r of e)n.get()&&t(r)||(n.set(!1),yield r)})()),concat:t=>v((function*(){yield*e,yield*t})()),zip:t=>v((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:()=>C(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=ce(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 v((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 v(t.length===0?[]:t.slice(0,-1))},takeRight:t=>{let n=Array.from(e);return v(t<=0?[]:n.slice(-t))},reverse:()=>v(Array.from(e).reverse()),distinct:()=>v((function*(){let t=new globalThis.Set;for(let n of e)t.has(n)||(t.add(n),yield n)})()),zipWithIndex:()=>v((function*(){let t=ce(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=ce(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},ue=r(e=>v(e),{empty:()=>v([]),of:e=>v([e]),from:(...e)=>v(e),iterate:(e,t)=>v((function*(){let n=_(e);for(;;)yield n.get(),n.set(t(n.get()))})()),generate:e=>v((function*(){for(;;)yield e()})()),range:(e,t,n=1)=>v((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)=>v((function*(){if(t===void 0)for(;;)yield e;else{let n=ce(0);for(;n.get()<t;)yield e,n.increment()}})()),cycle:e=>v((function*(){let t=Array.from(e);if(t.length!==0)for(;;)yield*t})())}),y=e=>({[Symbol.toStringTag]:`Try`,_tag:`Success`,error:void 0,isSuccess(){return!0},isFailure(){return!1},orElse:t=>e,orThrow:t=>e,or:t=>y(e),orNull:()=>e,orUndefined:()=>e,toEither:t=>w(e),map:t=>x(()=>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=>y(e),recoverWith:t=>y(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:()=>C([e]),toTry:()=>y(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}}}),b=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=>T(e),map:t=>b(e),ap:t=>b(e),flatMap:t=>b(e),flatMapAsync:t=>Promise.resolve(b(e)),fold:(t,n)=>t(e),match:t=>t.Failure(e),recover:t=>x(()=>t(e)),recoverWith:t=>{try{return t(e)}catch(e){return b(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:()=>C([]),toTry:()=>b(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}}}),de=e=>{try{return y(e())}catch(e){return b(e instanceof Error?e:Error(String(e)))}},fe={success:e=>y(e),failure:e=>b(typeof e==`string`?Error(e):e),fromPromise:e=>e.then(e=>y(e)).catch(e=>b(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 y(t.value);{let e=Error(t.error);return t.stack&&(e.stack=t.stack),b(e)}},fromYAML:e=>{let t=e.split(`
|
|
6
|
+
`),n=t[0]?.split(`: `)[1];if(!n)return b(Error(`Invalid YAML format for Try`));if(n===`Success`){let e=t[1]?.split(`: `)[1];return e?y(JSON.parse(e)):b(Error(`Invalid YAML format for Try Success`))}else{let e=t[1]?.split(`: `)[1];if(!e)return b(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),b(i)}},fromBinary:e=>{let t=Buffer.from(e,`base64`).toString();return fe.fromJSON(t)}},x=r(de,fe);function pe({_tag:e,impl:t}){return{...t,_tag:e}}function me(e,t){return!e||typeof e!=`object`||!(`_tag`in e)?!1:t?e._tag===t:!0}const S=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=>S(t.map(e)),ap:e=>S(t.flatMap(t=>Array.from(e).map(e=>e(t)))),flatMap:e=>S(t.flatMap(t=>Array.from(e(t)))),flatMapAsync:async e=>S((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=>S(t.filter(e)),filterNot:e=>S(t.filter(t=>!e(t))),filterType:e=>S(t.filter(t=>me(t,e))),find:(e,n)=>m(t.find(t=>e(t)&&(n?me(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=>S(t.filter(t=>t!==e)),removeAt:e=>e<0||e>=t.length?r:S([...t.slice(0,e),...t.slice(e+1)]),add:e=>S([...t,e]),get:e=>m(t[e]),concat:e=>S([...t,...e.toArray()]),take:e=>S(t.slice(0,Math.max(0,e))),takeWhile:e=>{let n=[];for(let r of t){if(!e(r))break;n.push(r)}return S(n)},takeRight:e=>S(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 S(t.slice(1))},get init(){return S(t.length===0?[]:t.slice(0,-1))},reverse:()=>S([...t].reverse()),indexOf:e=>t.indexOf(e),prepend:e=>S([e,...t]),distinct:()=>{let e=new globalThis.Set,n=[];for(let r of t)e.has(r)||(e.add(r),n.push(r));return S(n)},sorted:e=>S([...t].sort(e)),sortBy:(e,n)=>S([...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 S(i)},zipWithIndex:()=>S(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,S(t));return r},partition:e=>{let n=[],r=[];for(let i of t)e(i)?n.push(i):r.push(i);return[S(n),S(r)]},span:e=>{let n=t.findIndex(t=>!e(t));return n===-1?[S([...t]),S([])]:[S(t.slice(0,n)),S(t.slice(n))]},slice:(e,n)=>S(t.slice(e,n)),drop:e=>S(t.slice(e)),dropRight:e=>S(t.slice(0,-e)),dropWhile:e=>S(t.slice(t.findIndex(t=>!e(t)))),flatten:()=>S(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?w(t[0]):T(e),toTry:()=>t.length>0?x(()=>t[0]):x(()=>{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},he=e=>S(e),ge=S([]),_e={empty:()=>ge,of:(...e)=>S(e),fromJSON:e=>C(JSON.parse(e).value),fromYAML:e=>{let t=e.split(`
|
|
7
|
+
`)[1]?.split(`: `)[1];return C(t?JSON.parse(t):[])},fromBinary:e=>{let t=Buffer.from(e,`base64`).toString();return _e.fromJSON(t)}},C=r(he,_e),ve=e=>({[Symbol.toStringTag]:`Either`,_tag:`Right`,value:e,isLeft(){return!1},isRight(){return!0},orElse:t=>e,orThrow:()=>e,or:t=>w(e),orNull:()=>e,orUndefined:()=>e,map:t=>w(t(e)),ap:t=>t._tag===`Right`?w(t.value(e)):T(t.value),mapAsync:t=>t(e).then(e=>w(e)).catch(e=>Promise.resolve(T(e))),merge:t=>t.isLeft()?T(t.value):w([e,t.value]),flatMap:t=>t(e),flatMapAsync:t=>t(e).catch(e=>T(e)),toOption:()=>d(e),toList:()=>C([e]),toEither:t=>w(e),toTry:()=>x(()=>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()?T(n.value):w([n.value])},*lazyMap(t){yield w(t(e))},tap:t=>(t(e),w(e)),tapLeft:t=>w(e),mapLeft:t=>w(e),bimap:(t,n)=>w(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:()=>T(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}}}),ye=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=>T(e),ap:t=>T(e),mapAsync:t=>Promise.resolve(T(e)),merge:t=>T(e),flatMap:t=>T(e),flatMapAsync:t=>Promise.resolve(T(e)),toOption:()=>p(),toList:()=>C(),toEither:e=>T(e),toTry:()=>x(()=>{throw Error(String(e))}),toJSON(){return{_tag:`Left`,value:e}},toString:()=>`Left(${n(e)})`,*[Symbol.iterator](){},*yield(){},traverse:t=>T(e),*lazyMap(t){yield T(e)},tap:t=>T(e),tapLeft:t=>(t(e),T(e)),mapLeft:t=>T(t(e)),bimap:(t,n)=>T(t(e)),fold:(t,n)=>t(e),foldLeft:e=>t=>e,foldRight:e=>t=>e,match:t=>t.Left(e),swap:()=>w(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}}}),w=e=>ve(e),T=e=>ye(e),be=e=>e.isRight(),xe=e=>e.isLeft(),Se=(e,t)=>{try{return w(e())}catch(e){return T(t(e))}},Ce=e=>ve(e);console.assert(Ce);const we=e=>ye(e);console.assert(we);const Te=async(e,t)=>{try{return w(await e())}catch(e){return T(t(e))}},Ee=(e,t)=>t?w(e):T(e),De={left:e=>T(e),right:e=>w(e),isRight:e=>e.isRight(),isLeft:e=>e.isLeft(),sequence:e=>e.reduce((e,t)=>e.isLeft()?e:t.isLeft()?T(t.value):e.map(e=>[...e,t.value]),w([])),traverse:(e,t)=>De.sequence(e.map(t)),fromNullable:(e,t)=>e==null?T(t):w(e),fromPredicate:(e,t,n)=>t(e)?w(e):T(n),ap:(e,t)=>e.flatMap(e=>t.map(e)),fromPromise:async(e,t)=>{try{return w(await e)}catch(e){return T(t(e))}},fromJSON:e=>{let t=JSON.parse(e);return t._tag===`Right`?w(t.value):T(t.value)},fromYAML:e=>{let t=e.split(`
|
|
8
|
+
`),n=t[0]?.split(`: `)[1],r=t[1]?.split(`: `)[1];if(!n||!r)throw Error(`Invalid YAML format for Either`);let i=JSON.parse(r);return n===`Right`?w(i):T(i)},fromBinary:e=>{let t=Buffer.from(e,`base64`).toString();return De.fromJSON(t)}},Oe=r(Ee,De);function E(t,n){return{brand:t,validate:n,of:r=>n(r)?m(e(t,r)):m.none(),from:r=>n(r)?w(e(t,r)):T(`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)=>E(e,e=>n(e)&&t(e))}}const ke=E(`PositiveNumber`,e=>e>0),Ae=E(`NonNegativeNumber`,e=>e>=0),je=E(`IntegerNumber`,e=>Number.isInteger(e)),Me=ke.refine(`PositiveInteger`,e=>Number.isInteger(e)),Ne=E(`NonEmptyString`,e=>e.length>0),Pe=E(`EmailAddress`,e=>/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(e)),Fe=E(`UrlString`,e=>{try{return new URL(e),!0}catch{return!1}}),Ie=E(`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)),Le=E(`ISO8601Date`,e=>!isNaN(Date.parse(e))&&/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}/.test(e));function Re(e,t,n){return E(e,e=>e>=t&&e<=n)}function ze(e,t,n){return E(e,e=>e.length>=t&&e.length<=n)}function Be(e,t){return E(e,e=>t.test(e))}const Ve=e=>typeof e==`function`&&Object.keys(e).length>0,He=e=>{let t=e=>typeof e==`function`?e():e,n={when:(r,i)=>e.resolved?n:r?He({resolved:!0,value:t(i)}):n,elseWhen:(r,i)=>e.resolved?n:r?He({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},Ue=()=>He({resolved:!1}),We=r(Ue,{of:()=>Ue(),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}}),Ge=(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 Ge(r,n)}):!1,D=e=>{let t=(e,t)=>typeof e==`function`?e(t):e,n=()=>{for(let{pattern:n,result:r}of e.patterns)if(Ge(e.value,n))return{matched:!0,result:t(r,e.value)};return{matched:!1}},r={case:(n,i)=>e.resolved?r:Ge(e.value,n)?D({value:e.value,resolved:!0,result:t(i,e.value),patterns:[]}):D({...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 D({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 D({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(Ge(e.value,r))return D({value:e.value,resolved:!0,result:t(i,e.value),patterns:[]});return D({...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},Ke=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 Ge(e,n)?D({...i,resolved:!0,result:t(r,e)}):D(i)},caseValue:(t,n)=>D(e===t?{value:e,resolved:!0,result:typeof n==`function`?n():n,patterns:[]}:{value:e,resolved:!1,patterns:[]}),caseValues:(t,n)=>t.includes(e)?D({value:e,resolved:!0,result:typeof n==`function`?n():n,patterns:[]}):D({value:e,resolved:!1,patterns:[]}),when:(n,r)=>{let i={value:e,resolved:!1,patterns:[{pattern:n,result:r}]};return n(e)?D({...i,resolved:!0,result:t(r,e)}):D(i)},caseAny:(n,r)=>{for(let i of n)if(Ge(e,i))return D({value:e,resolved:!0,result:t(r,e),patterns:n.map(e=>({pattern:e,result:r}))});return D({value:e,resolved:!1,patterns:n.map(e=>({pattern:e,result:r}))})}}},qe=r(e=>Ke(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(Ge(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(Ge(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 Je(e,t){return{...pe({_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 Ye=`Throwable`;var Xe=class e extends Error{constructor(e,t){super(e,{cause:t?.cause}),this._tag=Ye,this.name=t?.taskInfo?.name??`Throwable`,Object.defineProperties(this,{_tag:{value:Ye,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 Ze(e){return e instanceof Error&&typeof e==`object`&&e._tag===`Throwable`}const Qe=(e,t)=>{if(e.isRight())return k(e.orThrow(),t);if(e.isLeft())return O(e.fold(e=>e,()=>Error(`Unexpected right value`)),void 0,t);throw Error(`Unrecognized task outcome`)},O=(e,t,r)=>{let i={name:r?.name??`Task`,description:r?.description??``},a=Xe.apply(e,t,i),o={...Je(`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=>O(a,t,r),flatMap:e=>O(a,t,r),ap:e=>O(a,t,r),mapAsync:e=>Promise.resolve(O(a,t,r)),flatMapAsync:e=>Promise.resolve(O(a,t,r)),mapError:e=>O(e(a),t,r),recover:e=>k(e,r),recoverWith:e=>k(e(a),r),orThrow:e=>{throw e??a},orElse:e=>e,or:e=>e,orNull:()=>null,orUndefined:()=>void 0,toEither:()=>T(a),toTry:()=>x(()=>{throw a}),toOption:()=>p(),toList:()=>C([]),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},k=(e,t)=>{let r={name:t?.name??`Task`,description:t?.description??``},i={...Je(`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=>k(n(e),t),flatMap:n=>{let r=n(e);return r&&typeof r==`object`&&`isLeft`in r&&`isRight`in r?Qe(r,t):r},ap:n=>n.isOk()?k(n.value(e),t):O(n.error,void 0,t),mapAsync:async n=>k(await n(e),t),flatMapAsync:async t=>await t(e),mapError:n=>k(e,t),recover:n=>k(e,t),recoverWith:n=>k(e,t),orThrow:t=>e,orElse:t=>e,or:n=>k(e,t),orNull:()=>e,orUndefined:()=>e,toEither:()=>w(e),toTry:()=>x(()=>e),toOption:()=>d(e),toList:()=>C([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},$e=()=>{let e=new AbortController,t=le();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)}}))}}},et=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(O(e,void 0,{name:t,description:n}));return}o(O(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(O(e,void 0,{name:t,description:n}));return}if(s.get()){c.get()?o(O(c.get(),void 0,{name:t,description:n})):o(O(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(k(r,{name:t,description:n}))}else o(k(r,{name:t,description:n}))}catch(e){try{await i()}catch(e){o(O(e,void 0,{name:t,description:n}));return}if(s.get()){c.get()?o(O(c.get(),void 0,{name:t,description:n})):o(O(Error(`Task was cancelled during execution`),void 0,{name:t,description:n}));return}try{if(e instanceof Error&&Ze(e)){let i=Error(`${t}: ${e.message}`),a=Xe.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(O(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(O(i,void 0,{name:t,description:n}))}else o(O(i,void 0,{name:t,description:n}))}}catch(e){o(O(e,void 0,{name:t,description:n}))}}finally{l.get()()}})().catch(e=>o(O(e,void 0,{name:t,description:n})))}),Sync:(e,r=e=>e,i=()=>{})=>{try{return k(e(),{name:t,description:n})}catch(e){return O(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{...Je(`Task`,r),_type:`Task`}},tt={success:(e,t)=>k(e,t),fail:(e,t,n)=>O(e,t,n),ok:(e,t)=>k(e,t),err:(e,t,n)=>O(e,t,n),fromEither:(e,t)=>Qe(e,t),fromTry:(e,t)=>e.isSuccess()?k(e.orThrow(),t):O(e.fold(e=>e,()=>Error(`Unexpected success`)),void 0,t),getErrorChain:e=>{if(!e)return[];let t=le();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=tt.getErrorChain(e),r=t?.separator??`
|
|
9
|
+
`;return n.map((e,n)=>{if(!e)return`${n>0?`↳ `:``}Unknown error`;let{taskInfo:r}=e,i=t?.includeTasks&&r?.name?`[${r.name}] `:``,a=e.message??`No message`,o=_(`${n>0?`↳ `:``}${i}${a}`);return t?.includeStackTrace&&e.stack&&o.set(`${o.get()}\n${e.stack.split(`
|
|
10
|
+
`).slice(1).join(`
|
|
11
|
+
`)}`),o.get()}).join(r)},fromPromise:(e,t)=>(...n)=>A(t??{name:`PromiseTask`,description:`Task from Promise`}).Async(()=>e(...n),e=>e),toPromise:e=>new Promise((t,n)=>{e.isSuccess()?t(e.orThrow()):n(e.error)}),race:(e,t,n)=>A({name:n?.name??`TaskRace`,description:n?.description??`Race between multiple tasks`}).Async(async()=>{let n=le();e.forEach(e=>n.add(e));let r=_(void 0);if(typeof t==`number`&&t>0){let e=new Promise((e,n)=>{r.set(setTimeout(()=>{n(Error(`Task race timed out after ${t}ms`))},t))});n.add(e)}try{return await new Promise((e,t)=>{n.build().forEach(n=>{n.then(n=>{if(n&&typeof n==`object`&&`_tag`in n){let r=n;r._tag===`Ok`?e(r.orThrow()):r._tag===`Err`?t(r.error):e(n)}else e(n)},e=>t(e))})})}finally{r.get()&&clearTimeout(r.get())}},e=>e),fromNodeCallback:(e,t)=>{let n={name:t?.name??`NodeCallbackTask`,description:t?.description??`Task from Node.js callback function`};return(...t)=>A(n).Async(()=>new Promise((n,r)=>{try{e(...t,(e,t)=>{e?r(e):n(t)})}catch(e){r(e)}}),e=>e)},createCancellationTokenSource:$e,cancellable:(e,t)=>{let n=$e();return{task:A(t).Async(()=>e(n.token),e=>e,()=>{},n.token),cancel:()=>n.cancel()}},withProgress:(e,t=()=>{},n)=>{let r=$e(),i=_(0),a=e=>{i.set(Math.max(0,Math.min(100,e))),t(i.get())};return{task:A(n).Async(()=>e(a,r.token),e=>e,()=>{},r.token),cancel:()=>r.cancel(),currentProgress:()=>i.get()}}},A=r(et,tt);function nt(e){if(!e||typeof e!=`object`||!(`_tag`in e))return`unknown`;switch(e._tag){case`Some`:case`None`:return`Option`;case`Left`:case`Right`:return`Either`;case`List`:return`List`;case`Success`:case`Failure`:return`Try`;default:return`unknown`}}const rt={Option:{of:e=>m(e),empty:()=>m.none()},Either:{of:e=>w(e),empty:e=>T(e)},List:{of:e=>C([e]),empty:()=>C([])},Try:{of:e=>x(()=>e),empty:e=>x(()=>{throw e??Error(`Try failed`)})}};function it(e){let t=e(),n=null,r;function i(a){let o=t.next(a);if(o.done)return r?r.of(o.value):C([o.value]);let s=o.value;if(typeof s!=`object`||!s)throw Error(`Do-notation error: All yielded values must be monadic. Use yield* $(Option(value)), yield* $(Right(value)), etc. Raw values should be assigned directly without yielding.`);if(!n&&`_tag`in s&&(n=nt(s),n!==`unknown`&&n in rt&&(r=rt[n]),n===`List`))return at(e);if(`doUnwrap`in s){let e=s.doUnwrap();if(!e.ok){if(!r)return C([]);if(!e.empty&&`error`in e){if(n===`Either`)return r.empty(e.error);if(n===`Try`)return r.empty(e.error instanceof Error?e.error:Error(String(e.error)))}return r.empty()}return i(e.value)}throw Error(`Do-notation error: All yielded values must be monadic. Use yield* $(Option(value)), yield* $(Right(value)), etc. Raw values should be assigned directly without yielding.`)}return i()}function at(e){function t(e){if(typeof e!=`object`||!e||!(`doUnwrap`in e))return[e];let t=e;if(`toArray`in t){let e=t.toArray();return e.length===0?[]:e}let n=t.doUnwrap();return n.ok?[n.value]:[]}function n(r){let i=e(),a=[],o=[],s=0;function c(e){let l=i.next(e);if(l.done){a.push(l.value);return}if(s<r.length){let e=r[s];o.push(e),s++,c(e);return}let u=t(l.value);if(u.length!==0)if(u.length>1){let e=u.flatMap(e=>n([...o,e]));a.push(...e)}else o.push(u[0]),s++,c(u[0])}return c(void 0),a}return C(n([]))}async function ot(e){let t=e(),n=null,r;async function i(e){let a=await t.next(e);if(a.done)return r?r.of(a.value):C([a.value]);let o=await Promise.resolve(a.value);if(typeof o!=`object`||!o)return i(o);if(!n&&`_tag`in o&&(n=nt(o),n!==`unknown`&&n in rt&&(r=rt[n])),`doUnwrap`in o){let e=o.doUnwrap();if(!e.ok){if(!r)return C([]);if(!e.empty&&`error`in e){if(n===`Either`)return r.empty(e.error);if(n===`Try`)return r.empty(e.error instanceof Error?e.error:Error(String(e.error)))}return r.empty()}return i(e.value)}return i(o)}return i()}function st(e){return typeof e==`object`&&!!e&&`doUnwrap`in e&&typeof e.doUnwrap==`function`}function ct(e){let t=e.doUnwrap();if(t.ok)return t.value;throw`error`in t?t.error:Error(`Cannot unwrap empty monad`)}function*lt(e){return yield e}const ut=(e=`Cannot unwrap None in Do-notation`)=>{let t=Error(e),n=Object.create(Error.prototype);return n.message=t.message,n.stack=t.stack,n.name=`NoneError`,n},dt=(e,t=`Cannot unwrap Left in Do-notation`)=>{let n=Error(t),r=Object.create(Error.prototype);return r.message=n.message,r.stack=n.stack,r.name=`LeftError`,r.value=e,r},ft=(e=`Cannot unwrap empty List in Do-notation`)=>{let t=Error(e),n=Object.create(Error.prototype);return n.message=t.message,n.stack=t.stack,n.name=`EmptyListError`,n},pt=(e,t=`Cannot unwrap Failure in Do-notation`)=>{let n=Error(t),r=Object.create(Error.prototype);return r.message=n.message,r.stack=n.stack,r.name=`FailureError`,r.cause=e,r},mt={includeTasks:!0,includeStackTrace:!1,separator:`
|
|
12
|
+
`,includeData:!1,maxStackFrames:3,title:`Error`,colors:!1};function ht(e){let t=new WeakSet;return JSON.stringify(e,(e,n)=>{if(typeof n==`bigint`)return`${n.toString()}n`;if(typeof n==`object`&&n){if(t.has(n))return`[Circular Reference]`;t.add(n)}return e===`stack`&&typeof n==`string`?gt(n):n},2)}function gt(e){if(e===void 0||e===``)return``;let t=e.split(`
|
|
13
|
+
`);return[t[0],...t.slice(1).map(e=>e.trim())].join(`
|
|
14
|
+
`)}function _t(e,t){let n={...mt,...t},r=e instanceof Error?e:Xe.apply(e),i=A?.getErrorChain?A.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=gt(e.stack).split(`
|
|
15
|
+
`).slice(1),i=n.maxStackFrames??mt.maxStackFrames??3,a=t.slice(0,i).map(e=>`${r} ${n.colors?`\x1B[90m`:``}${e}${n.colors?`\x1B[0m`:``}`).join(`
|
|
16
|
+
`);o+=`\n${a}`,t.length>i&&(o+=`\n${r} ${n.colors?`\x1B[90m`:``}...${t.length-i} more stack frames${n.colors?`\x1B[0m`:``}`)}return o}).join(n.separator)}`;if(n.includeData){let{data:e}=r;if(e){let t=n.colors?`\n\n\x1b[33mContext:\x1b[0m\n${ht(e)}`:`\n\nContext:\n${ht(e)}`;a+=t}}return a}function vt(){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?gt(t.stack):void 0};if(t.taskInfo&&(n.taskInfo=t.taskInfo),t.data&&(n.data=t.data),typeof A?.getErrorChain==`function`)try{let e=A.getErrorChain(t);e.length>1&&(n.errorChain=A.formatErrorChain(t,{includeTasks:!0}),n.structuredErrorChain=e.map(e=>({message:e.message,name:e.name,taskInfo:e.taskInfo,stack:e.stack?gt(e.stack):void 0})))}catch{}return Object.getOwnPropertyNames(t).forEach(e=>{n[e]||(n[e]=t[e])}),n}}const j=(e,n,r,i)=>t(Xe.apply(n,r,{name:e,description:n}),{code:e,message:n,status:yt(e),context:r,timestamp:new Date().toISOString(),traceId:i?.traceId}),yt=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],M=Object.assign(j,{validation:(e,t,n)=>j(`VALIDATION_FAILED`,`Validation failed: ${e} ${n}`,{field:e,value:t,rule:n}),network:(e,t,n)=>j(`NETWORK_ERROR`,`Network error: ${t} ${e}${n?` (${n})`:``}`,{url:e,method:t,statusCode:n}),auth:(e,t)=>j(`AUTH_REQUIRED`,`Authentication required: ${e}${t?` (role: ${t})`:``}`,{resource:e,requiredRole:t}),notFound:(e,t)=>j(`NOT_FOUND`,`Not found: ${e} with id ${t}`,{resource:e,id:t}),permission:(e,t,n)=>j(`PERMISSION_DENIED`,`Permission denied: cannot ${e} ${t}`,{action:e,resource:t,userId:n}),rateLimit:(e,t,n)=>j(`RATE_LIMITED`,`Rate limit exceeded: ${e} requests per ${t}`,{limit:e,window:t,retryAfter:n}),internal:e=>j(`INTERNAL_ERROR`,`Internal server error: ${e}`,{errorId:e,timestamp:new Date().toISOString()}),badRequest:(e,t)=>j(`BAD_REQUEST`,`Bad request: ${e}`,{reason:e,expected:t}),conflict:(e,t)=>j(`CONFLICT`,`Conflict: ${e} already exists with value ${t}`,{resource:e,conflictingValue:t}),timeout:(e,t)=>j(`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}),N={rule:e=>t=>{if(e===`email`)return typeof t!=`string`||!/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(t)?T(M.validation(`value`,t,`must be a valid email`)):w(t);if(e===`url`)try{return new URL(String(t)),w(t)}catch{return T(M.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)?T(M.validation(`value`,t,`must be a valid UUID`)):w(t);if(e===`required`)return t==null||t===``?T(M.validation(`value`,t,`is required`)):w(t);if(e===`numeric`)return typeof t!=`number`&&!/^\d+$/.test(String(t))?T(M.validation(`value`,t,`must be numeric`)):w(t);if(e===`alpha`)return typeof t!=`string`||!/^[a-zA-Z]+$/.test(t)?T(M.validation(`value`,t,`must contain only letters`)):w(t);if(e===`alphanumeric`)return typeof t!=`string`||!/^[a-zA-Z0-9]+$/.test(t)?T(M.validation(`value`,t,`must be alphanumeric`)):w(t);if(e.startsWith(`min:`)){let n=Number(e.split(`:`)[1]),r=Number(t);return isNaN(r)||r<n?T(M.validation(`value`,t,`must be at least ${n}`)):w(t)}if(e.startsWith(`max:`)){let n=Number(e.split(`:`)[1]),r=Number(t);return isNaN(r)||r>n?T(M.validation(`value`,t,`must be at most ${n}`)):w(t)}if(e.startsWith(`minLength:`)){let n=Number(e.split(`:`)[1]);return String(t).length<n?T(M.validation(`value`,t,`must be at least ${n} characters`)):w(t)}if(e.startsWith(`maxLength:`)){let n=Number(e.split(`:`)[1]);return String(t).length>n?T(M.validation(`value`,t,`must be at most ${n} characters`)):w(t)}if(e.startsWith(`pattern:`)){let n=e.substring(8);return new RegExp(n).test(String(t))?w(t):T(M.validation(`value`,t,`must match pattern ${n}`))}if(e.startsWith(`in:`)){let n=e.substring(3).split(`,`);return n.includes(String(t))?w(t):T(M.validation(`value`,t,`must be one of: ${n.join(`, `)}`))}if(e.startsWith(`notIn:`)){let n=e.substring(6).split(`,`);return n.includes(String(t))?T(M.validation(`value`,t,`must not be one of: ${n.join(`, `)}`)):w(t)}if(e===`date`){let e=new Date(String(t));return isNaN(e.getTime())?T(M.validation(`value`,t,`must be a valid date`)):w(t)}if(e===`future`){let e=new Date(String(t));return isNaN(e.getTime())||e<=new Date?T(M.validation(`value`,t,`must be a future date`)):w(t)}if(e===`past`){let e=new Date(String(t));return isNaN(e.getTime())||e>=new Date?T(M.validation(`value`,t,`must be a past date`)):w(t)}return w(t)},combine:(...e)=>t=>{for(let n of e){let e=n(t);if(e.isLeft())return e}return w(t)},custom:(e,t)=>n=>e(n)?w(n):T(M.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=M.validation(i,e,t.context.rule);n.push(r)}else r[i]=o.orThrow()}return n.length>0?T(C(n)):w(r)}},bt={...N,validators:{email:N.rule(`email`),url:N.rule(`url`),uuid:N.rule(`uuid`),required:N.rule(`required`),numeric:N.rule(`numeric`),positiveNumber:N.combine(N.rule(`numeric`),N.rule(`min:0`)),nonEmptyString:N.combine(N.rule(`required`),N.custom(e=>typeof e==`string`&&e.trim().length>0,`must not be empty`))}},xt=t(N.rule,bt);function St(e){return typeof e==`object`&&!!e&&`orThrow`in e&&typeof e.orThrow==`function`}function Ct(e){return St(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 wt=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),wt(r)},merge(t){let n=new Map(e);for(let[e,r]of t.services)n.set(e,r);return wt(n)},get size(){return e.size},toString(){return`Context(${Array.from(e.keys()).join(`, `)})`}}),P={empty:()=>wt(new Map),make:(e,t)=>{let n=new Map;return n.set(e.id,t),wt(n)},isContext:e=>typeof e==`object`&&!!e&&e._tag===`Context`},F=e=>({[Symbol.toStringTag]:`Exit`,_tag:`Success`,isSuccess(){return!0},isFailure(){return!1},isInterrupted(){return!1},map(t){return F(t(e))},mapError(t){return F(e)},mapBoth(t,n){return F(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 w(e)},toValue(){return{_tag:`Success`,value:e}},toString(){return`Exit.Success(${n(e)})`},toJSON(){return{_tag:`Success`,value:e}}}),Tt=e=>({[Symbol.toStringTag]:`Exit`,_tag:`Failure`,isSuccess(){return!1},isFailure(){return!0},isInterrupted(){return!1},map(t){return Tt(e)},mapError(t){return Tt(t(e))},mapBoth(t,n){return Tt(t(e))},flatMap(t){return Tt(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 T(e)},toValue(){return{_tag:`Failure`,error:e}},toString(){return`Exit.Failure(${n(e)})`},toJSON(){return{_tag:`Failure`,error:e}}}),Et=e=>({[Symbol.toStringTag]:`Exit`,_tag:`Interrupted`,isSuccess(){return!1},isFailure(){return!1},isInterrupted(){return!0},map(t){return Et(e)},mapError(t){return Et(e)},mapBoth(t,n){return Et(e)},flatMap(t){return Et(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}}}),I=r(e=>F(e),{succeed:e=>F(e),fail:e=>Tt(e),interrupt:e=>Et(e),interrupted:()=>Et(`interrupted`),isSuccess:e=>e.isSuccess(),isFailure:e=>e.isFailure(),isInterrupted:e=>e.isInterrupted(),fromEither:e=>e.isRight()?F(e.value):Tt(e.value),fromOption:(e,t)=>e.isSome()?F(e.value):Tt(t()),zip:(e,t)=>e.isInterrupted()?e:t.isInterrupted()?t:e.isFailure()?e:t.isFailure()?t:F([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 F(t)}}),L=e=>e;var Dt=class extends Error{constructor(e,t){super(t??`Effect timed out after ${e}ms`),this.duration=e,this._tag=`TimeoutError`,this.name=`TimeoutError`}},Ot=class extends Error{constructor(e){super(e??`Effect was interrupted`),this._tag=`InterruptedError`,this.name=`InterruptedError`}};const R=e=>{let t={[Symbol.toStringTag]:`IO`,_effect:e,map(e){return R(L({_tag:`Map`,effect:t,f:e}))},flatMap(e){return R(L({_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 R(L({_tag:`MapError`,effect:t,f:e}))},tapError(e){return t.mapError(t=>(e(t),t))},recover(e){return R(L({_tag:`Recover`,effect:t,fallback:e}))},recoverWith(e){return R(L({_tag:`RecoverWith`,effect:t,f:e}))},fold(e,n){return R(L({_tag:`Fold`,effect:t,onFailure:e,onSuccess:n}))},match(e){return t.fold(e.failure,e.success)},catchTag(e,n){return R(L({_tag:`RecoverWith`,effect:t,f:t=>typeof t==`object`&&t&&`_tag`in t&&t._tag===e?L(n(t)):L(V.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(()=>V.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 R(L({_tag:`ProvideContext`,effect:t,context:e}))},provideService(e,n){return R(L({_tag:`ProvideContext`,effect:t,context:P.make(e,n)}))},provideLayer(e){return L(L(V.async(async()=>{let t=P.empty();return await e.build(L(t))})).flatMap(e=>R(L({_tag:`ProvideContext`,effect:t,context:e}))))},async run(){let e=await B(this._effect);return e.isSuccess()?w(e.orThrow()):T(e.isFailure()?e.toValue().error:new Ot)},async runOrThrow(){let e=await B(this._effect);if(e.isSuccess())return e.orThrow();throw e.isFailure()?e.toValue().error:new Ot},runSync(){try{return w(z(this._effect))}catch(e){return T(e)}},runSyncOrThrow(){return z(this._effect)},async runExit(){return B(this._effect)},async runOption(){let e=await B(this._effect);return e.isSuccess()?d(e.orThrow()):p()},async runTry(){let e=await B(this._effect);if(e.isSuccess())return L(x(()=>e.orThrow()));let t=e.isFailure()?e.toValue().error:Error(`Effect was interrupted`);return L(x(()=>{throw t}))},pipe(e){return e(t)},delay(e){return L(V.async(()=>new Promise(t=>setTimeout(t,e))).flatMap(()=>t))},timeout(e){return R(L({_tag:`Timeout`,effect:t,duration:e}))},timeoutTo(e,n){return L(t.timeout(e).recover(L(n)))},toString(){return`IO(${n(e._tag)})`},toJSON(){return{_tag:`IO`,effect:e._tag}},*[Symbol.iterator](){return yield t}};return t},z=(e,t=P.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=z(e.effect._effect,t);return e.f(n)}case`FlatMap`:{let n=z(e.effect._effect,t);return z(e.f(n)._effect,t)}case`MapError`:try{return z(e.effect._effect,t)}catch(t){throw e.f(t)}case`Recover`:try{return z(e.effect._effect,t)}catch{return e.fallback}case`RecoverWith`:try{return z(e.effect._effect,t)}catch(n){return z(e.f(n)._effect,t)}case`Fold`:try{let n=z(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 z(e.effect._effect,n)}case`Interrupt`:throw new Ot;case`Bracket`:{let n=z(e.acquire._effect,t);try{return z(e.use(n)._effect,t)}finally{z(e.release(n)._effect,t)}}case`Race`:throw Error(`Cannot run race effect synchronously`);case`Timeout`:throw Error(`Cannot run timeout effect synchronously`)}},B=async(e,t=P.empty())=>{try{switch(e._tag){case`Succeed`:return L(I.succeed(e.value));case`Fail`:return L(I.fail(e.error));case`Die`:throw e.defect;case`Sync`:return L(I.succeed(e.thunk()));case`Async`:{let t=await e.thunk();return L(I.succeed(t))}case`Auto`:{let t=e.thunk();return t instanceof Promise?L(I.succeed(await t)):L(I.succeed(t))}case`Map`:{let n=await B(e.effect._effect,t);return n.isSuccess()?L(I.succeed(e.f(n.orThrow()))):L(n)}case`FlatMap`:{let n=await B(e.effect._effect,t);return n.isSuccess()?B(e.f(n.orThrow())._effect,t):L(n)}case`MapError`:{let n=await B(e.effect._effect,t);return n.isSuccess()?L(n):n.isFailure()?L(I.fail(e.f(n.toValue().error))):L(n)}case`Recover`:{let n=await B(e.effect._effect,t);return n.isSuccess()?n:I.succeed(e.fallback)}case`RecoverWith`:{let n=await B(e.effect._effect,t);return n.isSuccess()?n:n.isFailure()?B(e.f(n.toValue().error)._effect,t):n}case`Fold`:{let n=await B(e.effect._effect,t);return n.isSuccess()?I.succeed(e.onSuccess(n.orThrow())):n.isFailure()?I.succeed(e.onFailure(n.toValue().error)):n}case`Service`:{let n=t.get(e.tag);return n.isNone()?I.fail(Error(`Service not found: ${e.tag.id}`)):I.succeed(n.orThrow())}case`ProvideContext`:{let n=t.merge(e.context);return B(e.effect._effect,n)}case`Interrupt`:return I.interrupted();case`Bracket`:{let n=await B(e.acquire._effect,t);if(!n.isSuccess())return n;let r=n.orThrow();try{return await B(e.use(r)._effect,t)}finally{await B(e.release(r)._effect,t)}}case`Race`:return e.effects.length===0?I.fail(Error(`No effects to race`)):await Promise.race(e.effects.map(e=>B(e._effect,t)));case`Timeout`:{let n=new Promise(t=>setTimeout(()=>t(I.fail(new Dt(e.duration))),e.duration)),r=B(e.effect._effect,t);return Promise.race([r,n])}}}catch(e){return I.fail(e)}},V={sync:e=>R({_tag:`Sync`,thunk:e}),succeed:e=>R({_tag:`Succeed`,value:e}),fail:e=>R({_tag:`Fail`,error:e}),die:e=>R({_tag:`Die`,defect:e}),async:e=>R(L({_tag:`Async`,thunk:e})),tryPromise:e=>R({_tag:`Async`,thunk:e.try}).mapError(e.catch),tryCatch:(e,t)=>V.sync(()=>{try{return e()}catch(e){throw t(e)}}),liftSync:e=>(...t)=>V.sync(()=>e(...t)),liftPromise:e=>(...t)=>V.async(()=>e(...t)),fromEither:e=>L(e.isRight()?V.succeed(e.value):V.fail(e.value)),fromOption:e=>L(e.isSome()?V.succeed(e.value):V.fail(void 0)),fromOptionOrFail:(e,t)=>L(e.isSome()?V.succeed(e.value):V.fail(t())),fromTry:e=>L(e.isSuccess()?V.succeed(e.orThrow()):V.fail(e.error)),fromResult:e=>L(e.error?V.fail(e.error):V.succeed(m(e.data))),tryAsync:(e,t,n)=>n?.aborted?L(V.fail(t(n.reason??new DOMException(`Aborted`,`AbortError`)))):V.async(()=>e(n)).mapError(t),asyncResult:(e,t,n)=>{let r=n?.dataKey??`data`,i=n?.errorKey??`error`;return V.tryAsync(t=>e(t),t,n?.signal).flatMap(e=>V.fromResult({data:e[r],error:e[i]}))},service:e=>R({_tag:`Service`,tag:e}),serviceWith:(e,t)=>V.service(e).map(t),serviceWithIO:(e,t)=>V.service(e).flatMap(t),withServices:(e,t)=>{let n=Object.entries(e);if(n.length===0)return L(R({_tag:`Auto`,thunk:()=>t({})}));let r=L(V.succeed({}));return L(n.reduce((e,[t,n])=>L(e.flatMap(e=>V.service(n).map(n=>({...e,[t]:n})))),r).flatMap(e=>R({_tag:`Auto`,thunk:()=>t(e)})))},all:e=>{if(e.length===0)return L(V.succeed([]));let t=L(V.succeed([]));return L(e.reduce((e,t)=>e.flatMap(e=>t.map(t=>[...e,t])),t))},firstSuccessOf:e=>e.length===0?L(V.fail(Error(`No effects provided`))):e.reduce((e,t)=>e.recoverWith(()=>t)),sleep:e=>L(V.async(()=>new Promise(t=>setTimeout(t,e)))),never:()=>L(V.async(()=>new Promise(()=>{}))),get unit(){return L(R({_tag:`Succeed`,value:void 0}))},fromNullable:e=>L(e==null?V.fail(void 0):V.succeed(e)),interrupt:()=>R({_tag:`Interrupt`}),bracket:(e,t,n)=>R({_tag:`Bracket`,acquire:e,use:t,release:n}),acquireRelease:(e,t,n)=>V.bracket(e,t,n),race:e=>R({_tag:`Race`,effects:e}),any:e=>e.length===0?L(V.fail(Error(`No effects provided`))):e.reduce((e,t)=>e.recoverWith(()=>t)),forEach:(e,t)=>{if(e.length===0)return L(V.succeed([]));let n=L(V.succeed([]));return L(e.reduce((e,n)=>e.flatMap(e=>t(n).map(t=>[...e,t])),n))},forEachPar:(e,t)=>V.forEach(e,t),timeout:(e,t)=>R(L({_tag:`Timeout`,effect:e,duration:t})),gen:e=>L(V.sync(()=>{let t=e(),n=e=>{let r=t.next(e);return r.done?L(V.succeed(r.value)):L(r.value.flatMap(e=>n(e)))};return n(void 0)}).flatMap(e=>e)),get Do(){return kt(V.succeed({}))}},kt=e=>({effect:e,bind(t,n){return kt(e.flatMap(e=>n(e).map(n=>({...e,[t]:n}))))},let(t,n){return kt(e.map(e=>({...e,[t]:n(e)})))},map(t){return e.map(t)},flatMap(t){return e.flatMap(t)},tap(t){return kt(e.tap(t))},tapEffect(t){return kt(e.tapEffect(t))},done(){return e}}),H=r(e=>R(L({_tag:`Auto`,thunk:e})),V),U=(e,t)=>({_tag:`Layer`,build:e,provideToAndMerge(t){return U(async n=>{let r=await e(n),i=n.merge(r),a=await t.build(i);return r.merge(a)})},merge(t){return U(async n=>{let[r,i]=await Promise.all([e(n),t.build(n)]);return r.merge(i)})},map(t){return U(async n=>t(await e(n)))},toString(){return`Layer(${t??`anonymous`})`}}),At={succeed:(e,t)=>U(()=>Promise.resolve(P.make(e,t)),e.id),effect:(e,t)=>U(async()=>{let n=await t();return P.make(e,n)},e.id),sync:(e,t)=>U(()=>Promise.resolve(P.make(e,t())),e.id),fromService:(e,t,n)=>U(r=>{let i=r.unsafeGet(t);return Promise.resolve(P.make(e,n(i)))},e.id),fromServiceEffect:(e,t,n)=>U(async r=>{let i=await n(r.unsafeGet(t));return P.make(e,i)},e.id),fromContext:e=>U(()=>Promise.resolve(e)),empty:()=>U(()=>Promise.resolve(P.empty()),`empty`),mergeAll:(...e)=>U(async t=>(await Promise.all(e.map(e=>e.build(t)))).reduce((e,t)=>e.merge(t),P.empty()))},jt=e=>({id:e,_tag:`Tag`,toString(){return`Tag(${e})`}}),Mt=()=>{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})})}}},W=jt(`TestClock`),Nt={make:Mt,tag:W,test:async e=>e(Mt()),get:H.service(W),advance:e=>H.serviceWithIO(W,t=>H.async(()=>t.advance(e))),setTime:e=>H.serviceWithIO(W,t=>H.async(()=>t.setTime(e))),runAll:H.serviceWithIO(W,e=>H.async(()=>e.runAll())),context:()=>{let e=Mt();return{clock:e,context:P.make(W,e)}}},Pt={make:()=>{let e=Mt(),t=P.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=Mt();return Pt.make().withService(W,e)}},Ft=jt(`HttpClient`),It={},Lt=r({},{networkError:(e,t,n)=>({_tag:`NetworkError`,url:e,method:t,cause:n}),httpStatusError:(e,t,n,r,i)=>({_tag:`HttpStatusError`,url:e,method:t,status:n,statusText:r,body:i}),decodeError:(e,t,n,r)=>({_tag:`DecodeError`,url:e,method:t,body:n,cause:r}),isNetworkError:e=>e._tag===`NetworkError`,isHttpStatusError:e=>e._tag===`HttpStatusError`,isDecodeError:e=>e._tag===`DecodeError`,match:(e,t)=>{switch(e._tag){case`NetworkError`:return t.NetworkError(e);case`HttpStatusError`:return t.HttpStatusError(e);case`DecodeError`:return t.DecodeError(e)}}}),Rt=(e,t)=>!e||t.startsWith(`http://`)||t.startsWith(`https://`)?t:`${e.endsWith(`/`)?e.slice(0,-1):e}${t.startsWith(`/`)?t:`/${t}`}`,zt=e=>e==null?{serialized:void 0,contentType:void 0}:typeof e==`string`?{serialized:e,contentType:void 0}:typeof e==`object`||Array.isArray(e)?{serialized:JSON.stringify(e),contentType:`application/json`}:{serialized:String(e),contentType:void 0},Bt=e=>{let t=e.get(`content-type`)??``;return t.includes(`application/json`)?`json`:t.startsWith(`text/`)?`text`:`raw`},Vt=async(e,t,n,r,i)=>{let a=t??Bt(e.headers),o,s={};switch(a){case`json`:{let t=await e.text();s.value=t;try{o=JSON.parse(t)}catch(e){throw Lt.decodeError(n,r,t,e)}break}case`text`:o=await e.text(),s.value=o;break;case`blob`:o=await e.blob();break;case`arrayBuffer`:o=await e.arrayBuffer();break;case`raw`:o=e;break}return{data:i?(()=>{try{return i(o)}catch(e){let t=s.value??(typeof o==`string`?o:JSON.stringify(o));throw Lt.decodeError(n,r,t,e)}})():o,status:e.status,statusText:e.statusText,headers:e.headers}},G=(e,t)=>{let n=Rt(e.baseUrl,t.url),{serialized:r,contentType:i}=zt(t.body),a={...e.defaultHeaders,...t.headers,...i?{"Content-Type":i}:{}};return H.tryAsync(i=>(e.fetch??globalThis.fetch)(n,{method:t.method,headers:a,body:r,signal:t.signal??i}).then(async e=>{if(!e.ok){let r=await e.text().catch(()=>``);throw Lt.httpStatusError(n,t.method,e.status,e.statusText,r)}return Vt(e,t.parseAs,n,t.method,t.validate)}),e=>typeof e==`object`&&e&&`_tag`in e?e:Lt.networkError(n,t.method,e))},K=e=>G(It,e),Ht=r({},{request:K,get:(e,t)=>K({...t,url:e,method:`GET`}),post:(e,t)=>K({...t,url:e,method:`POST`}),put:(e,t)=>K({...t,url:e,method:`PUT`}),patch:(e,t)=>K({...t,url:e,method:`PATCH`}),delete:(e,t)=>K({...t,url:e,method:`DELETE`}),head:(e,t)=>K({...t,url:e,method:`HEAD`,parseAs:`raw`}),options:(e,t)=>K({...t,url:e,method:`OPTIONS`,parseAs:`raw`}),client:e=>({request:t=>G(e,t),get:(t,n)=>G(e,{...n,url:t,method:`GET`}),post:(t,n)=>G(e,{...n,url:t,method:`POST`}),put:(t,n)=>G(e,{...n,url:t,method:`PUT`}),patch:(t,n)=>G(e,{...n,url:t,method:`PATCH`}),delete:(t,n)=>G(e,{...n,url:t,method:`DELETE`}),head:(t,n)=>G(e,{...n,url:t,method:`HEAD`,parseAs:`raw`}),options:(t,n)=>G(e,{...n,url:t,method:`OPTIONS`,parseAs:`raw`})})}),Ut={toOption:e=>e.fold(()=>p(),e=>d(e)),toList:e=>e.fold(()=>C([]),e=>C([e])),toEither:(e,t)=>e.fold(()=>T(t),e=>w(e)),isEmpty:e=>e.fold(()=>!0,()=>!1),size:e=>e.fold(()=>0,()=>1)},q=e=>typeof e==`object`&&!!e&&(e._tag===`Some`||e._tag===`None`),J=e=>typeof e==`object`&&!!e&&e._tag===`List`,Wt=e=>typeof e==`object`&&!!e&&(e._tag===`Left`||e._tag===`Right`),Gt=e=>typeof e==`object`&&!!e&&(e._tag===`Success`||e._tag===`Failure`),Y=()=>{let e=(e,t)=>{if(q(e)||J(e)||Wt(e)||Gt(e))return e.map(e=>t(e));throw Error(`Unsupported functor type: ${JSON.stringify(e)}`)},t=e=>{if(q(e))return e.orThrow();if(J(e)){let t=e.toArray();if(t.length>0&&J(t[0])){let e=[];for(let n of t)J(n)&&e.push(...n.toArray());return C(e)}return e.flatten()}if(Wt(e))return e.isRight()?e.fold(()=>null,e=>e):e;if(Gt(e))return e.isSuccess()?e.orThrow():e;throw Error(`Unsupported functor type for flatten: ${JSON.stringify(e)}`)},n=(e,t)=>{if(q(e)||J(e)||Wt(e)||Gt(e))return e.flatMap(e=>t(e));throw Error(`Unsupported functor type for flatMap: ${JSON.stringify(e)}`)},r=(e,t)=>{if(q(e)&&q(t)||J(e)&&J(t)||Wt(e)&&Wt(t)||Gt(e)&&Gt(t))return e.flatMap(e=>t.map(t=>e(t)));throw Error(`Unsupported functor type for ap: ${JSON.stringify(e)}`)},i=e=>{if(q(e)){let t=e;if(t.isEmpty)return C([m.none()]);let n=t.orThrow();if(J(n))return n.map(e=>m(e));throw Error(`Unsupported inner container type for sequence`)}if(J(e)){let t=e.toArray();if(t.length===0)return m.none();let n=t[0];if(q(n)){for(let e of t)if(e.isEmpty)return m.none();return m(C(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`}},Kt=Y();Y.map=(e,t)=>Kt.map(e,t),Y.flatten=e=>Kt.flatten(e),Y.flatMap=(e,t)=>Kt.flatMap(e,t),Y.ap=(e,t)=>Kt.ap(e,t),Y.sequence=e=>Kt.sequence(e),Y.traverse=(e,t)=>Kt.traverse(e,t),Y.isOption=q,Y.isList=J,Y.isEither=Wt,Y.isTry=Gt;const qt=e=>({id:e,isSame:t=>t.id===e}),Jt=r(qt,{of:e=>qt(e),pure:e=>qt(e)}),Yt=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=>X(()=>{try{return o()}catch{return e.orThrow()}}),orUndefined:()=>{try{return o()}catch{return}},map:e=>X(()=>e(o())),ap:e=>X(()=>e.orThrow()(o())),mapAsync:async e=>{let t=await e(o());return X(()=>t)},flatMap:e=>X(()=>e(o()).orThrow()),flatMapAsync:async e=>{let t=await e(o());return X(()=>t.orThrow())},filter:e=>X(()=>{let t=o();return e(t)?d(t):p}),recover:e=>X(()=>{try{return o()}catch(t){return e(t)}}),recoverWith:e=>X(()=>{try{return o()}catch(t){return e(t).orThrow()}}),toOption:()=>{try{return d(o())}catch{return p}},toEither:()=>{try{return w(o())}catch(e){return T(e)}},toEitherWith:e=>{try{return w(o())}catch(t){return T(e(t))}},toTry:()=>x(()=>o()),tap:e=>X(()=>{let t=o();return e(t),t}),tapError:e=>X(()=>{try{return o()}catch(t){throw e(t),t}}),fold:e=>e(o()),foldWith:(e,t)=>{try{return t(o())}catch(t){return e(t)}},foldLeft:e=>t=>t(e,o()),foldRight:e=>t=>t(o(),e),match:e=>e.Lazy(o()),toString:()=>t&&!a?`Lazy(${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`}},X=r(Yt,{of:e=>Yt(e),fromValue:e=>Yt(()=>e),fromOption:(e,t)=>Yt(()=>e._tag===`Some`?e.value:t()),fromTry:e=>Yt(()=>e.orThrow()),fromEither:e=>Yt(()=>e.fold(e=>{throw e},e=>e)),fromPromise:e=>Yt(()=>{throw Error(`Promise not yet resolved. Use await on the promise before creating Lazy.`)}),fail:e=>Yt(()=>{throw e})}),Xt=Map,Z=e=>{let t={values:new Xt(e)},n=()=>Array.from(t.values.entries()).map(([e,t])=>i([e,t])),r=e=>Z(new Xt(t.values).set(e.toArray()[0],e.toArray()[1]).entries()),a=e=>{let n=new Xt(t.values);return n.delete(e)?Z(n.entries()):Z(t.values.entries())},s=e=>{let n=e.toArray();return t.values.get(n[0])===n[1]},c=()=>t.values.size,l=e=>Z(Array.from(t.values.entries()).map(([t,n])=>[t,e(n)])),u=e=>Z(Z(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 Z(n)},d=async e=>{let n=new Xt;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 Z(n.entries())},f=e=>C(n()).reduce(e),p=e=>C(n()).reduceRight(e),te=e=>t=>C(n()).foldLeft(e)(t),ne=e=>t=>C(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)=>C(n()).fold(e,t),se=()=>C(n()),_=()=>oe(n()),ce=()=>`Map(${n().toString()})`,le=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:le,get:h,getOrElse:g,get isEmpty(){return re()},orElse:ie,toList:se,toSet:_,toString:ce,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()))}},Zt=e=>Z(e),Qt=Z([]),$t={empty:()=>Qt,of:(...e)=>Z(e),fromJSON:e=>en(JSON.parse(e).value),fromYAML:e=>{let t=e.split(`
|
|
18
|
+
`)[1]?.split(`: `)[1];return en(t?JSON.parse(t):[])},fromBinary:e=>{let t=Buffer.from(e,`base64`).toString();return $t.fromJSON(t)}},en=r(Zt,$t),tn={default:e=>t=>e(t),when:(e,t)=>n=>e(n)?t(n):void 0},Q=e=>({[Symbol.toStringTag]:`Obj`,_tag:`Obj`,data:e,get:t=>m(e[t]),set:(t,n)=>Q({...e,[t]:n}),assign:t=>Q({...e,...t}),merge:t=>Q({...e,...t}),when:(t,n)=>(typeof t==`function`?t():t)?Q({...e,...n}):Q(e),omit:(...t)=>{let n={...e};for(let e of t)delete n[e];return Q(n)},pick:(...t)=>{let n={};for(let r of t)r in e&&(n[r]=e[r]);return Q(n)},keys:()=>C(Object.keys(e)),values:()=>C(Object.values(e)),entries:()=>C(Object.entries(e).map(([e,t])=>i([e,t]))),has:t=>t in e,value:()=>e,get isEmpty(){return Object.keys(e).length===0},get size(){return Object.keys(e).length},map:t=>Q(t(e)),flatMap:t=>t(e),flatMapAsync:async t=>await t(e),ap:t=>{let n=t.data;return Q(n(e))},fold:(t,n)=>Object.keys(e).length===0?t():n(e),match:t=>t.Obj(e),foldLeft:t=>n=>n(t,e),foldRight:t=>n=>n(e,t),count:t=>t(e)?1:0,find:t=>t(e)?m(e):m(void 0),exists:t=>t(e),forEach:t=>t(e),reduce:t=>e,reduceRight:t=>e,contains:t=>JSON.stringify(e)===JSON.stringify(t),orElse:t=>e,orThrow:t=>e,or:t=>Q(e),orNull:()=>e,orUndefined:()=>e,toOption:()=>m(e),toEither:t=>w(e),toList:()=>C([e]),toTry:()=>x(()=>e),toPromise:()=>Promise.resolve(e),toString:()=>`Obj(${n(e)})`,toValue:()=>({_tag:`Obj`,value:e}),pipe:t=>t(e),serialize:()=>o(`Obj`,e),doUnwrap(){return{ok:!0,value:e}}}),nn=e=>Q(e),rn={of:e=>Q(e),empty:()=>Q({}),fromJSON:e=>Q(JSON.parse(e).value),fromBinary:e=>{let t=Buffer.from(e,`base64`).toString();return rn.fromJSON(t)}},an=r(nn,rn),$=(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=()=>C(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`)})}},on=(e=[])=>$(e),sn={empty:()=>$([]),of:e=>$([e]),fromJSON:e=>cn(JSON.parse(e).value),fromYAML:e=>{let t=e.split(`
|
|
19
|
+
`)[1]?.split(`: `)[1];return cn(t?JSON.parse(t):[])},fromBinary:e=>{let t=Buffer.from(e,`base64`).toString();return sn.fromJSON(t)}},cn=r(on,sn);function ln(e){let t=pe({_tag:e._tag,impl:e.impl});return{...t,toValue:()=>({_tag:t._tag,value:e.value})}}export{Pe as $,ht as A,s as At,O as B,P as C,ue as Ct,vt as D,m as Dt,M as E,p as Et,pt as F,l as Ft,Ye as G,A as H,dt as I,a as It,qe as J,Xe as K,ut as L,it as M,o as Mt,ot as N,u as Nt,_t as O,te as Ot,ft as P,c as Pt,ze as Q,st as R,I as S,x as St,xt as T,oe as Tt,$e as U,k as V,Ze as W,Ve as X,We as Y,Re as Z,jt as _,Se as _t,en as a,Me as at,Ot as b,pe as bt,Jt as c,Fe as ct,Ht as d,T as dt,Le as et,Lt as f,w as ft,Pt as g,be as gt,W as h,xe as ht,tn as i,Be as it,lt as j,ee as jt,gt as k,d as kt,Y as l,E as lt,Nt as m,Ce as mt,cn as n,Ne as nt,Xt as o,ke as ot,Ft as p,we as pt,Je as q,an as r,Ae as rt,X as s,Ie as st,ln as t,je as tt,Ut as u,Oe as ut,At as v,Te as vt,Ct as w,_ as wt,Dt as x,me as xt,H as y,C as yt,ct as z};
|
package/dist/try/index.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { Gn as Try, Kn as TypeNames } from "../index-DN9rYP81.js";
|
|
2
2
|
export { Try, TypeNames };
|
package/dist/try/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{
|
|
1
|
+
import{St as e}from"../src-BhBVtHJY.js";export{e as Try};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "functype",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.54.0",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "A functional programming library for TypeScript, using immutable data structures and type classes",
|
|
6
6
|
"author": "jordan.burke@gmail.com",
|
|
@@ -48,14 +48,14 @@
|
|
|
48
48
|
"devDependencies": {
|
|
49
49
|
"@eslint/compat": "^2.0.3",
|
|
50
50
|
"@types/node": "~24.10.15",
|
|
51
|
-
"eslint-config-functype": "2.
|
|
51
|
+
"eslint-config-functype": "2.1.1",
|
|
52
52
|
"eslint-plugin-functional": "^9.0.4",
|
|
53
53
|
"fast-check": "^4.6.0",
|
|
54
54
|
"globals": "^17.4.0",
|
|
55
|
-
"ts-builds": "^2.
|
|
56
|
-
"tsdown": "^0.21.
|
|
55
|
+
"ts-builds": "^2.6.2",
|
|
56
|
+
"tsdown": "^0.21.7",
|
|
57
57
|
"tsx": "^4.21.0",
|
|
58
|
-
"typedoc": "^0.28.
|
|
58
|
+
"typedoc": "^0.28.18"
|
|
59
59
|
},
|
|
60
60
|
"types": "./dist/index.d.ts",
|
|
61
61
|
"module": "./dist/index.js",
|
|
@@ -164,6 +164,11 @@
|
|
|
164
164
|
"types": "./dist/util/index.d.ts",
|
|
165
165
|
"import": "./dist/util/index.js",
|
|
166
166
|
"default": "./dist/util/index.js"
|
|
167
|
+
},
|
|
168
|
+
"./fetch": {
|
|
169
|
+
"types": "./dist/fetch/index.d.ts",
|
|
170
|
+
"import": "./dist/fetch/index.js",
|
|
171
|
+
"default": "./dist/fetch/index.js"
|
|
167
172
|
}
|
|
168
173
|
},
|
|
169
174
|
"bin": {
|
|
@@ -173,5 +178,5 @@
|
|
|
173
178
|
"dist"
|
|
174
179
|
],
|
|
175
180
|
"sideEffects": false,
|
|
176
|
-
"packageManager": "pnpm@10.
|
|
181
|
+
"packageManager": "pnpm@10.33.0+sha512.10568bb4a6afb58c9eb3630da90cc9516417abebd3fabbe6739f0ae795728da1491e9db5a544c76ad8eb7570f5c4bb3d6c637b2cb41bfdcdb47fa823c8649319"
|
|
177
182
|
}
|
package/dist/src-D3ewZ2Rm.js
DELETED
|
@@ -1,19 +0,0 @@
|
|
|
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
|
-
`),toBinary:()=>Buffer.from(JSON.stringify(e)).toString(`base64`)}),c=(e,t)=>t(JSON.parse(e)),l=(e,t)=>{let n=e.split(`
|
|
3
|
-
`),r={};for(let e of n){let t=e.indexOf(`: `);if(t===-1)continue;let n=e.substring(0,t),i=e.substring(t+2);if(!i){r[n]=null;continue}try{r[n]=i===`null`?null:JSON.parse(i)}catch{r[n]=i}}return t(r)},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:()=>C([e]),contains:t=>t===e,size:1,toOption:()=>d(e),toEither:t=>w(e),toTry:()=>x(()=>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:()=>C([]),contains:()=>!1,size:0,toOption:()=>f,toEither:e=>T(e),toTry:()=>x(()=>{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)=>{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:()=>C(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)}),ce=(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)}},le=()=>{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}},v=e=>{let t={[Symbol.toStringTag]:`LazyList`,_tag:`LazyList`,[Symbol.iterator]:()=>e[Symbol.iterator](),map:t=>v((function*(){for(let n of e)yield t(n)})()),flatMap:t=>v((function*(){for(let n of e)yield*t(n)})()),filter:t=>v((function*(){for(let n of e)t(n)&&(yield n)})()),take:t=>v((function*(){let n=ce(0);for(let r of e){if(n.get()>=t)break;yield r,n.increment()}})()),drop:t=>v((function*(){let n=ce(0);for(let r of e)n.get()>=t&&(yield r),n.increment()})()),takeWhile:t=>v((function*(){for(let n of e){if(!t(n))break;yield n}})()),dropWhile:t=>v((function*(){let n=_(!0);for(let r of e)n.get()&&t(r)||(n.set(!1),yield r)})()),concat:t=>v((function*(){yield*e,yield*t})()),zip:t=>v((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:()=>C(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=ce(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 v((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 v(t.length===0?[]:t.slice(0,-1))},takeRight:t=>{let n=Array.from(e);return v(t<=0?[]:n.slice(-t))},reverse:()=>v(Array.from(e).reverse()),distinct:()=>v((function*(){let t=new globalThis.Set;for(let n of e)t.has(n)||(t.add(n),yield n)})()),zipWithIndex:()=>v((function*(){let t=ce(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=ce(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},ue=r(e=>v(e),{empty:()=>v([]),of:e=>v([e]),from:(...e)=>v(e),iterate:(e,t)=>v((function*(){let n=_(e);for(;;)yield n.get(),n.set(t(n.get()))})()),generate:e=>v((function*(){for(;;)yield e()})()),range:(e,t,n=1)=>v((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)=>v((function*(){if(t===void 0)for(;;)yield e;else{let n=ce(0);for(;n.get()<t;)yield e,n.increment()}})()),cycle:e=>v((function*(){let t=Array.from(e);if(t.length!==0)for(;;)yield*t})())}),y=e=>({[Symbol.toStringTag]:`Try`,_tag:`Success`,error:void 0,isSuccess(){return!0},isFailure(){return!1},orElse:t=>e,orThrow:t=>e,or:t=>y(e),orNull:()=>e,orUndefined:()=>e,toEither:t=>w(e),map:t=>x(()=>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=>y(e),recoverWith:t=>y(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:()=>C([e]),toTry:()=>y(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}}}),b=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=>T(e),map:t=>b(e),ap:t=>b(e),flatMap:t=>b(e),flatMapAsync:t=>Promise.resolve(b(e)),fold:(t,n)=>t(e),match:t=>t.Failure(e),recover:t=>x(()=>t(e)),recoverWith:t=>{try{return t(e)}catch(e){return b(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:()=>C([]),toTry:()=>b(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}}}),de=e=>{try{return y(e())}catch(e){return b(e instanceof Error?e:Error(String(e)))}},fe={success:e=>y(e),failure:e=>b(typeof e==`string`?Error(e):e),fromPromise:e=>e.then(e=>y(e)).catch(e=>b(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 y(t.value);{let e=Error(t.error);return t.stack&&(e.stack=t.stack),b(e)}},fromYAML:e=>{let t=e.split(`
|
|
6
|
-
`),n=t[0]?.split(`: `)[1];if(!n)return b(Error(`Invalid YAML format for Try`));if(n===`Success`){let e=t[1]?.split(`: `)[1];return e?y(JSON.parse(e)):b(Error(`Invalid YAML format for Try Success`))}else{let e=t[1]?.split(`: `)[1];if(!e)return b(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),b(i)}},fromBinary:e=>{let t=Buffer.from(e,`base64`).toString();return fe.fromJSON(t)}},x=r(de,fe);function pe({_tag:e,impl:t}){return{...t,_tag:e}}function me(e,t){return!e||typeof e!=`object`||!(`_tag`in e)?!1:t?e._tag===t:!0}const S=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=>S(t.map(e)),ap:e=>S(t.flatMap(t=>Array.from(e).map(e=>e(t)))),flatMap:e=>S(t.flatMap(t=>Array.from(e(t)))),flatMapAsync:async e=>S((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=>S(t.filter(e)),filterNot:e=>S(t.filter(t=>!e(t))),filterType:e=>S(t.filter(t=>me(t,e))),find:(e,n)=>m(t.find(t=>e(t)&&(n?me(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=>S(t.filter(t=>t!==e)),removeAt:e=>e<0||e>=t.length?r:S([...t.slice(0,e),...t.slice(e+1)]),add:e=>S([...t,e]),get:e=>m(t[e]),concat:e=>S([...t,...e.toArray()]),take:e=>S(t.slice(0,Math.max(0,e))),takeWhile:e=>{let n=[];for(let r of t){if(!e(r))break;n.push(r)}return S(n)},takeRight:e=>S(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 S(t.slice(1))},get init(){return S(t.length===0?[]:t.slice(0,-1))},reverse:()=>S([...t].reverse()),indexOf:e=>t.indexOf(e),prepend:e=>S([e,...t]),distinct:()=>{let e=new globalThis.Set,n=[];for(let r of t)e.has(r)||(e.add(r),n.push(r));return S(n)},sorted:e=>S([...t].sort(e)),sortBy:(e,n)=>S([...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 S(i)},zipWithIndex:()=>S(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,S(t));return r},partition:e=>{let n=[],r=[];for(let i of t)e(i)?n.push(i):r.push(i);return[S(n),S(r)]},span:e=>{let n=t.findIndex(t=>!e(t));return n===-1?[S([...t]),S([])]:[S(t.slice(0,n)),S(t.slice(n))]},slice:(e,n)=>S(t.slice(e,n)),drop:e=>S(t.slice(e)),dropRight:e=>S(t.slice(0,-e)),dropWhile:e=>S(t.slice(t.findIndex(t=>!e(t)))),flatten:()=>S(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?w(t[0]):T(e),toTry:()=>t.length>0?x(()=>t[0]):x(()=>{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},he=e=>S(e),ge=S([]),_e={empty:()=>ge,of:(...e)=>S(e),fromJSON:e=>C(JSON.parse(e).value),fromYAML:e=>{let t=e.split(`
|
|
7
|
-
`)[1]?.split(`: `)[1];return C(t?JSON.parse(t):[])},fromBinary:e=>{let t=Buffer.from(e,`base64`).toString();return _e.fromJSON(t)}},C=r(he,_e),ve=e=>({[Symbol.toStringTag]:`Either`,_tag:`Right`,value:e,isLeft(){return!1},isRight(){return!0},orElse:t=>e,orThrow:()=>e,or:t=>w(e),orNull:()=>e,orUndefined:()=>e,map:t=>w(t(e)),ap:t=>t._tag===`Right`?w(t.value(e)):T(t.value),mapAsync:t=>t(e).then(e=>w(e)).catch(e=>Promise.resolve(T(e))),merge:t=>t.isLeft()?T(t.value):w([e,t.value]),flatMap:t=>t(e),flatMapAsync:t=>t(e).catch(e=>T(e)),toOption:()=>d(e),toList:()=>C([e]),toEither:t=>w(e),toTry:()=>x(()=>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()?T(n.value):w([n.value])},*lazyMap(t){yield w(t(e))},tap:t=>(t(e),w(e)),tapLeft:t=>w(e),mapLeft:t=>w(e),bimap:(t,n)=>w(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:()=>T(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}}}),ye=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=>T(e),ap:t=>T(e),mapAsync:t=>Promise.resolve(T(e)),merge:t=>T(e),flatMap:t=>T(e),flatMapAsync:t=>Promise.resolve(T(e)),toOption:()=>p(),toList:()=>C(),toEither:e=>T(e),toTry:()=>x(()=>{throw Error(String(e))}),toJSON(){return{_tag:`Left`,value:e}},toString:()=>`Left(${n(e)})`,*[Symbol.iterator](){},*yield(){},traverse:t=>T(e),*lazyMap(t){yield T(e)},tap:t=>T(e),tapLeft:t=>(t(e),T(e)),mapLeft:t=>T(t(e)),bimap:(t,n)=>T(t(e)),fold:(t,n)=>t(e),foldLeft:e=>t=>e,foldRight:e=>t=>e,match:t=>t.Left(e),swap:()=>w(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}}}),w=e=>ve(e),T=e=>ye(e),be=e=>e.isRight(),xe=e=>e.isLeft(),Se=(e,t)=>{try{return w(e())}catch(e){return T(t(e))}},Ce=e=>ve(e);console.assert(Ce);const we=e=>ye(e);console.assert(we);const Te=async(e,t)=>{try{return w(await e())}catch(e){return T(t(e))}},Ee=(e,t)=>t?w(e):T(e),De={left:e=>T(e),right:e=>w(e),isRight:e=>e.isRight(),isLeft:e=>e.isLeft(),sequence:e=>e.reduce((e,t)=>e.isLeft()?e:t.isLeft()?T(t.value):e.map(e=>[...e,t.value]),w([])),traverse:(e,t)=>De.sequence(e.map(t)),fromNullable:(e,t)=>e==null?T(t):w(e),fromPredicate:(e,t,n)=>t(e)?w(e):T(n),ap:(e,t)=>e.flatMap(e=>t.map(e)),fromPromise:async(e,t)=>{try{return w(await e)}catch(e){return T(t(e))}},fromJSON:e=>{let t=JSON.parse(e);return t._tag===`Right`?w(t.value):T(t.value)},fromYAML:e=>{let t=e.split(`
|
|
8
|
-
`),n=t[0]?.split(`: `)[1],r=t[1]?.split(`: `)[1];if(!n||!r)throw Error(`Invalid YAML format for Either`);let i=JSON.parse(r);return n===`Right`?w(i):T(i)},fromBinary:e=>{let t=Buffer.from(e,`base64`).toString();return De.fromJSON(t)}},Oe=r(Ee,De);function E(t,n){return{brand:t,validate:n,of:r=>n(r)?m(e(t,r)):m.none(),from:r=>n(r)?w(e(t,r)):T(`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)=>E(e,e=>n(e)&&t(e))}}const ke=E(`PositiveNumber`,e=>e>0),Ae=E(`NonNegativeNumber`,e=>e>=0),je=E(`IntegerNumber`,e=>Number.isInteger(e)),Me=ke.refine(`PositiveInteger`,e=>Number.isInteger(e)),Ne=E(`NonEmptyString`,e=>e.length>0),Pe=E(`EmailAddress`,e=>/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(e)),Fe=E(`UrlString`,e=>{try{return new URL(e),!0}catch{return!1}}),Ie=E(`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)),Le=E(`ISO8601Date`,e=>!isNaN(Date.parse(e))&&/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}/.test(e));function Re(e,t,n){return E(e,e=>e>=t&&e<=n)}function ze(e,t,n){return E(e,e=>e.length>=t&&e.length<=n)}function Be(e,t){return E(e,e=>t.test(e))}const Ve=e=>typeof e==`function`&&Object.keys(e).length>0,He=e=>{let t=e=>typeof e==`function`?e():e,n={when:(r,i)=>e.resolved?n:r?He({resolved:!0,value:t(i)}):n,elseWhen:(r,i)=>e.resolved?n:r?He({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},Ue=()=>He({resolved:!1}),We=r(Ue,{of:()=>Ue(),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}}),D=(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 D(r,n)}):!1,O=e=>{let t=(e,t)=>typeof e==`function`?e(t):e,n=()=>{for(let{pattern:n,result:r}of e.patterns)if(D(e.value,n))return{matched:!0,result:t(r,e.value)};return{matched:!1}},r={case:(n,i)=>e.resolved?r:D(e.value,n)?O({value:e.value,resolved:!0,result:t(i,e.value),patterns:[]}):O({...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 O({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 O({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(D(e.value,r))return O({value:e.value,resolved:!0,result:t(i,e.value),patterns:[]});return O({...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},Ge=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 D(e,n)?O({...i,resolved:!0,result:t(r,e)}):O(i)},caseValue:(t,n)=>O(e===t?{value:e,resolved:!0,result:typeof n==`function`?n():n,patterns:[]}:{value:e,resolved:!1,patterns:[]}),caseValues:(t,n)=>t.includes(e)?O({value:e,resolved:!0,result:typeof n==`function`?n():n,patterns:[]}):O({value:e,resolved:!1,patterns:[]}),when:(n,r)=>{let i={value:e,resolved:!1,patterns:[{pattern:n,result:r}]};return n(e)?O({...i,resolved:!0,result:t(r,e)}):O(i)},caseAny:(n,r)=>{for(let i of n)if(D(e,i))return O({value:e,resolved:!0,result:t(r,e),patterns:n.map(e=>({pattern:e,result:r}))});return O({value:e,resolved:!1,patterns:n.map(e=>({pattern:e,result:r}))})}}},Ke=r(e=>Ge(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(D(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(D(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 qe(e,t){return{...pe({_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 Je=`Throwable`;var Ye=class e extends Error{constructor(e,t){super(e,{cause:t?.cause}),this._tag=Je,this.name=t?.taskInfo?.name??`Throwable`,Object.defineProperties(this,{_tag:{value:Je,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 Xe(e){return e instanceof Error&&typeof e==`object`&&e._tag===`Throwable`}const Ze=(e,t)=>{if(e.isRight())return A(e.orThrow(),t);if(e.isLeft())return k(e.fold(e=>e,()=>Error(`Unexpected right value`)),void 0,t);throw Error(`Unrecognized task outcome`)},k=(e,t,r)=>{let i={name:r?.name??`Task`,description:r?.description??``},a=Ye.apply(e,t,i),o={...qe(`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=>k(a,t,r),flatMap:e=>k(a,t,r),ap:e=>k(a,t,r),mapAsync:e=>Promise.resolve(k(a,t,r)),flatMapAsync:e=>Promise.resolve(k(a,t,r)),mapError:e=>k(e(a),t,r),recover:e=>A(e,r),recoverWith:e=>A(e(a),r),orThrow:e=>{throw e??a},orElse:e=>e,or:e=>e,orNull:()=>null,orUndefined:()=>void 0,toEither:()=>T(a),toTry:()=>x(()=>{throw a}),toOption:()=>p(),toList:()=>C([]),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},A=(e,t)=>{let r={name:t?.name??`Task`,description:t?.description??``},i={...qe(`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=>A(n(e),t),flatMap:n=>{let r=n(e);return r&&typeof r==`object`&&`isLeft`in r&&`isRight`in r?Ze(r,t):r},ap:n=>n.isOk()?A(n.value(e),t):k(n.error,void 0,t),mapAsync:async n=>A(await n(e),t),flatMapAsync:async t=>await t(e),mapError:n=>A(e,t),recover:n=>A(e,t),recoverWith:n=>A(e,t),orThrow:t=>e,orElse:t=>e,or:n=>A(e,t),orNull:()=>e,orUndefined:()=>e,toEither:()=>w(e),toTry:()=>x(()=>e),toOption:()=>d(e),toList:()=>C([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},Qe=()=>{let e=new AbortController,t=le();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)}}))}}},$e=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(k(e,void 0,{name:t,description:n}));return}o(k(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(k(e,void 0,{name:t,description:n}));return}if(s.get()){c.get()?o(k(c.get(),void 0,{name:t,description:n})):o(k(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(A(r,{name:t,description:n}))}else o(A(r,{name:t,description:n}))}catch(e){try{await i()}catch(e){o(k(e,void 0,{name:t,description:n}));return}if(s.get()){c.get()?o(k(c.get(),void 0,{name:t,description:n})):o(k(Error(`Task was cancelled during execution`),void 0,{name:t,description:n}));return}try{if(e instanceof Error&&Xe(e)){let i=Error(`${t}: ${e.message}`),a=Ye.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(k(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(k(i,void 0,{name:t,description:n}))}else o(k(i,void 0,{name:t,description:n}))}}catch(e){o(k(e,void 0,{name:t,description:n}))}}finally{l.get()()}})().catch(e=>o(k(e,void 0,{name:t,description:n})))}),Sync:(e,r=e=>e,i=()=>{})=>{try{return A(e(),{name:t,description:n})}catch(e){return k(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{...qe(`Task`,r),_type:`Task`}},et={success:(e,t)=>A(e,t),fail:(e,t,n)=>k(e,t,n),ok:(e,t)=>A(e,t),err:(e,t,n)=>k(e,t,n),fromEither:(e,t)=>Ze(e,t),fromTry:(e,t)=>e.isSuccess()?A(e.orThrow(),t):k(e.fold(e=>e,()=>Error(`Unexpected success`)),void 0,t),getErrorChain:e=>{if(!e)return[];let t=le();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=et.getErrorChain(e),r=t?.separator??`
|
|
9
|
-
`;return n.map((e,n)=>{if(!e)return`${n>0?`↳ `:``}Unknown error`;let{taskInfo:r}=e,i=t?.includeTasks&&r?.name?`[${r.name}] `:``,a=e.message??`No message`,o=_(`${n>0?`↳ `:``}${i}${a}`);return t?.includeStackTrace&&e.stack&&o.set(`${o.get()}\n${e.stack.split(`
|
|
10
|
-
`).slice(1).join(`
|
|
11
|
-
`)}`),o.get()}).join(r)},fromPromise:(e,t)=>(...n)=>j(t??{name:`PromiseTask`,description:`Task from Promise`}).Async(()=>e(...n),e=>e),toPromise:e=>new Promise((t,n)=>{e.isSuccess()?t(e.orThrow()):n(e.error)}),race:(e,t,n)=>j({name:n?.name??`TaskRace`,description:n?.description??`Race between multiple tasks`}).Async(async()=>{let n=le();e.forEach(e=>n.add(e));let r=_(void 0);if(typeof t==`number`&&t>0){let e=new Promise((e,n)=>{r.set(setTimeout(()=>{n(Error(`Task race timed out after ${t}ms`))},t))});n.add(e)}try{return await new Promise((e,t)=>{n.build().forEach(n=>{n.then(n=>{if(n&&typeof n==`object`&&`_tag`in n){let r=n;r._tag===`Ok`?e(r.orThrow()):r._tag===`Err`?t(r.error):e(n)}else e(n)},e=>t(e))})})}finally{r.get()&&clearTimeout(r.get())}},e=>e),fromNodeCallback:(e,t)=>{let n={name:t?.name??`NodeCallbackTask`,description:t?.description??`Task from Node.js callback function`};return(...t)=>j(n).Async(()=>new Promise((n,r)=>{try{e(...t,(e,t)=>{e?r(e):n(t)})}catch(e){r(e)}}),e=>e)},createCancellationTokenSource:Qe,cancellable:(e,t)=>{let n=Qe();return{task:j(t).Async(()=>e(n.token),e=>e,()=>{},n.token),cancel:()=>n.cancel()}},withProgress:(e,t=()=>{},n)=>{let r=Qe(),i=_(0),a=e=>{i.set(Math.max(0,Math.min(100,e))),t(i.get())};return{task:j(n).Async(()=>e(a,r.token),e=>e,()=>{},r.token),cancel:()=>r.cancel(),currentProgress:()=>i.get()}}},j=r($e,et);function tt(e){if(!e||typeof e!=`object`||!(`_tag`in e))return`unknown`;switch(e._tag){case`Some`:case`None`:return`Option`;case`Left`:case`Right`:return`Either`;case`List`:return`List`;case`Success`:case`Failure`:return`Try`;default:return`unknown`}}const nt={Option:{of:e=>m(e),empty:()=>m.none()},Either:{of:e=>w(e),empty:e=>T(e)},List:{of:e=>C([e]),empty:()=>C([])},Try:{of:e=>x(()=>e),empty:e=>x(()=>{throw e??Error(`Try failed`)})}};function rt(e){let t=e(),n=null,r;function i(a){let o=t.next(a);if(o.done)return r?r.of(o.value):C([o.value]);let s=o.value;if(typeof s!=`object`||!s)throw Error(`Do-notation error: All yielded values must be monadic. Use yield* $(Option(value)), yield* $(Right(value)), etc. Raw values should be assigned directly without yielding.`);if(!n&&`_tag`in s&&(n=tt(s),n!==`unknown`&&n in nt&&(r=nt[n]),n===`List`))return it(e);if(`doUnwrap`in s){let e=s.doUnwrap();if(!e.ok){if(!r)return C([]);if(!e.empty&&`error`in e){if(n===`Either`)return r.empty(e.error);if(n===`Try`)return r.empty(e.error instanceof Error?e.error:Error(String(e.error)))}return r.empty()}return i(e.value)}throw Error(`Do-notation error: All yielded values must be monadic. Use yield* $(Option(value)), yield* $(Right(value)), etc. Raw values should be assigned directly without yielding.`)}return i()}function it(e){function t(e){if(typeof e!=`object`||!e||!(`doUnwrap`in e))return[e];let t=e;if(`toArray`in t){let e=t.toArray();return e.length===0?[]:e}let n=t.doUnwrap();return n.ok?[n.value]:[]}function n(r){let i=e(),a=[],o=[],s=0;function c(e){let l=i.next(e);if(l.done){a.push(l.value);return}if(s<r.length){let e=r[s];o.push(e),s++,c(e);return}let u=t(l.value);if(u.length!==0)if(u.length>1){let e=u.flatMap(e=>n([...o,e]));a.push(...e)}else o.push(u[0]),s++,c(u[0])}return c(void 0),a}return C(n([]))}async function at(e){let t=e(),n=null,r;async function i(e){let a=await t.next(e);if(a.done)return r?r.of(a.value):C([a.value]);let o=await Promise.resolve(a.value);if(typeof o!=`object`||!o)return i(o);if(!n&&`_tag`in o&&(n=tt(o),n!==`unknown`&&n in nt&&(r=nt[n])),`doUnwrap`in o){let e=o.doUnwrap();if(!e.ok){if(!r)return C([]);if(!e.empty&&`error`in e){if(n===`Either`)return r.empty(e.error);if(n===`Try`)return r.empty(e.error instanceof Error?e.error:Error(String(e.error)))}return r.empty()}return i(e.value)}return i(o)}return i()}function ot(e){return typeof e==`object`&&!!e&&`doUnwrap`in e&&typeof e.doUnwrap==`function`}function st(e){let t=e.doUnwrap();if(t.ok)return t.value;throw`error`in t?t.error:Error(`Cannot unwrap empty monad`)}function*ct(e){return yield e}const lt=(e=`Cannot unwrap None in Do-notation`)=>{let t=Error(e),n=Object.create(Error.prototype);return n.message=t.message,n.stack=t.stack,n.name=`NoneError`,n},ut=(e,t=`Cannot unwrap Left in Do-notation`)=>{let n=Error(t),r=Object.create(Error.prototype);return r.message=n.message,r.stack=n.stack,r.name=`LeftError`,r.value=e,r},dt=(e=`Cannot unwrap empty List in Do-notation`)=>{let t=Error(e),n=Object.create(Error.prototype);return n.message=t.message,n.stack=t.stack,n.name=`EmptyListError`,n},ft=(e,t=`Cannot unwrap Failure in Do-notation`)=>{let n=Error(t),r=Object.create(Error.prototype);return r.message=n.message,r.stack=n.stack,r.name=`FailureError`,r.cause=e,r},pt={includeTasks:!0,includeStackTrace:!1,separator:`
|
|
12
|
-
`,includeData:!1,maxStackFrames:3,title:`Error`,colors:!1};function mt(e){let t=new WeakSet;return JSON.stringify(e,(e,n)=>{if(typeof n==`bigint`)return`${n.toString()}n`;if(typeof n==`object`&&n){if(t.has(n))return`[Circular Reference]`;t.add(n)}return e===`stack`&&typeof n==`string`?ht(n):n},2)}function ht(e){if(e===void 0||e===``)return``;let t=e.split(`
|
|
13
|
-
`);return[t[0],...t.slice(1).map(e=>e.trim())].join(`
|
|
14
|
-
`)}function gt(e,t){let n={...pt,...t},r=e instanceof Error?e:Ye.apply(e),i=j?.getErrorChain?j.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=ht(e.stack).split(`
|
|
15
|
-
`).slice(1),i=n.maxStackFrames??pt.maxStackFrames??3,a=t.slice(0,i).map(e=>`${r} ${n.colors?`\x1B[90m`:``}${e}${n.colors?`\x1B[0m`:``}`).join(`
|
|
16
|
-
`);o+=`\n${a}`,t.length>i&&(o+=`\n${r} ${n.colors?`\x1B[90m`:``}...${t.length-i} more stack frames${n.colors?`\x1B[0m`:``}`)}return o}).join(n.separator)}`;if(n.includeData){let{data:e}=r;if(e){let t=n.colors?`\n\n\x1b[33mContext:\x1b[0m\n${mt(e)}`:`\n\nContext:\n${mt(e)}`;a+=t}}return a}function _t(){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?ht(t.stack):void 0};if(t.taskInfo&&(n.taskInfo=t.taskInfo),t.data&&(n.data=t.data),typeof j?.getErrorChain==`function`)try{let e=j.getErrorChain(t);e.length>1&&(n.errorChain=j.formatErrorChain(t,{includeTasks:!0}),n.structuredErrorChain=e.map(e=>({message:e.message,name:e.name,taskInfo:e.taskInfo,stack:e.stack?ht(e.stack):void 0})))}catch{}return Object.getOwnPropertyNames(t).forEach(e=>{n[e]||(n[e]=t[e])}),n}}const M=(e,n,r,i)=>t(Ye.apply(n,r,{name:e,description:n}),{code:e,message:n,status:vt(e),context:r,timestamp:new Date().toISOString(),traceId:i?.traceId}),vt=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],N=Object.assign(M,{validation:(e,t,n)=>M(`VALIDATION_FAILED`,`Validation failed: ${e} ${n}`,{field:e,value:t,rule:n}),network:(e,t,n)=>M(`NETWORK_ERROR`,`Network error: ${t} ${e}${n?` (${n})`:``}`,{url:e,method:t,statusCode:n}),auth:(e,t)=>M(`AUTH_REQUIRED`,`Authentication required: ${e}${t?` (role: ${t})`:``}`,{resource:e,requiredRole:t}),notFound:(e,t)=>M(`NOT_FOUND`,`Not found: ${e} with id ${t}`,{resource:e,id:t}),permission:(e,t,n)=>M(`PERMISSION_DENIED`,`Permission denied: cannot ${e} ${t}`,{action:e,resource:t,userId:n}),rateLimit:(e,t,n)=>M(`RATE_LIMITED`,`Rate limit exceeded: ${e} requests per ${t}`,{limit:e,window:t,retryAfter:n}),internal:e=>M(`INTERNAL_ERROR`,`Internal server error: ${e}`,{errorId:e,timestamp:new Date().toISOString()}),badRequest:(e,t)=>M(`BAD_REQUEST`,`Bad request: ${e}`,{reason:e,expected:t}),conflict:(e,t)=>M(`CONFLICT`,`Conflict: ${e} already exists with value ${t}`,{resource:e,conflictingValue:t}),timeout:(e,t)=>M(`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}),P={rule:e=>t=>{if(e===`email`)return typeof t!=`string`||!/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(t)?T(N.validation(`value`,t,`must be a valid email`)):w(t);if(e===`url`)try{return new URL(String(t)),w(t)}catch{return T(N.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)?T(N.validation(`value`,t,`must be a valid UUID`)):w(t);if(e===`required`)return t==null||t===``?T(N.validation(`value`,t,`is required`)):w(t);if(e===`numeric`)return typeof t!=`number`&&!/^\d+$/.test(String(t))?T(N.validation(`value`,t,`must be numeric`)):w(t);if(e===`alpha`)return typeof t!=`string`||!/^[a-zA-Z]+$/.test(t)?T(N.validation(`value`,t,`must contain only letters`)):w(t);if(e===`alphanumeric`)return typeof t!=`string`||!/^[a-zA-Z0-9]+$/.test(t)?T(N.validation(`value`,t,`must be alphanumeric`)):w(t);if(e.startsWith(`min:`)){let n=Number(e.split(`:`)[1]),r=Number(t);return isNaN(r)||r<n?T(N.validation(`value`,t,`must be at least ${n}`)):w(t)}if(e.startsWith(`max:`)){let n=Number(e.split(`:`)[1]),r=Number(t);return isNaN(r)||r>n?T(N.validation(`value`,t,`must be at most ${n}`)):w(t)}if(e.startsWith(`minLength:`)){let n=Number(e.split(`:`)[1]);return String(t).length<n?T(N.validation(`value`,t,`must be at least ${n} characters`)):w(t)}if(e.startsWith(`maxLength:`)){let n=Number(e.split(`:`)[1]);return String(t).length>n?T(N.validation(`value`,t,`must be at most ${n} characters`)):w(t)}if(e.startsWith(`pattern:`)){let n=e.substring(8);return new RegExp(n).test(String(t))?w(t):T(N.validation(`value`,t,`must match pattern ${n}`))}if(e.startsWith(`in:`)){let n=e.substring(3).split(`,`);return n.includes(String(t))?w(t):T(N.validation(`value`,t,`must be one of: ${n.join(`, `)}`))}if(e.startsWith(`notIn:`)){let n=e.substring(6).split(`,`);return n.includes(String(t))?T(N.validation(`value`,t,`must not be one of: ${n.join(`, `)}`)):w(t)}if(e===`date`){let e=new Date(String(t));return isNaN(e.getTime())?T(N.validation(`value`,t,`must be a valid date`)):w(t)}if(e===`future`){let e=new Date(String(t));return isNaN(e.getTime())||e<=new Date?T(N.validation(`value`,t,`must be a future date`)):w(t)}if(e===`past`){let e=new Date(String(t));return isNaN(e.getTime())||e>=new Date?T(N.validation(`value`,t,`must be a past date`)):w(t)}return w(t)},combine:(...e)=>t=>{for(let n of e){let e=n(t);if(e.isLeft())return e}return w(t)},custom:(e,t)=>n=>e(n)?w(n):T(N.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=N.validation(i,e,t.context.rule);n.push(r)}else r[i]=o.orThrow()}return n.length>0?T(C(n)):w(r)}},yt={...P,validators:{email:P.rule(`email`),url:P.rule(`url`),uuid:P.rule(`uuid`),required:P.rule(`required`),numeric:P.rule(`numeric`),positiveNumber:P.combine(P.rule(`numeric`),P.rule(`min:0`)),nonEmptyString:P.combine(P.rule(`required`),P.custom(e=>typeof e==`string`&&e.trim().length>0,`must not be empty`))}},bt=t(P.rule,yt);function xt(e){return typeof e==`object`&&!!e&&`orThrow`in e&&typeof e.orThrow==`function`}function St(e){return xt(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 Ct={toOption:e=>e.fold(()=>p(),e=>d(e)),toList:e=>e.fold(()=>C([]),e=>C([e])),toEither:(e,t)=>e.fold(()=>T(t),e=>w(e)),isEmpty:e=>e.fold(()=>!0,()=>!1),size:e=>e.fold(()=>0,()=>1)},F=e=>typeof e==`object`&&!!e&&(e._tag===`Some`||e._tag===`None`),I=e=>typeof e==`object`&&!!e&&e._tag===`List`,wt=e=>typeof e==`object`&&!!e&&(e._tag===`Left`||e._tag===`Right`),Tt=e=>typeof e==`object`&&!!e&&(e._tag===`Success`||e._tag===`Failure`),L=()=>{let e=(e,t)=>{if(F(e)||I(e)||wt(e)||Tt(e))return e.map(e=>t(e));throw Error(`Unsupported functor type: ${JSON.stringify(e)}`)},t=e=>{if(F(e))return e.orThrow();if(I(e)){let t=e.toArray();if(t.length>0&&I(t[0])){let e=[];for(let n of t)I(n)&&e.push(...n.toArray());return C(e)}return e.flatten()}if(wt(e))return e.isRight()?e.fold(()=>null,e=>e):e;if(Tt(e))return e.isSuccess()?e.orThrow():e;throw Error(`Unsupported functor type for flatten: ${JSON.stringify(e)}`)},n=(e,t)=>{if(F(e)||I(e)||wt(e)||Tt(e))return e.flatMap(e=>t(e));throw Error(`Unsupported functor type for flatMap: ${JSON.stringify(e)}`)},r=(e,t)=>{if(F(e)&&F(t)||I(e)&&I(t)||wt(e)&&wt(t)||Tt(e)&&Tt(t))return e.flatMap(e=>t.map(t=>e(t)));throw Error(`Unsupported functor type for ap: ${JSON.stringify(e)}`)},i=e=>{if(F(e)){let t=e;if(t.isEmpty)return C([m.none()]);let n=t.orThrow();if(I(n))return n.map(e=>m(e));throw Error(`Unsupported inner container type for sequence`)}if(I(e)){let t=e.toArray();if(t.length===0)return m.none();let n=t[0];if(F(n)){for(let e of t)if(e.isEmpty)return m.none();return m(C(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`}},Et=L();L.map=(e,t)=>Et.map(e,t),L.flatten=e=>Et.flatten(e),L.flatMap=(e,t)=>Et.flatMap(e,t),L.ap=(e,t)=>Et.ap(e,t),L.sequence=e=>Et.sequence(e),L.traverse=(e,t)=>Et.traverse(e,t),L.isOption=F,L.isList=I,L.isEither=wt,L.isTry=Tt;const Dt=e=>({id:e,isSame:t=>t.id===e}),Ot=r(Dt,{of:e=>Dt(e),pure:e=>Dt(e)}),kt=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),kt(r)},merge(t){let n=new Map(e);for(let[e,r]of t.services)n.set(e,r);return kt(n)},get size(){return e.size},toString(){return`Context(${Array.from(e.keys()).join(`, `)})`}}),R={empty:()=>kt(new Map),make:(e,t)=>{let n=new Map;return n.set(e.id,t),kt(n)},isContext:e=>typeof e==`object`&&!!e&&e._tag===`Context`},z=e=>({[Symbol.toStringTag]:`Exit`,_tag:`Success`,isSuccess(){return!0},isFailure(){return!1},isInterrupted(){return!1},map(t){return z(t(e))},mapError(t){return z(e)},mapBoth(t,n){return z(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 w(e)},toValue(){return{_tag:`Success`,value:e}},toString(){return`Exit.Success(${n(e)})`},toJSON(){return{_tag:`Success`,value:e}}}),At=e=>({[Symbol.toStringTag]:`Exit`,_tag:`Failure`,isSuccess(){return!1},isFailure(){return!0},isInterrupted(){return!1},map(t){return At(e)},mapError(t){return At(t(e))},mapBoth(t,n){return At(t(e))},flatMap(t){return At(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 T(e)},toValue(){return{_tag:`Failure`,error:e}},toString(){return`Exit.Failure(${n(e)})`},toJSON(){return{_tag:`Failure`,error:e}}}),jt=e=>({[Symbol.toStringTag]:`Exit`,_tag:`Interrupted`,isSuccess(){return!1},isFailure(){return!1},isInterrupted(){return!0},map(t){return jt(e)},mapError(t){return jt(e)},mapBoth(t,n){return jt(e)},flatMap(t){return jt(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}}}),B=r(e=>z(e),{succeed:e=>z(e),fail:e=>At(e),interrupt:e=>jt(e),interrupted:()=>jt(`interrupted`),isSuccess:e=>e.isSuccess(),isFailure:e=>e.isFailure(),isInterrupted:e=>e.isInterrupted(),fromEither:e=>e.isRight()?z(e.value):At(e.value),fromOption:(e,t)=>e.isSome()?z(e.value):At(t()),zip:(e,t)=>e.isInterrupted()?e:t.isInterrupted()?t:e.isFailure()?e:t.isFailure()?t:z([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 z(t)}}),V=e=>e;var Mt=class extends Error{constructor(e,t){super(t??`Effect timed out after ${e}ms`),this.duration=e,this._tag=`TimeoutError`,this.name=`TimeoutError`}},Nt=class extends Error{constructor(e){super(e??`Effect was interrupted`),this._tag=`InterruptedError`,this.name=`InterruptedError`}};const H=e=>{let t={[Symbol.toStringTag]:`IO`,_effect:e,map(e){return H(V({_tag:`Map`,effect:t,f:e}))},flatMap(e){return H(V({_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 H(V({_tag:`MapError`,effect:t,f:e}))},tapError(e){return t.mapError(t=>(e(t),t))},recover(e){return H(V({_tag:`Recover`,effect:t,fallback:e}))},recoverWith(e){return H(V({_tag:`RecoverWith`,effect:t,f:e}))},fold(e,n){return H(V({_tag:`Fold`,effect:t,onFailure:e,onSuccess:n}))},match(e){return t.fold(e.failure,e.success)},catchTag(e,n){return H(V({_tag:`RecoverWith`,effect:t,f:t=>typeof t==`object`&&t&&`_tag`in t&&t._tag===e?V(n(t)):V(G.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(()=>G.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 H(V({_tag:`ProvideContext`,effect:t,context:e}))},provideService(e,n){return H(V({_tag:`ProvideContext`,effect:t,context:R.make(e,n)}))},provideLayer(e){return V(V(G.async(async()=>{let t=R.empty();return await e.build(V(t))})).flatMap(e=>H(V({_tag:`ProvideContext`,effect:t,context:e}))))},async run(){let e=await W(this._effect);return e.isSuccess()?w(e.orThrow()):T(e.isFailure()?e.toValue().error:new Nt)},async runOrThrow(){let e=await W(this._effect);if(e.isSuccess())return e.orThrow();throw e.isFailure()?e.toValue().error:new Nt},runSync(){try{return w(U(this._effect))}catch(e){return T(e)}},runSyncOrThrow(){return U(this._effect)},async runExit(){return W(this._effect)},async runOption(){let e=await W(this._effect);return e.isSuccess()?d(e.orThrow()):p()},async runTry(){let e=await W(this._effect);if(e.isSuccess())return V(x(()=>e.orThrow()));let t=e.isFailure()?e.toValue().error:Error(`Effect was interrupted`);return V(x(()=>{throw t}))},pipe(e){return e(t)},delay(e){return V(G.async(()=>new Promise(t=>setTimeout(t,e))).flatMap(()=>t))},timeout(e){return H(V({_tag:`Timeout`,effect:t,duration:e}))},timeoutTo(e,n){return V(t.timeout(e).recover(V(n)))},toString(){return`IO(${n(e._tag)})`},toJSON(){return{_tag:`IO`,effect:e._tag}},*[Symbol.iterator](){return yield t}};return t},U=(e,t=R.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=U(e.effect._effect,t);return e.f(n)}case`FlatMap`:{let n=U(e.effect._effect,t);return U(e.f(n)._effect,t)}case`MapError`:try{return U(e.effect._effect,t)}catch(t){throw e.f(t)}case`Recover`:try{return U(e.effect._effect,t)}catch{return e.fallback}case`RecoverWith`:try{return U(e.effect._effect,t)}catch(n){return U(e.f(n)._effect,t)}case`Fold`:try{let n=U(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 U(e.effect._effect,n)}case`Interrupt`:throw new Nt;case`Bracket`:{let n=U(e.acquire._effect,t);try{return U(e.use(n)._effect,t)}finally{U(e.release(n)._effect,t)}}case`Race`:throw Error(`Cannot run race effect synchronously`);case`Timeout`:throw Error(`Cannot run timeout effect synchronously`)}},W=async(e,t=R.empty())=>{try{switch(e._tag){case`Succeed`:return V(B.succeed(e.value));case`Fail`:return V(B.fail(e.error));case`Die`:throw e.defect;case`Sync`:return V(B.succeed(e.thunk()));case`Async`:{let t=await e.thunk();return V(B.succeed(t))}case`Auto`:{let t=e.thunk();return t instanceof Promise?V(B.succeed(await t)):V(B.succeed(t))}case`Map`:{let n=await W(e.effect._effect,t);return n.isSuccess()?V(B.succeed(e.f(n.orThrow()))):V(n)}case`FlatMap`:{let n=await W(e.effect._effect,t);return n.isSuccess()?W(e.f(n.orThrow())._effect,t):V(n)}case`MapError`:{let n=await W(e.effect._effect,t);return n.isSuccess()?V(n):n.isFailure()?V(B.fail(e.f(n.toValue().error))):V(n)}case`Recover`:{let n=await W(e.effect._effect,t);return n.isSuccess()?n:B.succeed(e.fallback)}case`RecoverWith`:{let n=await W(e.effect._effect,t);return n.isSuccess()?n:n.isFailure()?W(e.f(n.toValue().error)._effect,t):n}case`Fold`:{let n=await W(e.effect._effect,t);return n.isSuccess()?B.succeed(e.onSuccess(n.orThrow())):n.isFailure()?B.succeed(e.onFailure(n.toValue().error)):n}case`Service`:{let n=t.get(e.tag);return n.isNone()?B.fail(Error(`Service not found: ${e.tag.id}`)):B.succeed(n.orThrow())}case`ProvideContext`:{let n=t.merge(e.context);return W(e.effect._effect,n)}case`Interrupt`:return B.interrupted();case`Bracket`:{let n=await W(e.acquire._effect,t);if(!n.isSuccess())return n;let r=n.orThrow();try{return await W(e.use(r)._effect,t)}finally{await W(e.release(r)._effect,t)}}case`Race`:return e.effects.length===0?B.fail(Error(`No effects to race`)):await Promise.race(e.effects.map(e=>W(e._effect,t)));case`Timeout`:{let n=new Promise(t=>setTimeout(()=>t(B.fail(new Mt(e.duration))),e.duration)),r=W(e.effect._effect,t);return Promise.race([r,n])}}}catch(e){return B.fail(e)}},G={sync:e=>H({_tag:`Sync`,thunk:e}),succeed:e=>H({_tag:`Succeed`,value:e}),fail:e=>H({_tag:`Fail`,error:e}),die:e=>H({_tag:`Die`,defect:e}),async:e=>H(V({_tag:`Async`,thunk:e})),tryPromise:e=>H({_tag:`Async`,thunk:e.try}).mapError(e.catch),tryCatch:(e,t)=>G.sync(()=>{try{return e()}catch(e){throw t(e)}}),liftSync:e=>(...t)=>G.sync(()=>e(...t)),liftPromise:e=>(...t)=>G.async(()=>e(...t)),fromEither:e=>V(e.isRight()?G.succeed(e.value):G.fail(e.value)),fromOption:e=>V(e.isSome()?G.succeed(e.value):G.fail(void 0)),fromOptionOrFail:(e,t)=>V(e.isSome()?G.succeed(e.value):G.fail(t())),fromTry:e=>V(e.isSuccess()?G.succeed(e.orThrow()):G.fail(e.error)),fromResult:e=>V(e.error?G.fail(e.error):G.succeed(m(e.data))),tryAsync:(e,t,n)=>n?.aborted?V(G.fail(t(n.reason??new DOMException(`Aborted`,`AbortError`)))):G.async(()=>e(n)).mapError(t),asyncResult:(e,t,n)=>{let r=n?.dataKey??`data`,i=n?.errorKey??`error`;return G.tryAsync(t=>e(t),t,n?.signal).flatMap(e=>G.fromResult({data:e[r],error:e[i]}))},service:e=>H({_tag:`Service`,tag:e}),serviceWith:(e,t)=>G.service(e).map(t),serviceWithIO:(e,t)=>G.service(e).flatMap(t),withServices:(e,t)=>{let n=Object.entries(e);if(n.length===0)return V(H({_tag:`Auto`,thunk:()=>t({})}));let r=V(G.succeed({}));return V(n.reduce((e,[t,n])=>V(e.flatMap(e=>G.service(n).map(n=>({...e,[t]:n})))),r).flatMap(e=>H({_tag:`Auto`,thunk:()=>t(e)})))},all:e=>{if(e.length===0)return V(G.succeed([]));let t=V(G.succeed([]));return V(e.reduce((e,t)=>e.flatMap(e=>t.map(t=>[...e,t])),t))},firstSuccessOf:e=>e.length===0?V(G.fail(Error(`No effects provided`))):e.reduce((e,t)=>e.recoverWith(()=>t)),sleep:e=>V(G.async(()=>new Promise(t=>setTimeout(t,e)))),never:()=>V(G.async(()=>new Promise(()=>{}))),get unit(){return V(H({_tag:`Succeed`,value:void 0}))},fromNullable:e=>V(e==null?G.fail(void 0):G.succeed(e)),interrupt:()=>H({_tag:`Interrupt`}),bracket:(e,t,n)=>H({_tag:`Bracket`,acquire:e,use:t,release:n}),acquireRelease:(e,t,n)=>G.bracket(e,t,n),race:e=>H({_tag:`Race`,effects:e}),any:e=>e.length===0?V(G.fail(Error(`No effects provided`))):e.reduce((e,t)=>e.recoverWith(()=>t)),forEach:(e,t)=>{if(e.length===0)return V(G.succeed([]));let n=V(G.succeed([]));return V(e.reduce((e,n)=>e.flatMap(e=>t(n).map(t=>[...e,t])),n))},forEachPar:(e,t)=>G.forEach(e,t),timeout:(e,t)=>H(V({_tag:`Timeout`,effect:e,duration:t})),gen:e=>V(G.sync(()=>{let t=e(),n=e=>{let r=t.next(e);return r.done?V(G.succeed(r.value)):V(r.value.flatMap(e=>n(e)))};return n(void 0)}).flatMap(e=>e)),get Do(){return Pt(G.succeed({}))}},Pt=e=>({effect:e,bind(t,n){return Pt(e.flatMap(e=>n(e).map(n=>({...e,[t]:n}))))},let(t,n){return Pt(e.map(e=>({...e,[t]:n(e)})))},map(t){return e.map(t)},flatMap(t){return e.flatMap(t)},tap(t){return Pt(e.tap(t))},tapEffect(t){return Pt(e.tapEffect(t))},done(){return e}}),K=r(e=>H(V({_tag:`Auto`,thunk:e})),G),q=(e,t)=>({_tag:`Layer`,build:e,provideToAndMerge(t){return q(async n=>{let r=await e(n),i=n.merge(r),a=await t.build(i);return r.merge(a)})},merge(t){return q(async n=>{let[r,i]=await Promise.all([e(n),t.build(n)]);return r.merge(i)})},map(t){return q(async n=>t(await e(n)))},toString(){return`Layer(${t??`anonymous`})`}}),Ft={succeed:(e,t)=>q(()=>Promise.resolve(R.make(e,t)),e.id),effect:(e,t)=>q(async()=>{let n=await t();return R.make(e,n)},e.id),sync:(e,t)=>q(()=>Promise.resolve(R.make(e,t())),e.id),fromService:(e,t,n)=>q(r=>{let i=r.unsafeGet(t);return Promise.resolve(R.make(e,n(i)))},e.id),fromServiceEffect:(e,t,n)=>q(async r=>{let i=await n(r.unsafeGet(t));return R.make(e,i)},e.id),fromContext:e=>q(()=>Promise.resolve(e)),empty:()=>q(()=>Promise.resolve(R.empty()),`empty`),mergeAll:(...e)=>q(async t=>(await Promise.all(e.map(e=>e.build(t)))).reduce((e,t)=>e.merge(t),R.empty()))},It=e=>({id:e,_tag:`Tag`,toString(){return`Tag(${e})`}}),Lt=()=>{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})})}}},J=It(`TestClock`),Rt={make:Lt,tag:J,test:async e=>e(Lt()),get:K.service(J),advance:e=>K.serviceWithIO(J,t=>K.async(()=>t.advance(e))),setTime:e=>K.serviceWithIO(J,t=>K.async(()=>t.setTime(e))),runAll:K.serviceWithIO(J,e=>K.async(()=>e.runAll())),context:()=>{let e=Lt();return{clock:e,context:R.make(J,e)}}},zt={make:()=>{let e=Lt(),t=R.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=Lt();return zt.make().withService(J,e)}},Y=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=>X(()=>{try{return o()}catch{return e.orThrow()}}),orUndefined:()=>{try{return o()}catch{return}},map:e=>X(()=>e(o())),ap:e=>X(()=>e.orThrow()(o())),mapAsync:async e=>{let t=await e(o());return X(()=>t)},flatMap:e=>X(()=>e(o()).orThrow()),flatMapAsync:async e=>{let t=await e(o());return X(()=>t.orThrow())},filter:e=>X(()=>{let t=o();return e(t)?d(t):p}),recover:e=>X(()=>{try{return o()}catch(t){return e(t)}}),recoverWith:e=>X(()=>{try{return o()}catch(t){return e(t).orThrow()}}),toOption:()=>{try{return d(o())}catch{return p}},toEither:()=>{try{return w(o())}catch(e){return T(e)}},toEitherWith:e=>{try{return w(o())}catch(t){return T(e(t))}},toTry:()=>x(()=>o()),tap:e=>X(()=>{let t=o();return e(t),t}),tapError:e=>X(()=>{try{return o()}catch(t){throw e(t),t}}),fold:e=>e(o()),foldWith:(e,t)=>{try{return t(o())}catch(t){return e(t)}},foldLeft:e=>t=>t(e,o()),foldRight:e=>t=>t(o(),e),match:e=>e.Lazy(o()),toString:()=>t&&!a?`Lazy(${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`}},X=r(Y,{of:e=>Y(e),fromValue:e=>Y(()=>e),fromOption:(e,t)=>Y(()=>e._tag===`Some`?e.value:t()),fromTry:e=>Y(()=>e.orThrow()),fromEither:e=>Y(()=>e.fold(e=>{throw e},e=>e)),fromPromise:e=>Y(()=>{throw Error(`Promise not yet resolved. Use await on the promise before creating Lazy.`)}),fail:e=>Y(()=>{throw e})}),Bt=Map,Z=e=>{let t={values:new Bt(e)},n=()=>Array.from(t.values.entries()).map(([e,t])=>i([e,t])),r=e=>Z(new Bt(t.values).set(e.toArray()[0],e.toArray()[1]).entries()),a=e=>{let n=new Bt(t.values);return n.delete(e)?Z(n.entries()):Z(t.values.entries())},s=e=>{let n=e.toArray();return t.values.get(n[0])===n[1]},c=()=>t.values.size,l=e=>Z(Array.from(t.values.entries()).map(([t,n])=>[t,e(n)])),u=e=>Z(Z(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 Z(n)},d=async e=>{let n=new Bt;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 Z(n.entries())},f=e=>C(n()).reduce(e),p=e=>C(n()).reduceRight(e),te=e=>t=>C(n()).foldLeft(e)(t),ne=e=>t=>C(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)=>C(n()).fold(e,t),se=()=>C(n()),_=()=>oe(n()),ce=()=>`Map(${n().toString()})`,le=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:le,get:h,getOrElse:g,get isEmpty(){return re()},orElse:ie,toList:se,toSet:_,toString:ce,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()))}},Vt=e=>Z(e),Ht=Z([]),Ut={empty:()=>Ht,of:(...e)=>Z(e),fromJSON:e=>Wt(JSON.parse(e).value),fromYAML:e=>{let t=e.split(`
|
|
18
|
-
`)[1]?.split(`: `)[1];return Wt(t?JSON.parse(t):[])},fromBinary:e=>{let t=Buffer.from(e,`base64`).toString();return Ut.fromJSON(t)}},Wt=r(Vt,Ut),Gt={default:e=>t=>e(t),when:(e,t)=>n=>e(n)?t(n):void 0},Q=e=>({[Symbol.toStringTag]:`Obj`,_tag:`Obj`,data:e,get:t=>m(e[t]),set:(t,n)=>Q({...e,[t]:n}),assign:t=>Q({...e,...t}),merge:t=>Q({...e,...t}),when:(t,n)=>(typeof t==`function`?t():t)?Q({...e,...n}):Q(e),omit:(...t)=>{let n={...e};for(let e of t)delete n[e];return Q(n)},pick:(...t)=>{let n={};for(let r of t)r in e&&(n[r]=e[r]);return Q(n)},keys:()=>C(Object.keys(e)),values:()=>C(Object.values(e)),entries:()=>C(Object.entries(e).map(([e,t])=>i([e,t]))),has:t=>t in e,value:()=>e,get isEmpty(){return Object.keys(e).length===0},get size(){return Object.keys(e).length},map:t=>Q(t(e)),flatMap:t=>t(e),flatMapAsync:async t=>await t(e),ap:t=>{let n=t.data;return Q(n(e))},fold:(t,n)=>Object.keys(e).length===0?t():n(e),match:t=>t.Obj(e),foldLeft:t=>n=>n(t,e),foldRight:t=>n=>n(e,t),count:t=>t(e)?1:0,find:t=>t(e)?m(e):m(void 0),exists:t=>t(e),forEach:t=>t(e),reduce:t=>e,reduceRight:t=>e,contains:t=>JSON.stringify(e)===JSON.stringify(t),orElse:t=>e,orThrow:t=>e,or:t=>Q(e),orNull:()=>e,orUndefined:()=>e,toOption:()=>m(e),toEither:t=>w(e),toList:()=>C([e]),toTry:()=>x(()=>e),toPromise:()=>Promise.resolve(e),toString:()=>`Obj(${n(e)})`,toValue:()=>({_tag:`Obj`,value:e}),pipe:t=>t(e),serialize:()=>o(`Obj`,e),doUnwrap(){return{ok:!0,value:e}}}),Kt=e=>Q(e),qt={of:e=>Q(e),empty:()=>Q({}),fromJSON:e=>Q(JSON.parse(e).value),fromBinary:e=>{let t=Buffer.from(e,`base64`).toString();return qt.fromJSON(t)}},Jt=r(Kt,qt),$=(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=()=>C(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`)})}},Yt=(e=[])=>$(e),Xt={empty:()=>$([]),of:e=>$([e]),fromJSON:e=>Zt(JSON.parse(e).value),fromYAML:e=>{let t=e.split(`
|
|
19
|
-
`)[1]?.split(`: `)[1];return Zt(t?JSON.parse(t):[])},fromBinary:e=>{let t=Buffer.from(e,`base64`).toString();return Xt.fromJSON(t)}},Zt=r(Yt,Xt);function Qt(e){let t=pe({_tag:e._tag,impl:e.impl});return{...t,toValue:()=>({_tag:t._tag,value:e.value})}}export{Ne as $,at as A,u as At,Qe as B,N as C,p as Ct,mt as D,s as Dt,ht as E,d as Et,ot as F,Ke as G,Je as H,st as I,Re as J,We as K,k as L,ft as M,l as Mt,ut as N,a as Nt,ct as O,ee as Ot,lt as P,je as Q,A as R,bt as S,oe as St,gt as T,te as Tt,Ye as U,Xe as V,qe as W,Pe as X,ze as Y,Le as Z,R as _,pe as _t,Wt as a,Fe as at,Ct as b,ue as bt,Rt as c,T as ct,It as d,Ce as dt,Ae as et,Ft as f,xe as ft,B as g,C as gt,Mt as h,Te as ht,Gt as i,Ie as it,dt as j,c as jt,rt as k,o as kt,J as l,w as lt,Nt as m,Se as mt,Zt as n,Me as nt,Bt as o,E as ot,K as p,be as pt,Ve as q,Jt as r,ke as rt,X as s,Oe as st,Qt as t,Be as tt,zt as u,we as ut,Ot as v,me as vt,_t as w,m as wt,St as x,_ as xt,L as y,x as yt,j as z};
|