functype 0.8.65 → 0.8.67

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.
@@ -53,6 +53,15 @@ declare class Throwable extends Error implements ThrowableType {
53
53
  static apply(srcError: unknown, data?: unknown): ThrowableType;
54
54
  }
55
55
 
56
+ type SerializationMethods<T> = {
57
+ toJSON(): string;
58
+ toYAML(): string;
59
+ toBinary(): string;
60
+ };
61
+ type Serializable<T> = {
62
+ serialize(): SerializationMethods<T>;
63
+ };
64
+
56
65
  /**
57
66
  * Creates a Some variant of Option containing a value.
58
67
  * @param value - The value to wrap in Some
@@ -66,6 +75,14 @@ declare const Some: <T extends Type>(value: T) => Option<T>;
66
75
  * @typeParam T - The type that would be contained if this was a Some
67
76
  */
68
77
  declare const None: <T extends Type>() => Option<T>;
78
+ /**
79
+ * Safely wraps a value that might be null or undefined in an Option.
80
+ * Creates Some if the value is defined, None otherwise.
81
+ * @param value - The value to wrap (might be null/undefined)
82
+ * @returns Some(value) if value is defined, None otherwise
83
+ * @typeParam T - The type of the value
84
+ */
85
+ declare const OptionConstructor: <T extends Type>(value: T | null | undefined) => Option<T>;
69
86
  /**
70
87
  * Option type module
71
88
  * @module Option
@@ -200,18 +217,39 @@ type Option<T extends Type> = {
200
217
  _tag: "Some" | "None";
201
218
  value: T;
202
219
  };
203
- } & (Traversable<T> & Functor<T> & Typeable<"Some" | "None"> & Valuable<"Some" | "None", T> & AsyncFunctor<T>);
204
- /**
205
- * Safely wraps a value that might be null or undefined in an Option.
206
- * Creates Some if the value is defined, None otherwise.
207
- * @param value - The value to wrap (might be null/undefined)
208
- * @returns Some(value) if value is defined, None otherwise
209
- * @typeParam T - The type of the value
210
- */
211
- declare const Option: {
212
- <T extends Type>(value: T | null | undefined): Option<T>;
213
- from<T>(value: T): Option<T>;
214
- none<T>(): Option<T>;
220
+ } & (Traversable<T> & Functor<T> & Typeable<"Some" | "None"> & Valuable<"Some" | "None", T> & AsyncFunctor<T> & Serializable<T>);
221
+ declare const Option: (<T extends Type>(value: T | null | undefined) => Option<T>) & {
222
+ /**
223
+ * Creates an Option from any value. Alias for Option function.
224
+ * @param value - The value to wrap
225
+ * @returns Some(value) if value is defined, None otherwise
226
+ * @typeParam T - The type of the value
227
+ */
228
+ from: <T>(value: T) => Option<T>;
229
+ /**
230
+ * Returns a None instance. Alias for None function.
231
+ * @returns A None instance
232
+ * @typeParam T - The type that would be contained if this was a Some
233
+ */
234
+ none: <T>() => Option<T>;
235
+ /**
236
+ * Creates an Option from JSON string
237
+ * @param json - The JSON string
238
+ * @returns Option instance
239
+ */
240
+ fromJSON: <T>(json: string) => Option<T>;
241
+ /**
242
+ * Creates an Option from YAML string
243
+ * @param yaml - The YAML string
244
+ * @returns Option instance
245
+ */
246
+ fromYAML: <T>(yaml: string) => Option<T>;
247
+ /**
248
+ * Creates an Option from binary string
249
+ * @param binary - The binary string
250
+ * @returns Option instance
251
+ */
252
+ fromBinary: <T>(binary: string) => Option<T>;
215
253
  };
216
254
 
217
255
  type IterableType<A extends Type> = {
@@ -255,8 +293,27 @@ type Set<A> = {
255
293
  toList: () => List<A>;
256
294
  toSet: () => Set<A>;
257
295
  toString: () => string;
258
- } & IterableType<A> & Collection<A> & Typeable<"Set">;
259
- declare const Set: <A>(iterable?: Iterable<A> | IterableType<A>) => Set<A>;
296
+ } & IterableType<A> & Collection<A> & Typeable<"Set"> & Valuable<"Set", A[]> & Serializable<A[]>;
297
+ declare const Set: (<A>(iterable?: Iterable<A> | IterableType<A>) => Set<A>) & {
298
+ /**
299
+ * Creates a Set from JSON string
300
+ * @param json - The JSON string
301
+ * @returns Set instance
302
+ */
303
+ fromJSON: <A>(json: string) => Set<A>;
304
+ /**
305
+ * Creates a Set from YAML string
306
+ * @param yaml - The YAML string
307
+ * @returns Set instance
308
+ */
309
+ fromYAML: <A>(yaml: string) => Set<A>;
310
+ /**
311
+ * Creates a Set from binary string
312
+ * @param binary - The binary string
313
+ * @returns Set instance
314
+ */
315
+ fromBinary: <A>(binary: string) => Set<A>;
316
+ };
260
317
 
