@nlozgachev/pipekit 0.1.8 → 0.3.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 +18 -13
- package/esm/src/Composition/flip.js +2 -2
- package/esm/src/Composition/fn.js +1 -1
- package/esm/src/Composition/tap.js +1 -1
- package/esm/src/Core/Arr.js +16 -16
- package/esm/src/Core/Option.js +27 -36
- package/esm/src/Core/Rec.js +1 -1
- package/esm/src/Core/RemoteData.js +9 -13
- package/esm/src/Core/Result.js +23 -32
- package/esm/src/Core/Task.js +95 -24
- package/esm/src/Core/TaskOption.js +8 -6
- package/esm/src/Core/TaskResult.js +67 -6
- package/esm/src/Core/TaskValidation.js +12 -8
- package/esm/src/Core/These.js +42 -42
- package/esm/src/Core/Validation.js +42 -43
- package/esm/src/Types/Brand.js +3 -3
- package/package.json +1 -1
- package/script/src/Composition/flip.js +2 -2
- package/script/src/Composition/fn.js +1 -1
- package/script/src/Composition/tap.js +1 -1
- package/script/src/Core/Arr.js +16 -16
- package/script/src/Core/Option.js +27 -36
- package/script/src/Core/Rec.js +1 -1
- package/script/src/Core/RemoteData.js +9 -13
- package/script/src/Core/Result.js +23 -32
- package/script/src/Core/Task.js +95 -24
- package/script/src/Core/TaskOption.js +8 -6
- package/script/src/Core/TaskResult.js +67 -6
- package/script/src/Core/TaskValidation.js +12 -8
- package/script/src/Core/These.js +42 -42
- package/script/src/Core/Validation.js +42 -43
- package/script/src/Types/Brand.js +3 -3
- package/types/src/Composition/flip.d.ts +2 -2
- package/types/src/Composition/fn.d.ts +1 -1
- package/types/src/Composition/pipe.d.ts +1 -1
- package/types/src/Composition/tap.d.ts +1 -1
- package/types/src/Composition/uncurry.d.ts +3 -3
- package/types/src/Core/Arr.d.ts +5 -5
- package/types/src/Core/Arr.d.ts.map +1 -1
- package/types/src/Core/Option.d.ts +21 -30
- package/types/src/Core/Option.d.ts.map +1 -1
- package/types/src/Core/Rec.d.ts.map +1 -1
- package/types/src/Core/RemoteData.d.ts +9 -13
- package/types/src/Core/RemoteData.d.ts.map +1 -1
- package/types/src/Core/Result.d.ts +19 -28
- package/types/src/Core/Result.d.ts.map +1 -1
- package/types/src/Core/Task.d.ts +81 -34
- package/types/src/Core/Task.d.ts.map +1 -1
- package/types/src/Core/TaskOption.d.ts +1 -1
- package/types/src/Core/TaskOption.d.ts.map +1 -1
- package/types/src/Core/TaskResult.d.ts +41 -2
- package/types/src/Core/TaskResult.d.ts.map +1 -1
- package/types/src/Core/TaskValidation.d.ts +10 -6
- package/types/src/Core/TaskValidation.d.ts.map +1 -1
- package/types/src/Core/These.d.ts +33 -33
- package/types/src/Core/These.d.ts.map +1 -1
- package/types/src/Core/Validation.d.ts +38 -42
- package/types/src/Core/Validation.d.ts.map +1 -1
- package/types/src/Types/Brand.d.ts +5 -5
|
@@ -18,11 +18,11 @@ export declare namespace TaskResult {
|
|
|
18
18
|
/**
|
|
19
19
|
* Wraps a value in a successful TaskResult.
|
|
20
20
|
*/
|
|
21
|
-
const
|
|
21
|
+
const ok: <E, A>(value: A) => TaskResult<E, A>;
|
|
22
22
|
/**
|
|
23
23
|
* Creates a failed TaskResult with the given error.
|
|
24
24
|
*/
|
|
25
|
-
const
|
|
25
|
+
const err: <E, A>(error: E) => TaskResult<E, A>;
|
|
26
26
|
/**
|
|
27
27
|
* Creates a TaskResult from a function that may throw.
|
|
28
28
|
* Catches any errors and transforms them using the onError function.
|
|
@@ -74,5 +74,44 @@ export declare namespace TaskResult {
|
|
|
74
74
|
* Useful for logging or debugging.
|
|
75
75
|
*/
|
|
76
76
|
const tap: <E, A>(f: (a: A) => void) => (data: TaskResult<E, A>) => TaskResult<E, A>;
|
|
77
|
+
/**
|
|
78
|
+
* Re-runs a TaskResult on `Err` with configurable attempts, backoff, and retry condition.
|
|
79
|
+
*
|
|
80
|
+
* @param options.attempts - Total number of attempts (1 = no retry, 3 = up to 3 tries)
|
|
81
|
+
* @param options.backoff - Fixed delay in ms, or a function `(attempt) => ms` for computed delay
|
|
82
|
+
* @param options.when - Only retry when this returns true; defaults to always retry on Err
|
|
83
|
+
*
|
|
84
|
+
* @example
|
|
85
|
+
* ```ts
|
|
86
|
+
* // Retry up to 3 times with exponential backoff
|
|
87
|
+
* pipe(
|
|
88
|
+
* fetchUser,
|
|
89
|
+
* TaskResult.retry({ attempts: 3, backoff: n => n * 1000 })
|
|
90
|
+
* );
|
|
91
|
+
*
|
|
92
|
+
* // Only retry on network errors, not auth errors
|
|
93
|
+
* pipe(
|
|
94
|
+
* fetchUser,
|
|
95
|
+
* TaskResult.retry({ attempts: 3, when: e => e instanceof NetworkError })
|
|
96
|
+
* );
|
|
97
|
+
* ```
|
|
98
|
+
*/
|
|
99
|
+
const retry: <E>(options: {
|
|
100
|
+
attempts: number;
|
|
101
|
+
backoff?: number | ((attempt: number) => number);
|
|
102
|
+
when?: (error: E) => boolean;
|
|
103
|
+
}) => <A>(data: TaskResult<E, A>) => TaskResult<E, A>;
|
|
104
|
+
/**
|
|
105
|
+
* Fails a TaskResult with a typed error if it does not resolve within the given time.
|
|
106
|
+
*
|
|
107
|
+
* @example
|
|
108
|
+
* ```ts
|
|
109
|
+
* pipe(
|
|
110
|
+
* fetchUser,
|
|
111
|
+
* TaskResult.timeout(5000, () => new TimeoutError("fetch user timed out"))
|
|
112
|
+
* );
|
|
113
|
+
* ```
|
|
114
|
+
*/
|
|
115
|
+
const timeout: <E>(ms: number, onTimeout: () => E) => <A>(data: TaskResult<E, A>) => TaskResult<E, A>;
|
|
77
116
|
}
|
|
78
117
|
//# sourceMappingURL=TaskResult.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TaskResult.d.ts","sourceRoot":"","sources":["../../../src/src/Core/TaskResult.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC;;;;;;;;;;;;GAYG;AACH,MAAM,MAAM,UAAU,CAAC,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AAElD,yBAAiB,UAAU,CAAC;IAC1B;;OAEG;IACI,MAAM,EAAE,GAAI,CAAC,EAAE,CAAC,EAAE,OAAO,CAAC,KAAG,UAAU,CAAC,CAAC,EAAE,CAAC,
|
|
1
|
+
{"version":3,"file":"TaskResult.d.ts","sourceRoot":"","sources":["../../../src/src/Core/TaskResult.ts"],"names":[],"mappings":"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"}
|
|
@@ -10,12 +10,12 @@ import { Validation } from "./Validation.js";
|
|
|
10
10
|
* ```ts
|
|
11
11
|
* const validateName = (name: string): TaskValidation<string, string> =>
|
|
12
12
|
* name.length > 0
|
|
13
|
-
* ? TaskValidation.
|
|
14
|
-
* : TaskValidation.
|
|
13
|
+
* ? TaskValidation.valid(name)
|
|
14
|
+
* : TaskValidation.invalid("Name is required");
|
|
15
15
|
*
|
|
16
16
|
* // Accumulate errors from multiple async validations using ap
|
|
17
17
|
* pipe(
|
|
18
|
-
* TaskValidation.
|
|
18
|
+
* TaskValidation.valid((name: string) => (age: number) => ({ name, age })),
|
|
19
19
|
* TaskValidation.ap(validateName("")),
|
|
20
20
|
* TaskValidation.ap(validateAge(-1))
|
|
21
21
|
* )();
|
|
@@ -27,11 +27,15 @@ export declare namespace TaskValidation {
|
|
|
27
27
|
/**
|
|
28
28
|
* Wraps a value in a valid TaskValidation.
|
|
29
29
|
*/
|
|
30
|
-
const
|
|
30
|
+
const valid: <E, A>(value: A) => TaskValidation<E, A>;
|
|
31
31
|
/**
|
|
32
32
|
* Creates a failed TaskValidation with a single error.
|
|
33
33
|
*/
|
|
34
|
-
const
|
|
34
|
+
const invalid: <E, A>(error: E) => TaskValidation<E, A>;
|
|
35
|
+
/**
|
|
36
|
+
* Creates an invalid TaskValidation from multiple errors.
|
|
37
|
+
*/
|
|
38
|
+
const invalidAll: <E, A>(errors: NonEmptyList<E>) => TaskValidation<E, A>;
|
|
35
39
|
/**
|
|
36
40
|
* Lifts a Validation into a TaskValidation.
|
|
37
41
|
*/
|
|
@@ -69,7 +73,7 @@ export declare namespace TaskValidation {
|
|
|
69
73
|
* @example
|
|
70
74
|
* ```ts
|
|
71
75
|
* pipe(
|
|
72
|
-
* TaskValidation.
|
|
76
|
+
* TaskValidation.valid((name: string) => (age: number) => ({ name, age })),
|
|
73
77
|
* TaskValidation.ap(validateName(name)),
|
|
74
78
|
* TaskValidation.ap(validateAge(age))
|
|
75
79
|
* )();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TaskValidation.d.ts","sourceRoot":"","sources":["../../../src/src/Core/TaskValidation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AACxD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAE7C;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,MAAM,cAAc,CAAC,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AAE1D,yBAAiB,cAAc,CAAC;IAC9B;;OAEG;IACI,MAAM,
|
|
1
|
+
{"version":3,"file":"TaskValidation.d.ts","sourceRoot":"","sources":["../../../src/src/Core/TaskValidation.ts"],"names":[],"mappings":"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"}
|
|
@@ -13,9 +13,9 @@ import { WithError, WithKind, WithValue } from "./InternalTypes.js";
|
|
|
13
13
|
* ```ts
|
|
14
14
|
* const parse = (s: string): These<string, number> => {
|
|
15
15
|
* const n = parseFloat(s.trim());
|
|
16
|
-
* if (isNaN(n)) return These.
|
|
17
|
-
* if (s !== s.trim()) return These.
|
|
18
|
-
* return These.
|
|
16
|
+
* if (isNaN(n)) return These.err("Not a number");
|
|
17
|
+
* if (s !== s.trim()) return These.both("Leading/trailing whitespace trimmed", n);
|
|
18
|
+
* return These.ok(n);
|
|
19
19
|
* };
|
|
20
20
|
* ```
|
|
21
21
|
*/
|
|
@@ -23,32 +23,32 @@ export type These<E, A> = Err<E> | Ok<A> | Both<E, A>;
|
|
|
23
23
|
export type Both<E, A> = WithKind<"Both"> & WithError<E> & WithValue<A>;
|
|
24
24
|
export declare namespace These {
|
|
25
25
|
/**
|
|
26
|
-
* Creates a These holding only
|
|
26
|
+
* Creates a These holding only a success value (no error).
|
|
27
27
|
*
|
|
28
28
|
* @example
|
|
29
29
|
* ```ts
|
|
30
|
-
* These.
|
|
30
|
+
* These.ok(42);
|
|
31
31
|
* ```
|
|
32
32
|
*/
|
|
33
|
-
const
|
|
33
|
+
const ok: <A>(value: A) => Ok<A>;
|
|
34
34
|
/**
|
|
35
|
-
* Creates a These holding only
|
|
35
|
+
* Creates a These holding only an error/warning (no success value).
|
|
36
36
|
*
|
|
37
37
|
* @example
|
|
38
38
|
* ```ts
|
|
39
|
-
* These.
|
|
39
|
+
* These.err("Something went wrong");
|
|
40
40
|
* ```
|
|
41
41
|
*/
|
|
42
|
-
const
|
|
42
|
+
const err: <E>(error: E) => Err<E>;
|
|
43
43
|
/**
|
|
44
44
|
* Creates a These holding both an error/warning and a success value.
|
|
45
45
|
*
|
|
46
46
|
* @example
|
|
47
47
|
* ```ts
|
|
48
|
-
* These.
|
|
48
|
+
* These.both("Deprecated API used", result);
|
|
49
49
|
* ```
|
|
50
50
|
*/
|
|
51
|
-
const
|
|
51
|
+
const both: <E, A>(error: E, value: A) => Both<E, A>;
|
|
52
52
|
/**
|
|
53
53
|
* Type guard — checks if a These holds only an error/warning.
|
|
54
54
|
*/
|
|
@@ -74,9 +74,9 @@ export declare namespace These {
|
|
|
74
74
|
*
|
|
75
75
|
* @example
|
|
76
76
|
* ```ts
|
|
77
|
-
* pipe(These.
|
|
78
|
-
* pipe(These.
|
|
79
|
-
* pipe(These.
|
|
77
|
+
* pipe(These.ok(5), These.map(n => n * 2)); // Ok(10)
|
|
78
|
+
* pipe(These.both("warn", 5), These.map(n => n * 2)); // Both("warn", 10)
|
|
79
|
+
* pipe(These.err("err"), These.map(n => n * 2)); // Err("err")
|
|
80
80
|
* ```
|
|
81
81
|
*/
|
|
82
82
|
const map: <A, B>(f: (a: A) => B) => <E>(data: These<E, A>) => These<E, B>;
|
|
@@ -85,8 +85,8 @@ export declare namespace These {
|
|
|
85
85
|
*
|
|
86
86
|
* @example
|
|
87
87
|
* ```ts
|
|
88
|
-
* pipe(These.
|
|
89
|
-
* pipe(These.
|
|
88
|
+
* pipe(These.err("err"), These.mapErr(e => e.toUpperCase())); // Err("ERR")
|
|
89
|
+
* pipe(These.both("warn", 5), These.mapErr(e => e.toUpperCase())); // Both("WARN", 5)
|
|
90
90
|
* ```
|
|
91
91
|
*/
|
|
92
92
|
const mapErr: <E, F>(f: (e: E) => F) => <A>(data: These<E, A>) => These<F, A>;
|
|
@@ -96,7 +96,7 @@ export declare namespace These {
|
|
|
96
96
|
* @example
|
|
97
97
|
* ```ts
|
|
98
98
|
* pipe(
|
|
99
|
-
* These.
|
|
99
|
+
* These.both("warn", 5),
|
|
100
100
|
* These.bimap(e => e.toUpperCase(), n => n * 2)
|
|
101
101
|
* ); // Both("WARN", 10)
|
|
102
102
|
* ```
|
|
@@ -111,11 +111,11 @@ export declare namespace These {
|
|
|
111
111
|
*
|
|
112
112
|
* @example
|
|
113
113
|
* ```ts
|
|
114
|
-
* const double = (n: number): These<string, number> => These.
|
|
114
|
+
* const double = (n: number): These<string, number> => These.ok(n * 2);
|
|
115
115
|
*
|
|
116
|
-
* pipe(These.
|
|
117
|
-
* pipe(These.
|
|
118
|
-
* pipe(These.
|
|
116
|
+
* pipe(These.ok(5), These.chain(double)); // Ok(10)
|
|
117
|
+
* pipe(These.both("warn", 5), These.chain(double)); // Both("warn", 10)
|
|
118
|
+
* pipe(These.err("err"), These.chain(double)); // Err("err")
|
|
119
119
|
* ```
|
|
120
120
|
*/
|
|
121
121
|
const chain: <E, A, B>(f: (a: A) => These<E, B>) => (data: These<E, A>) => These<E, B>;
|
|
@@ -160,9 +160,9 @@ export declare namespace These {
|
|
|
160
160
|
*
|
|
161
161
|
* @example
|
|
162
162
|
* ```ts
|
|
163
|
-
* pipe(These.
|
|
164
|
-
* pipe(These.
|
|
165
|
-
* pipe(These.
|
|
163
|
+
* pipe(These.ok(5), These.getOrElse(0)); // 5
|
|
164
|
+
* pipe(These.both("warn", 5), These.getOrElse(0)); // 5
|
|
165
|
+
* pipe(These.err("err"), These.getOrElse(0)); // 0
|
|
166
166
|
* ```
|
|
167
167
|
*/
|
|
168
168
|
const getOrElse: <A>(defaultValue: A) => <E>(data: These<E, A>) => A;
|
|
@@ -179,9 +179,9 @@ export declare namespace These {
|
|
|
179
179
|
*
|
|
180
180
|
* @example
|
|
181
181
|
* ```ts
|
|
182
|
-
* These.swap(These.
|
|
183
|
-
* These.swap(These.
|
|
184
|
-
* These.swap(These.
|
|
182
|
+
* These.swap(These.err("err")); // Ok("err")
|
|
183
|
+
* These.swap(These.ok(5)); // Err(5)
|
|
184
|
+
* These.swap(These.both("warn", 5)); // Both(5, "warn")
|
|
185
185
|
* ```
|
|
186
186
|
*/
|
|
187
187
|
const swap: <E, A>(data: These<E, A>) => These<A, E>;
|
|
@@ -191,9 +191,9 @@ export declare namespace These {
|
|
|
191
191
|
*
|
|
192
192
|
* @example
|
|
193
193
|
* ```ts
|
|
194
|
-
* These.toOption(These.
|
|
195
|
-
* These.toOption(These.
|
|
196
|
-
* These.toOption(These.
|
|
194
|
+
* These.toOption(These.ok(42)); // Some(42)
|
|
195
|
+
* These.toOption(These.both("warn", 42)); // Some(42)
|
|
196
|
+
* These.toOption(These.err("err")); // None
|
|
197
197
|
* ```
|
|
198
198
|
*/
|
|
199
199
|
const toOption: <E, A>(data: These<E, A>) => import("./Option.ts").Option<A>;
|
|
@@ -203,9 +203,9 @@ export declare namespace These {
|
|
|
203
203
|
*
|
|
204
204
|
* @example
|
|
205
205
|
* ```ts
|
|
206
|
-
* These.toResult(These.
|
|
207
|
-
* These.toResult(These.
|
|
208
|
-
* These.toResult(These.
|
|
206
|
+
* These.toResult(These.ok(42)); // Ok(42)
|
|
207
|
+
* These.toResult(These.both("warn", 42)); // Ok(42)
|
|
208
|
+
* These.toResult(These.err("err")); // Err("err")
|
|
209
209
|
* ```
|
|
210
210
|
*/
|
|
211
211
|
const toResult: <E, A>(data: These<E, A>) => Result<E, A>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"These.d.ts","sourceRoot":"","sources":["../../../src/src/Core/These.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAEpE;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,MAAM,KAAK,CAAC,CAAC,EAAE,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAEtD,MAAM,MAAM,IAAI,CAAC,CAAC,EAAE,CAAC,IAAI,QAAQ,CAAC,MAAM,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;AAExE,yBAAiB,KAAK,CAAC;IACrB;;;;;;;OAOG;IACI,MAAM,
|
|
1
|
+
{"version":3,"file":"These.d.ts","sourceRoot":"","sources":["../../../src/src/Core/These.ts"],"names":[],"mappings":"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"}
|
|
@@ -11,14 +11,14 @@ import { WithErrors, WithKind, WithValue } from "./InternalTypes.js";
|
|
|
11
11
|
* @example
|
|
12
12
|
* ```ts
|
|
13
13
|
* const validateName = (name: string): Validation<string, string> =>
|
|
14
|
-
* name.length > 0 ? Validation.
|
|
14
|
+
* name.length > 0 ? Validation.valid(name) : Validation.invalid("Name is required");
|
|
15
15
|
*
|
|
16
16
|
* const validateAge = (age: number): Validation<string, number> =>
|
|
17
|
-
* age >= 0 ? Validation.
|
|
17
|
+
* age >= 0 ? Validation.valid(age) : Validation.invalid("Age must be positive");
|
|
18
18
|
*
|
|
19
19
|
* // Accumulates all errors using ap
|
|
20
20
|
* pipe(
|
|
21
|
-
* Validation.
|
|
21
|
+
* Validation.valid((name: string) => (age: number) => ({ name, age })),
|
|
22
22
|
* Validation.ap(validateName("")),
|
|
23
23
|
* Validation.ap(validateAge(-1))
|
|
24
24
|
* );
|
|
@@ -34,47 +34,43 @@ export declare namespace Validation {
|
|
|
34
34
|
*
|
|
35
35
|
* @example
|
|
36
36
|
* ```ts
|
|
37
|
-
* Validation.
|
|
37
|
+
* Validation.valid(42); // Valid(42)
|
|
38
38
|
* ```
|
|
39
39
|
*/
|
|
40
|
-
const
|
|
40
|
+
const valid: <E, A>(value: A) => Validation<E, A>;
|
|
41
41
|
/**
|
|
42
|
-
* Creates
|
|
43
|
-
*/
|
|
44
|
-
const toValid: <A>(value: A) => Valid<A>;
|
|
45
|
-
/**
|
|
46
|
-
* Type guard that checks if a Validation is valid.
|
|
47
|
-
*/
|
|
48
|
-
const isValid: <E, A>(data: Validation<E, A>) => data is Valid<A>;
|
|
49
|
-
/**
|
|
50
|
-
* Creates an invalid Validation with the given errors.
|
|
42
|
+
* Creates an invalid Validation from a single error.
|
|
51
43
|
*
|
|
52
44
|
* @example
|
|
53
45
|
* ```ts
|
|
54
|
-
* Validation.
|
|
46
|
+
* Validation.invalid("Invalid input");
|
|
55
47
|
* ```
|
|
56
48
|
*/
|
|
57
|
-
const
|
|
58
|
-
/**
|
|
59
|
-
* Type guard that checks if a Validation is invalid.
|
|
60
|
-
*/
|
|
61
|
-
const isInvalid: <E, A>(data: Validation<E, A>) => data is Invalid<E>;
|
|
49
|
+
const invalid: <E>(error: E) => Invalid<E>;
|
|
62
50
|
/**
|
|
63
|
-
* Creates an invalid Validation from
|
|
51
|
+
* Creates an invalid Validation from multiple errors.
|
|
64
52
|
*
|
|
65
53
|
* @example
|
|
66
54
|
* ```ts
|
|
67
|
-
* Validation.
|
|
55
|
+
* Validation.invalidAll(["Invalid input"]);
|
|
68
56
|
* ```
|
|
69
57
|
*/
|
|
70
|
-
const
|
|
58
|
+
const invalidAll: <E>(errors: NonEmptyList<E>) => Invalid<E>;
|
|
59
|
+
/**
|
|
60
|
+
* Type guard that checks if a Validation is valid.
|
|
61
|
+
*/
|
|
62
|
+
const isValid: <E, A>(data: Validation<E, A>) => data is Valid<A>;
|
|
63
|
+
/**
|
|
64
|
+
* Type guard that checks if a Validation is invalid.
|
|
65
|
+
*/
|
|
66
|
+
const isInvalid: <E, A>(data: Validation<E, A>) => data is Invalid<E>;
|
|
71
67
|
/**
|
|
72
68
|
* Transforms the success value inside a Validation.
|
|
73
69
|
*
|
|
74
70
|
* @example
|
|
75
71
|
* ```ts
|
|
76
|
-
* pipe(Validation.
|
|
77
|
-
* pipe(Validation.
|
|
72
|
+
* pipe(Validation.valid(5), Validation.map(n => n * 2)); // Valid(10)
|
|
73
|
+
* pipe(Validation.invalid("oops"), Validation.map(n => n * 2)); // Invalid(["oops"])
|
|
78
74
|
* ```
|
|
79
75
|
*/
|
|
80
76
|
const map: <A, B>(f: (a: A) => B) => <E>(data: Validation<E, A>) => Validation<E, B>;
|
|
@@ -87,10 +83,10 @@ export declare namespace Validation {
|
|
|
87
83
|
* @example
|
|
88
84
|
* ```ts
|
|
89
85
|
* const validatePositive = (n: number): Validation<string, number> =>
|
|
90
|
-
* n > 0 ? Validation.
|
|
86
|
+
* n > 0 ? Validation.valid(n) : Validation.invalid("Must be positive");
|
|
91
87
|
*
|
|
92
|
-
* pipe(Validation.
|
|
93
|
-
* pipe(Validation.
|
|
88
|
+
* pipe(Validation.valid(5), Validation.chain(validatePositive)); // Valid(5)
|
|
89
|
+
* pipe(Validation.valid(-1), Validation.chain(validatePositive)); // Invalid(["Must be positive"])
|
|
94
90
|
* ```
|
|
95
91
|
*/
|
|
96
92
|
const chain: <E, A, B>(f: (a: A) => Validation<E, B>) => (data: Validation<E, A>) => Validation<E, B>;
|
|
@@ -102,15 +98,15 @@ export declare namespace Validation {
|
|
|
102
98
|
* ```ts
|
|
103
99
|
* const add = (a: number) => (b: number) => a + b;
|
|
104
100
|
* pipe(
|
|
105
|
-
* Validation.
|
|
106
|
-
* Validation.ap(Validation.
|
|
107
|
-
* Validation.ap(Validation.
|
|
101
|
+
* Validation.valid(add),
|
|
102
|
+
* Validation.ap(Validation.valid(5)),
|
|
103
|
+
* Validation.ap(Validation.valid(3))
|
|
108
104
|
* ); // Valid(8)
|
|
109
105
|
*
|
|
110
106
|
* pipe(
|
|
111
|
-
* Validation.
|
|
112
|
-
* Validation.ap(Validation.
|
|
113
|
-
* Validation.ap(Validation.
|
|
107
|
+
* Validation.valid(add),
|
|
108
|
+
* Validation.ap(Validation.invalid<string, number>("bad a")),
|
|
109
|
+
* Validation.ap(Validation.invalid<string, number>("bad b"))
|
|
114
110
|
* ); // Invalid(["bad a", "bad b"])
|
|
115
111
|
* ```
|
|
116
112
|
*/
|
|
@@ -121,7 +117,7 @@ export declare namespace Validation {
|
|
|
121
117
|
* @example
|
|
122
118
|
* ```ts
|
|
123
119
|
* pipe(
|
|
124
|
-
* Validation.
|
|
120
|
+
* Validation.valid(42),
|
|
125
121
|
* Validation.fold(
|
|
126
122
|
* errors => `Errors: ${errors.join(", ")}`,
|
|
127
123
|
* value => `Value: ${value}`
|
|
@@ -153,8 +149,8 @@ export declare namespace Validation {
|
|
|
153
149
|
*
|
|
154
150
|
* @example
|
|
155
151
|
* ```ts
|
|
156
|
-
* pipe(Validation.
|
|
157
|
-
* pipe(Validation.
|
|
152
|
+
* pipe(Validation.valid(5), Validation.getOrElse(0)); // 5
|
|
153
|
+
* pipe(Validation.invalid("oops"), Validation.getOrElse(0)); // 0
|
|
158
154
|
* ```
|
|
159
155
|
*/
|
|
160
156
|
const getOrElse: <E, A>(defaultValue: A) => (data: Validation<E, A>) => A;
|
|
@@ -164,7 +160,7 @@ export declare namespace Validation {
|
|
|
164
160
|
* @example
|
|
165
161
|
* ```ts
|
|
166
162
|
* pipe(
|
|
167
|
-
* Validation.
|
|
163
|
+
* Validation.valid(5),
|
|
168
164
|
* Validation.tap(n => console.log("Value:", n)),
|
|
169
165
|
* Validation.map(n => n * 2)
|
|
170
166
|
* );
|
|
@@ -187,13 +183,13 @@ export declare namespace Validation {
|
|
|
187
183
|
* @example
|
|
188
184
|
* ```ts
|
|
189
185
|
* Validation.combine(
|
|
190
|
-
* Validation.
|
|
191
|
-
* Validation.
|
|
186
|
+
* Validation.invalid("Error 1"),
|
|
187
|
+
* Validation.invalid("Error 2")
|
|
192
188
|
* ); // Invalid(["Error 1", "Error 2"])
|
|
193
189
|
*
|
|
194
190
|
* Validation.combine(
|
|
195
|
-
* Validation.
|
|
196
|
-
* Validation.
|
|
191
|
+
* Validation.valid("a"),
|
|
192
|
+
* Validation.valid("b")
|
|
197
193
|
* ); // Valid("b")
|
|
198
194
|
* ```
|
|
199
195
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Validation.d.ts","sourceRoot":"","sources":["../../../src/src/Core/Validation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAkB,YAAY,EAAE,MAAM,0BAA0B,CAAC;AACxE,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAErE;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,MAAM,MAAM,UAAU,CAAC,CAAC,EAAE,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;AAErD,MAAM,MAAM,KAAK,CAAC,CAAC,IAAI,QAAQ,CAAC,OAAO,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;AACxD,MAAM,MAAM,OAAO,CAAC,CAAC,IAAI,QAAQ,CAAC,SAAS,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;AAE7D,yBAAiB,UAAU,CAAC;IAC1B;;;;;;;OAOG;IACI,MAAM,
|
|
1
|
+
{"version":3,"file":"Validation.d.ts","sourceRoot":"","sources":["../../../src/src/Core/Validation.ts"],"names":[],"mappings":"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"}
|
|
@@ -8,8 +8,8 @@ declare const _brand: unique symbol;
|
|
|
8
8
|
* type UserId = Brand<"UserId", string>;
|
|
9
9
|
* type ProductId = Brand<"ProductId", string>;
|
|
10
10
|
*
|
|
11
|
-
* const toUserId = Brand.
|
|
12
|
-
* const toProductId = Brand.
|
|
11
|
+
* const toUserId = Brand.wrap<"UserId", string>();
|
|
12
|
+
* const toProductId = Brand.wrap<"ProductId", string>();
|
|
13
13
|
*
|
|
14
14
|
* const userId: UserId = toUserId("user-123");
|
|
15
15
|
* const productId: ProductId = toProductId("prod-456");
|
|
@@ -23,19 +23,19 @@ export type Brand<K extends string, T> = T & {
|
|
|
23
23
|
};
|
|
24
24
|
export declare namespace Brand {
|
|
25
25
|
/**
|
|
26
|
-
*
|
|
26
|
+
* Returns a constructor that wraps a value of type T in brand K.
|
|
27
27
|
* The resulting function performs an unchecked cast — only use when the raw
|
|
28
28
|
* value is known to satisfy the brand's invariants.
|
|
29
29
|
*
|
|
30
30
|
* @example
|
|
31
31
|
* ```ts
|
|
32
32
|
* type PositiveNumber = Brand<"PositiveNumber", number>;
|
|
33
|
-
* const toPositiveNumber = Brand.
|
|
33
|
+
* const toPositiveNumber = Brand.wrap<"PositiveNumber", number>();
|
|
34
34
|
*
|
|
35
35
|
* const n: PositiveNumber = toPositiveNumber(42);
|
|
36
36
|
* ```
|
|
37
37
|
*/
|
|
38
|
-
const
|
|
38
|
+
const wrap: <K extends string, T>() => (value: T) => Brand<K, T>;
|
|
39
39
|
/**
|
|
40
40
|
* Strips the brand and returns the underlying value.
|
|
41
41
|
* Since Brand<K, T> extends T this is rarely needed, but can improve readability.
|