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.
- package/LICENSE +20 -20
- package/README.md +349 -277
- package/dist/branded/index.mjs +1 -1
- package/dist/chunk-NTL4HYMA.mjs +18 -0
- package/dist/chunk-NTL4HYMA.mjs.map +1 -0
- package/dist/{chunk-DWRQQO3M.mjs → chunk-PXFJPCM7.mjs} +2 -2
- package/dist/chunk-PXFJPCM7.mjs.map +1 -0
- package/dist/{chunk-42EDYQ3O.mjs → chunk-TQJDL6YW.mjs} +2 -2
- package/dist/chunk-TQJDL6YW.mjs.map +1 -0
- package/dist/either/index.mjs +1 -1
- package/dist/fpromise/index.mjs +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.mjs +1 -1
- package/dist/list/index.mjs +1 -1
- package/dist/map/index.mjs +1 -1
- package/dist/option/index.d.ts +148 -31
- package/dist/option/index.mjs +1 -1
- package/dist/set/index.mjs +1 -1
- package/dist/try/index.mjs +1 -1
- package/dist/tuple/index.mjs +1 -1
- package/package.json +4 -4
- package/dist/chunk-3KVYTZJT.mjs +0 -2
- package/dist/chunk-3KVYTZJT.mjs.map +0 -1
- package/dist/chunk-42EDYQ3O.mjs.map +0 -1
- package/dist/chunk-DWRQQO3M.mjs.map +0 -1
package/dist/option/index.d.ts
CHANGED
|
@@ -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
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
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
|
|
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 };
|
package/dist/option/index.mjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export{e as None,
|
|
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
|
package/dist/set/index.mjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export{
|
|
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
|
package/dist/try/index.mjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export{
|
|
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
|
package/dist/tuple/index.mjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export{c as Tuple}from'../chunk-
|
|
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.
|
|
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.
|
|
19
|
-
"@typescript-eslint/eslint-plugin": "^8.31.
|
|
20
|
-
"@typescript-eslint/parser": "^8.31.
|
|
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",
|
package/dist/chunk-3KVYTZJT.mjs
DELETED
|
@@ -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
|