261
318
  type List<A> = {
262
319
  readonly length: number;
@@ -296,8 +353,27 @@ type List<A> = {
296
353
  dropRight: (n: number) => List<A>;
297
354
  dropWhile: (p: (a: A) => boolean) => List<A>;
298
355
  flatten: <B>() => List<B>;
299
- } & IterableType<A> & AsyncFunctor<A> & Typeable<"List">;
300
- declare const List: <A>(values?: Iterable<A>) => List<A>;
356
+ } & IterableType<A> & AsyncFunctor<A> & Typeable<"List"> & Serializable<A>;
357
+ declare const List: (<A>(values?: Iterable<A>) => List<A>) & {
358
+ /**
359
+ * Creates a List from JSON string
360
+ * @param json - The JSON string
361
+ * @returns List instance
362
+ */
363
+ fromJSON: <A>(json: string) => List<A>;
364
+ /**
365
+ * Creates a List from YAML string
366
+ * @param yaml - The YAML string
367
+ * @returns List instance
368
+ */
369
+ fromYAML: <A>(yaml: string) => List<A>;
370
+ /**
371
+ * Creates a List from binary string
372
+ * @param binary - The binary string
373
+ * @returns List instance
374
+ */
375
+ fromBinary: <A>(binary: string) => List<A>;
376
+ };
301
377
 
302
378
  type TestEither<L extends Type, R extends Type> = Either<L, R> & Functor<R> & AsyncFunctor<R>;
303
379
  declare const Right: <L extends Type, R extends Type>(value: R) => Either<L, R>;
@@ -342,7 +418,7 @@ type Either<L extends Type, R extends Type> = {
342
418
  bimap: <L2 extends Type, R2 extends Type>(fl: (value: L) => L2, fr: (value: R) => R2) => Either<L2, R2>;
343
419
  fold: <T extends Type>(onLeft: (value: L) => T, onRight: (value: R) => T) => T;
344
420
  swap: () => Either<R, L>;
345
- } & Typeable<"Left" | "Right"> & Valuable<"Left" | "Right", L | R> & PromiseLike<R> & AsyncFunctor<R>;
421
+ } & Typeable<"Left" | "Right"> & Valuable<"Left" | "Right", L | R> & PromiseLike<R> & AsyncFunctor<R> & Serializable<R>;
346
422
  declare const Either: {
347
423
  sequence: <L extends Type, R extends Type>(eithers: Either<L, R>[]) => Either<L, R[]>;
348
424
  traverse: <L extends Type, R extends Type, U extends Type>(arr: R[], f: (value: R) => Either<L, U>) => Either<L, U[]>;
@@ -350,6 +426,9 @@ declare const Either: {
350
426
  fromPredicate: <L extends Type, R extends Type>(value: R, predicate: (value: R) => boolean, leftValue: L) => Either<L, R>;
351
427
  ap: <L extends Type, R extends Type, U extends Type>(eitherF: Either<L, (value: R) => U>, eitherV: Either<L, R>) => Either<L, U>;
352
428
  fromPromise: <L, R>(promise: Promise<R>, onRejected: (reason: unknown) => L) => Promise<Either<L, R>>;
429
+ fromJSON: <L extends Type, R extends Type>(json: string) => Either<L, R>;
430
+ fromYAML: <L extends Type, R extends Type>(yaml: string) => Either<L, R>;
431
+ fromBinary: <L extends Type, R extends Type>(binary: string) => Either<L, R>;
353
432
  };
354
433
 
355
434
  /**
@@ -554,6 +633,7 @@ interface FPromise<T extends Type, E extends Type = unknown> extends PromiseLike
554
633
  logError: (logger: (error: E, context: ErrorContext) => void) => FPromise<T, E>;
555
634
  toPromise: () => Promise<T>;
556
635
  toEither: () => Promise<T>;
636
+ fold: <R extends Type>(onError: (error: E) => R, onSuccess: (value: T) => R) => FPromise<R, never>;
557
637
  map: <U extends Type>(f: (value: T) => U) => FPromise<U, E>;
558
638
  flatMap: <U extends Type>(f: (value: T) => FPromise<U, E> | PromiseLike<U>) => FPromise<U, E>;
559
639
  flatMapAsync: <U extends Type>(f: (value: T) => PromiseLike<U>) => Promise<U>;
@@ -740,10 +820,7 @@ type TaskResult<T> = Either<Throwable, T> & TaskInfo;
740
820
  declare const TaskResult: <T>(data: T, _task?: TaskParams) => TaskResult<T>;
741
821
  type Sync<T> = Either<Throwable, T>;
742
822
  type Async<T> = FPromise<Sync<T>>;
743
- /**
744
- * Task adapter for bridging promise-based code with functional error handling patterns
745
- */
746
- declare const Task: <T = unknown>(params?: TaskParams) => {
823
+ declare const Task: (<T = unknown>(params?: TaskParams) => {
747
824
  _type: string;
748
825
  /**
749
826
  * Run an async operation with explicit try/catch/finally semantics
@@ -755,25 +832,27 @@ declare const Task: <T = unknown>(params?: TaskParams) => {
755
832
  * Returns an Either for functional error handling
756
833
  */
757
834
  Sync: <U = T>(t: () => U, e?: (error: unknown) => unknown, f?: () => void) => Sync<U>;
835
+ toString(): string;
836
+ _tag: string;
837
+ }) & {
758
838
  /**
759
839
  * Create a successful Task result
760
840
  */
761
- success: (data: T) => TaskResult<T>;
841
+ success: <T>(data: T, params?: TaskParams) => TaskResult<T>;
762
842
  /**
763
843
  * Create a failed Task result
764
844
  */
765
- fail: (error: unknown) => TaskException<T>;
845
+ fail: <T>(error: unknown, params?: TaskParams) => TaskException<T>;
766
846
  /**
767
847
  * Convert a Promise-returning function to a Task-compatible function
768
848
  */
769
- fromPromise: <U, Args extends unknown[]>(promiseFn: (...args: Args) => Promise<U>) => ((...args: Args) => FPromise<U>);
849
+ fromPromise: <U, Args extends unknown[]>(promiseFn: (...args: Args) => Promise<U>, params?: TaskParams) => ((...args: Args) => FPromise<U>);
770
850
  /**
771
851
  * Convert a Task result to a Promise
772
852
  */
773
853
  toPromise: <U>(taskResult: TaskResult<U> | TaskException<U>) => Promise<U>;
774
- toString(): string;
775
- _tag: string;
776
854
  };
855
+ type Task = ReturnType<typeof Task>;
777
856
 
778
857
  type TypeNames = "Success" | "Failure";
779
858
  type Try<T> = {
@@ -789,8 +868,27 @@ type Try<T> = {
789
868
  map: <U>(f: (value: T) => U) => Try<U>;
790
869
  flatMap: <U>(f: (value: T) => Try<U>) => Try<U>;
791
870
  toString: () => string;
792
- } & Typeable<TypeNames> & Valuable<TypeNames, T | Error>;
793
- declare const Try: <T>(f: () => T) => Try<T>;
871
+ } & Typeable<TypeNames> & Valuable<TypeNames, T | Error> & Serializable<T>;
872
+ declare const Try: (<T>(f: () => T) => Try<T>) & {
873
+ /**
874
+ * Creates a Try from JSON string
875
+ * @param json - The JSON string
876
+ * @returns Try instance
877
+ */
878
+ fromJSON: <T>(json: string) => Try<T>;
879
+ /**
880
+ * Creates a Try from YAML string
881
+ * @param yaml - The YAML string
882
+ * @returns Try instance
883
+ */
884
+ fromYAML: <T>(yaml: string) => Try<T>;
885
+ /**
886
+ * Creates a Try from binary string
887
+ * @param binary - The binary string
888
+ * @returns Try instance
889
+ */
890
+ fromBinary: <T>(binary: string) => Try<T>;
891
+ };
794
892
 
795
893
  /**
796
894
  * Type function for representing higher-kinded types
@@ -854,8 +952,27 @@ type Map$1<K, V> = {
854
952
  get(key: K): Option<V>;
855
953
  getOrElse(key: K, defaultValue: V): V;
856
954
  orElse(key: K, alternative: Option<V>): Option<V>;
857
- } & SafeTraversable<K, V> & Collection<Tuple<[K, V]>> & Typeable<"Map"> & Valuable<"Map", IESMap<K, V>>;
858
- declare const Map$1: <K, V>(entries?: readonly (readonly [K, V])[] | IterableIterator<[K, V]> | null) => Map$1<K, V>;
955
+ } & SafeTraversable<K, V> & Collection<Tuple<[K, V]>> & Typeable<"Map"> & Valuable<"Map", IESMap<K, V>> & Serializable<[K, V][]>;
956
+ declare const Map$1: (<K, V>(entries?: readonly (readonly [K, V])[] | IterableIterator<[K, V]> | null) => Map$1<K, V>) & {
957
+ /**
958
+ * Creates a Map from JSON string
959
+ * @param json - The JSON string
960
+ * @returns Map instance
961
+ */
962
+ fromJSON: <K, V>(json: string) => Map$1<K, V>;
963
+ /**
964
+ * Creates a Map from YAML string
965
+ * @param yaml - The YAML string
966
+ * @returns Map instance
967
+ */
968
+ fromYAML: <K, V>(yaml: string) => Map$1<K, V>;
969
+ /**
970
+ * Creates a Map from binary string
971
+ * @param binary - The binary string
972
+ * @returns Map instance
973
+ */
974
+ fromBinary: <K, V>(binary: string) => Map$1<K, V>;
975
+ };
859
976
 
860
977
  type Traversable<A extends Type> = Functor<A> & {
861
978
  get size(): number;
@@ -867,4 +984,4 @@ type Traversable<A extends Type> = Functor<A> & {
867
984
  foldRight<B>(z: B): (op: (a: A, b: B) => B) => B;
868
985
  };
869
986
 
870
- export { type Async as A, Base as B, Companion as C, Either as E, FPromise as F, HKT as H, Identity as I, type Kind as K, List as L, Map$1 as M, None, type OptionKind as O, Option, Right as R, Set as S, Some, type TestEither as T, type UniversalContainer as U, Left as a, isLeft as b, TypeCheckRight as c, TypeCheckLeft as d, tryCatchAsync as e, type ErrorContext as f, FPromiseCompanion as g, Try as h, isRight as i, type Traversable as j, type TaskParams as k, type TaskInfo as l, TaskException as m, TaskResult as n, type Sync as o, Task as p, type ThrowableType as q, Throwable as r, type ListKind as s, tryCatch as t, type EitherKind as u, type TryKind as v, type IterableType as w };
987
+ export { type Async as A, Base as B, Companion as C, Either as E, FPromise as F, HKT as H, Identity as I, type Kind as K, List as L, Map$1 as M, None, type OptionKind as O, Option, OptionConstructor, Right as R, Set as S, Some, type TestEither as T, type UniversalContainer as U, Left as a, isLeft as b, TypeCheckRight as c, TypeCheckLeft as d, tryCatchAsync as e, type ErrorContext as f, FPromiseCompanion as g, Try as h, isRight as i, type Traversable as j, type TaskParams as k, type TaskInfo as l, TaskException as m, TaskResult as n, type Sync as o, Task as p, type ThrowableType as q, Throwable as r, type ListKind as s, tryCatch as t, type EitherKind as u, type TryKind as v, type IterableType as w };
@@ -1,2 +1,2 @@
1
- export{e as None,f as Option,d as Some}from'../chunk-3KVYTZJT.mjs';import'../chunk-DWRQQO3M.mjs';import'../chunk-42EDYQ3O.mjs';//# sourceMappingURL=index.mjs.map
1
+ export{e as None,g as Option,f as OptionConstructor,d as Some}from'../chunk-NTL4HYMA.mjs';import'../chunk-PXFJPCM7.mjs';import'../chunk-TQJDL6YW.mjs';//# sourceMappingURL=index.mjs.map
2
2
  //# sourceMappingURL=index.mjs.map
@@ -1,2 +1,2 @@
1
- export{g as Set}from'../chunk-3KVYTZJT.mjs';import'../chunk-DWRQQO3M.mjs';import'../chunk-42EDYQ3O.mjs';//# sourceMappingURL=index.mjs.map
1
+ export{h as Set}from'../chunk-NTL4HYMA.mjs';import'../chunk-PXFJPCM7.mjs';import'../chunk-TQJDL6YW.mjs';//# sourceMappingURL=index.mjs.map
2
2
  //# sourceMappingURL=index.mjs.map
@@ -1,2 +1,2 @@
1
- export{w as Try}from'../chunk-3KVYTZJT.mjs';import'../chunk-DWRQQO3M.mjs';import'../chunk-42EDYQ3O.mjs';//# sourceMappingURL=index.mjs.map
1
+ export{x as Try}from'../chunk-NTL4HYMA.mjs';import'../chunk-PXFJPCM7.mjs';import'../chunk-TQJDL6YW.mjs';//# sourceMappingURL=index.mjs.map
2
2
  //# sourceMappingURL=index.mjs.map
@@ -1,2 +1,2 @@
1
- export{c as Tuple}from'../chunk-DWRQQO3M.mjs';//# sourceMappingURL=index.mjs.map
1
+ export{c as Tuple}from'../chunk-PXFJPCM7.mjs';//# sourceMappingURL=index.mjs.map
2
2
  //# sourceMappingURL=index.mjs.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "functype",
3
- "version": "0.8.65",
3
+ "version": "0.8.67",
4
4
  "type": "module",
5
5
  "description": "A smallish functional library for TypeScript",
6
6
  "author": "jordan.burke@gmail.com",
@@ -15,9 +15,9 @@
15
15
  "@eslint/compat": "^1.2.8",
16
16
  "@eslint/eslintrc": "^3.3.1",
17
17
  "@eslint/js": "^9.25.1",
18
- "@types/node": "^22.14.1",
19
- "@typescript-eslint/eslint-plugin": "^8.31.0",
20
- "@typescript-eslint/parser": "^8.31.0",
18
+ "@types/node": "^22.15.3",
19
+ "@typescript-eslint/eslint-plugin": "^8.31.1",
20
+ "@typescript-eslint/parser": "^8.31.1",
21
21
  "@vitest/coverage-v8": "^3.1.2",
22
22
  "@vitest/ui": "^3.1.2",
23
23
  "cross-env": "^7.0.3",
@@ -1,2 +0,0 @@
1
- import {b as b$1,a,c as c$1}from'./chunk-DWRQQO3M.mjs';import z from'safe-stable-stringify';function $(e,t){return Object.assign(e,t)}function k(e,t){return {...a({_tag:e,impl:t}),toString(){return `${e}()`}}}var F="Throwable",R=class e extends Error{constructor(n,r){super(n,{cause:r?.cause});this._tag=F;this.name=F,Object.defineProperties(this,{_tag:{value:F,writable:false,configurable:false},data:{value:r?.data,writable:false,configurable:false},name:{value:F,writable:false,configurable:false}}),r?.cause&&Object.defineProperty(this,"cause",{value:r.cause,writable:false,configurable:false}),r?.stack?this.stack=r.stack:Error.captureStackTrace&&Error.captureStackTrace(this,this.constructor);}static apply(n,r){if(n instanceof Error){let a=new e(n.message,{data:r,cause:n.cause||void 0,stack:n.stack||void 0});for(let p of Object.keys(n))p in a||(a[p]=n[p]);return a}if(n&&typeof n=="object"){let a=n,p=typeof a.message=="string"?a.message:typeof a.error=="string"?a.error:`Object error: ${JSON.stringify(a,Object.getOwnPropertyNames(a).filter(m=>a[m]!==void 0))}`,y=new e(p,{data:r||a});for(let m of Object.keys(a))m in y||(y[m]=a[m]);return y}if(typeof n=="function"){let a=n.name||"anonymous function",p=n.toString().substring(0,100)+(n.toString().length>100?"...":"");return new e(`Function error: ${a}`,{data:r||{functionType:typeof n,functionName:a,functionString:p}})}let s=typeof n,i=n===null?"null":n===void 0?"undefined":String(n);if(s==="number"){let a=n,p=Number.isNaN(a)?"Number error: NaN":Number.isFinite(a)?`Number error: ${a}`:`Number error: ${a>0?"Infinity":"-Infinity"}`;return new e(p,{data:r||{errorType:s,errorValue:a,originalError:n}})}if(s==="bigint")return new e(`BigInt error: ${n}n`,{data:r||{errorType:s,errorValue:String(n),originalError:n}});if(s==="boolean")return new e(`Boolean error: ${n}`,{data:r||{errorType:s,errorValue:n,originalError:n}});if(s==="symbol"){let a=n.description||"unnamed symbol";return new e(`Symbol error: Symbol(${a})`,{data:r||{errorType:s,symbolDescription:a,originalError:n}})}let o=typeof n=="string"?n:`${s.charAt(0).toUpperCase()+s.slice(1)} error: ${i}`;return new e(o,{data:r||{errorType:s,errorValue:i,originalError:n}})}};var _=Set;var B=e=>{let t=new _(e),n=d(t),r={...n,_tag:"Set",add:s=>B([...t,s]),remove:s=>{let i=new _(t);return i.delete(s),B(i)},contains:s=>t.has(s),has:s=>t.has(s),map:s=>B(n.map(s)),flatMap:s=>B(n.flatMap(s)),toList:()=>d(t),toSet:()=>r,toString:()=>`Set(${Array.from(t).toString()})`};return r},V=e=>B(e);var L=e=>{let t=Array.from(e||[]),n={_tag:"List",[Symbol.iterator]:()=>t[Symbol.iterator](),get size(){return t.length},get length(){return t.length},map:r=>L(t.map(r)),flatMap:r=>L(t.flatMap(s=>Array.from(r(s)))),flatMapAsync:async r=>{let s=await Promise.all(t.map(async i=>await r(i)));return L(s.flatMap(i=>Array.from(i)))},forEach:r=>t.forEach(r),count:r=>t.filter(r).length,exists:r=>t.some(r),filter:r=>L(t.filter(r)),filterNot:r=>L(t.filter(s=>!r(s))),filterType:r=>L(t.filter(s=>b$1(s,r))),find:(r,s)=>{let i=t.find(o=>r(o)&&(s?b$1(o,s):true));return E(i)},get head(){return t[0]},get headOption(){return t.length>0?E(t[0]):x()},get isEmpty(){return t.length===0},toArray:()=>[...t],reduce:r=>t.reduce(r),reduceRight:r=>t.reduceRight(r),foldLeft:r=>s=>t.reduce(s,r),foldRight:r=>s=>t.reduceRight((i,o)=>s(o,i),r),remove:r=>L(t.filter(s=>s!==r)),removeAt:r=>r<0||r>=t.length?n:L([...t.slice(0,r),...t.slice(r+1)]),add:r=>L([...t,r]),get:r=>E(t[r]),concat:r=>L([...t,...r.toArray()]),drop:r=>L(t.slice(r)),dropRight:r=>L(t.slice(0,-r)),dropWhile:r=>L(t.slice(t.findIndex(s=>!r(s)))),flatten:()=>L(t.flatMap(r=>Array.isArray(r)?r:[r])),toList:()=>n,toSet:()=>V(t),toString:()=>`List(${z(t)})`,toValue:()=>({_tag:"List",value:t})};return n},d=e=>L(e);var j=e=>({_tag:"Right",value:e,isLeft:()=>false,isRight:()=>true,getOrElse:t=>e,getOrThrow:()=>e,map:t=>T(t(e)),mapAsync:t=>t(e).then(n=>T(n)).catch(n=>Promise.resolve(u(n))),merge:t=>t.isLeft()?u(t.value):T([e,t.value]),flatMap:t=>t(e),flatMapAsync:t=>t(e).catch(n=>u(n)),toOption:()=>U(e),toList:()=>d([e]),toString:()=>`Right(${z(e)})`,[Symbol.iterator]:function*(){yield e;},yield:function*(){yield e;},traverse:t=>{let n=t(e);return n.isLeft()?u(n.value):T([n.value])},lazyMap:function*(t){yield T(t(e));},tap:t=>(t(e),T(e)),tapLeft:t=>T(e),mapLeft:t=>T(e),bimap:(t,n)=>T(n(e)),fold:(t,n)=>n(e),swap:()=>u(e),then:(t,n)=>Promise.resolve(e).then(t,n),toValue:()=>({_tag:"Right",value:e})}),q=e=>({_tag:"Left",value:e,isLeft:()=>true,isRight:()=>false,getOrElse:t=>t,getOrThrow:()=>{throw e},map:t=>u(e),mapAsync:t=>Promise.resolve(u(e)),merge:t=>u(e),flatMap:t=>u(e),flatMapAsync:t=>Promise.resolve(u(e)),toOption:()=>x(),toList:()=>d(),toString:()=>`Left(${z(e)})`,[Symbol.iterator]:function*(){},yield:function*(){},traverse:t=>u(e),lazyMap:function*(t){yield u(e);},tap:t=>u(e),tapLeft:t=>(t(e),u(e)),mapLeft:t=>u(t(e)),bimap:(t,n)=>u(t(e)),fold:(t,n)=>t(e),swap:()=>T(e),then:(t,n)=>Promise.reject(e).then(null,n),toValue:()=>({_tag:"Left",value:e})}),T=e=>j(e),u=e=>q(e),Se=e=>e.isRight(),Be=e=>e.isLeft(),Fe=(e,t)=>{try{return T(e())}catch(n){return u(t(n))}},ne=e=>j(e);console.assert(ne);var re=e=>q(e);console.assert(re);var Ve=async(e,t)=>{try{let n=await e();return T(n)}catch(n){return u(t(n))}},oe={sequence:e=>{let t=[];for(let n of e){if(n.isLeft())return u(n.value);t.push(n.value);}return T(t)},traverse:(e,t)=>oe.sequence(e.map(t)),fromNullable:(e,t)=>e==null?u(t):T(e),fromPredicate:(e,t,n)=>t(e)?T(e):u(n),ap:(e,t)=>e.flatMap(n=>t.map(n)),fromPromise:async(e,t)=>{try{let n=await e;return T(n)}catch(n){return u(t(n))}}};var c=e=>{let t=new Promise((n,r)=>{try{e(n,r);}catch(s){r(s);}});return {_tag:"FPromise",map:n=>c((r,s)=>{t.then(i=>{try{r(n(i));}catch(o){s(o);}}).catch(s);}),flatMap:n=>c((r,s)=>{t.then(i=>{try{let o=n(i);"_tag"in o&&o._tag==="FPromise"?o.then(r,s):Promise.resolve(o).then(r,s);}catch(o){s(o);}}).catch(s);}),flatMapAsync:async n=>{let r=await t,s=n(r);return s instanceof Promise?s:new Promise((i,o)=>{s.then(i,o);})},tap:n=>c((r,s)=>{t.then(i=>{try{n(i),r(i);}catch(o){s(o);}}).catch(s);}),mapError:n=>c((r,s)=>{t.then(r).catch(i=>{try{let o={originalError:i,stack:i instanceof Error?i.stack:void 0,timestamp:Date.now()};s(n(i,o));}catch(o){s(o);}});}),tapError:n=>c((r,s)=>{t.then(r).catch(i=>{try{n(i),s(i);}catch(o){s(o);}});}),recover:n=>c(r=>{t.then(r).catch(()=>r(n));}),recoverWith:n=>c(r=>{t.then(r).catch(s=>{try{r(n(s));}catch{r(null);}});}),recoverWithF:n=>c((r,s)=>{t.then(r).catch(i=>{try{n(i).then(r,s);}catch(o){s(o);}});}),filterError:(n,r)=>c((s,i)=>{t.then(s).catch(o=>{if(n(o))try{r(o).then(s,i);}catch(a){i(a);}else i(o);});}),logError:n=>c((r,s)=>{t.then(r).catch(i=>{try{let o={originalError:i,stack:i instanceof Error?i.stack:void 0,timestamp:Date.now()};n(i,o);}catch{}finally{s(i);}});}),then:(n,r)=>t.then(n,r),toPromise:()=>t,toEither:()=>t}},se={resolve:e=>c(t=>t(e)),reject:e=>c((t,n)=>n(e)),from:e=>c((t,n)=>{e.then(t).catch(n);}),fromEither:e=>e.isRight()?c(t=>t(e.value)):c((t,n)=>n(e.value)),all:e=>c((t,n)=>{Promise.all(e.map(r=>r instanceof Promise?r:Promise.resolve(r))).then(t).catch(n);}),allSettled:e=>c(t=>{let n=[],r=0;if(e.length===0){t([]);return}e.forEach((s,i)=>{Promise.resolve(s).then(o=>{n[i]=T(o),r++,r===e.length&&t(n);}).catch(o=>{n[i]=u(o),r++,r===e.length&&t(n);});});}),race:e=>c((t,n)=>{Promise.race(e).then(t,n);}),any:e=>c((t,n)=>{if(typeof Promise.any=="function")Promise.any(e).then(t,n);else {let r=0,s=[];if(e.length===0){n(new AggregateError([],"All promises were rejected"));return}e.forEach((i,o)=>{Promise.resolve(i).then(t).catch(a=>{s[o]=a,r++,r===e.length&&n(new AggregateError(s,"All promises were rejected"));});});}}),retryWithBackoff:(e,t)=>{let{maxRetries:n,baseDelay:r=100,shouldRetry:s=()=>true}=t;return c((i,o)=>{let a=0,p=()=>{e().toPromise().then(i).catch(y=>{if(a++,a<=n&&s(y,a)){let m=r*Math.pow(2,a-1);setTimeout(p,m);}else o(y);});};p();})}},W=$(c,se);var D=(e,t,n)=>{let r=n?.name||"TaskException",s=n?.description||"Unspecified TaskException",i=R.apply(e,t);return {...k("TaskException",u(i)),_task:{name:r,description:s}}},G=(e,t)=>{let n=t?.name||"TaskResult",r=t?.description||"Unspecified TaskResult";return {...k("TaskResult",T(e)),_task:{name:n,description:r}}},qe=e=>{let t=e?.name||"Task",n=e?.description||"",r={Async:(s,i=a=>a,o=()=>{})=>W(async(a,p)=>{try{let y=await s();try{await o();}catch(m){p(R.apply(m));return}a(y);}catch(y){try{await o();}catch(m){p(R.apply(m));return}try{let m=await i(y);p(R.apply(m));}catch(m){p(R.apply(m));}}}),Sync:(s,i=a=>a,o=()=>{})=>{try{return G(s(),{name:t,description:n})}catch(a){return D(i(a),{name:t,description:n})}finally{o();}},success:s=>G(s,{name:t,description:n}),fail:s=>D(s,{name:t,description:n}),fromPromise:s=>(...i)=>r.Async(()=>s(...i),o=>o),toPromise:s=>new Promise((i,o)=>{s.isRight()?i(s.value):o(s.value);})};return {...k("Task",r),_type:"Task"}};var H=e=>({_tag:"Success",error:void 0,isSuccess:()=>true,isFailure:()=>false,get:()=>e,getOrElse:t=>e,orElse:t=>H(e),orThrow:t=>e,toEither:()=>T(e),map:t=>ae(()=>t(e)),flatMap:t=>t(e),toString:()=>`Success(${z(e)})`,toValue:()=>({_tag:"Success",value:e})}),N=e=>({_tag:"Failure",error:e,isSuccess:()=>false,isFailure:()=>true,get:()=>{throw e},getOrElse:t=>t,orElse:t=>t,orThrow:t=>{throw t},toEither:()=>u(e),map:t=>N(e),flatMap:t=>N(e),toString:()=>`Failure(${z(e)}))`,toValue:()=>({_tag:"Failure",value:e})}),ae=e=>{try{return H(e())}catch(t){return N(t instanceof Error?t:new Error(String(t)))}};var A=e=>e!==null&&typeof e=="object"&&(e._tag==="Some"||e._tag==="None"),g=e=>e!==null&&typeof e=="object"&&e._tag==="List",b=e=>e!==null&&typeof e=="object"&&(e._tag==="Left"||e._tag==="Right"),P=e=>e!==null&&typeof e=="object"&&(e._tag==="Success"||e._tag==="Failure"),h=()=>{let e=(o,a)=>{if(A(o)||g(o)||b(o)||P(o))return o.map(a);throw new Error(`Unsupported functor type: ${JSON.stringify(o)}`)},t=o=>{if(A(o))return o.get();if(g(o)){let a=o.toArray();if(a.length>0&&g(a[0])){let p=[];for(let y of a)g(y)&&p.push(...y.toArray());return d(p)}return o.flatten()}if(b(o))return o.isRight()?o.fold(()=>null,a=>a):o;if(P(o))return o.isSuccess()?o.get():o;throw new Error(`Unsupported functor type for flatten: ${JSON.stringify(o)}`)},n=(o,a)=>{if(A(o)||g(o)||b(o)||P(o))return o.flatMap(a);throw new Error(`Unsupported functor type for flatMap: ${JSON.stringify(o)}`)},r=(o,a)=>{if(A(o)&&A(a))return o.flatMap(p=>a.map(p));if(g(o)&&g(a))return o.flatMap(p=>a.map(p));if(b(o)&&b(a))return o.flatMap(p=>a.map(p));if(P(o)&&P(a))return o.flatMap(p=>a.map(p));throw new Error(`Unsupported functor type for ap: ${JSON.stringify(o)}`)},s=o=>{if(A(o)){let a=o;if(a.isEmpty)return d([E.none()]);let p=a.get();if(g(p))return p.map(y=>E(y));throw new Error("Unsupported inner container type for sequence")}if(g(o)){let p=o.toArray();if(p.length===0)return E.none();let y=p[0];if(A(y)){for(let S of p)if(S.isEmpty)return E.none();let m=p.map(S=>S.get());return E(d(m))}throw new Error("Unsupported inner container type for sequence")}throw new Error(`Unsupported outer container type for sequence: ${JSON.stringify(o)}`)};return {...k("HKT",{map:e,flatten:t,flatMap:n,ap:r,sequence:s,traverse:(o,a)=>s(e(o,a))}),_type:"HKT"}};h.map=(e,t)=>h().map(e,t);h.flatten=e=>h().flatten(e);h.flatMap=(e,t)=>h().flatMap(e,t);h.ap=(e,t)=>h().ap(e,t);h.sequence=e=>h().sequence(e);h.traverse=(e,t)=>h().traverse(e,t);h.isOption=A;h.isList=g;h.isEither=b;h.isTry=P;function et(e){return {id:e,isSame:n=>n.id===e}}var O=Map;var w=e=>{let t="Map",n={values:new O(e)},r=()=>Array.from(n.values.entries()).map(([l,f])=>c$1([l,f])),s=l=>w(new O(n.values).set(l.toArray()[0],l.toArray()[1]).entries()),i=l=>{let f=new O(n.values);return f.delete(l)?w(f.entries()):w(n.values.entries())},o=l=>{let f=l.toArray();return n.values.get(f[0])===f[1]},a=()=>n.values.size,p=l=>w(Array.from(n.values.entries()).map(([f,ee])=>[f,l(ee)])),y=l=>{let f=w(n.values.entries()).toList();return w(f.flatMap(l).toArray())},m=l=>d(r()).reduce(l),S=l=>d(r()).reduceRight(l),M=l=>f=>d(r()).foldLeft(l)(f),Q=l=>f=>d(r()).foldRight(l)(f),X=l=>E(n.values.get(l)),Y=(l,f)=>E(n.values.get(l)).getOrElse(f),Z=()=>n.values.size===0;return {_tag:t,add:s,remove:i,contains:o,get size(){return a()},map:p,flatMap:y,reduce:m,reduceRight:S,foldLeft:M,foldRight:Q,get:X,getOrElse:Y,get isEmpty(){return Z()},orElse:(l,f)=>E(n.values.get(l)).orElse(f),toList:()=>d(r()),toSet:()=>V(r()),toString:()=>`Map(${r().toString()})`,toValue:()=>({_tag:"Map",value:n.values})}},pt=e=>w(e);var U=e=>({_tag:"Some",value:e,isEmpty:false,get:()=>e,getOrElse:()=>e,getOrThrow:()=>e,orElse:()=>U(e),orNull:()=>e,map:t=>U(t(e)),filter(t){return t(e)?U(e):v},fold:(t,n)=>n(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:()=>d([e]),contains:t=>t===e,size:1,toEither:t=>T(e),toString:()=>`Some(${z(e)})`,toValue:()=>({_tag:"Some",value:e})}),v={_tag:"None",value:void 0,isEmpty:true,get:()=>{throw new Error("Cannot call get() on None")},getOrElse:e=>e,getOrThrow(e){throw e},orElse:e=>e,orNull:()=>null,map:e=>v,filter(e){return v},flatMap:e=>v,flatMapAsync:async e=>v,reduce:()=>{},reduceRight:()=>{},fold:(e,t)=>e(),foldLeft:e=>()=>e,foldRight:e=>()=>e,toList:()=>d([]),contains:()=>false,size:0,toEither:e=>u(e),toString:()=>"None",toValue:()=>({_tag:"None",value:void 0})},x=()=>v,E=e=>e!=null?U(e):x();E.from=e=>E(e);E.none=()=>x();export{$ as a,k as b,R as c,U as d,x as e,E as f,V as g,d as h,T as i,u as j,Se as k,Be as l,Fe as m,ne as n,re as o,Ve as p,oe as q,se as r,W as s,D as t,G as u,qe as v,ae as w,h as x,et as y,pt as z};//# sourceMappingURL=chunk-3KVYTZJT.mjs.map
2
- //# sourceMappingURL=chunk-3KVYTZJT.mjs.map