@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
package/script/src/Core/These.js
CHANGED
|
@@ -5,32 +5,32 @@ const Result_js_1 = require("./Result.js");
|
|
|
5
5
|
var These;
|
|
6
6
|
(function (These) {
|
|
7
7
|
/**
|
|
8
|
-
* Creates a These holding only
|
|
8
|
+
* Creates a These holding only a success value (no error).
|
|
9
9
|
*
|
|
10
10
|
* @example
|
|
11
11
|
* ```ts
|
|
12
|
-
* These.
|
|
12
|
+
* These.ok(42);
|
|
13
13
|
* ```
|
|
14
14
|
*/
|
|
15
|
-
These.
|
|
15
|
+
These.ok = (value) => Result_js_1.Result.ok(value);
|
|
16
16
|
/**
|
|
17
|
-
* Creates a These holding only
|
|
17
|
+
* Creates a These holding only an error/warning (no success value).
|
|
18
18
|
*
|
|
19
19
|
* @example
|
|
20
20
|
* ```ts
|
|
21
|
-
* These.
|
|
21
|
+
* These.err("Something went wrong");
|
|
22
22
|
* ```
|
|
23
23
|
*/
|
|
24
|
-
These.
|
|
24
|
+
These.err = (error) => Result_js_1.Result.err(error);
|
|
25
25
|
/**
|
|
26
26
|
* Creates a These holding both an error/warning and a success value.
|
|
27
27
|
*
|
|
28
28
|
* @example
|
|
29
29
|
* ```ts
|
|
30
|
-
* These.
|
|
30
|
+
* These.both("Deprecated API used", result);
|
|
31
31
|
* ```
|
|
32
32
|
*/
|
|
33
|
-
These.
|
|
33
|
+
These.both = (error, value) => ({
|
|
34
34
|
kind: "Both",
|
|
35
35
|
error,
|
|
36
36
|
value,
|
|
@@ -60,33 +60,33 @@ var These;
|
|
|
60
60
|
*
|
|
61
61
|
* @example
|
|
62
62
|
* ```ts
|
|
63
|
-
* pipe(These.
|
|
64
|
-
* pipe(These.
|
|
65
|
-
* pipe(These.
|
|
63
|
+
* pipe(These.ok(5), These.map(n => n * 2)); // Ok(10)
|
|
64
|
+
* pipe(These.both("warn", 5), These.map(n => n * 2)); // Both("warn", 10)
|
|
65
|
+
* pipe(These.err("err"), These.map(n => n * 2)); // Err("err")
|
|
66
66
|
* ```
|
|
67
67
|
*/
|
|
68
68
|
These.map = (f) => (data) => {
|
|
69
69
|
if (These.isErr(data))
|
|
70
70
|
return data;
|
|
71
71
|
if (These.isOk(data))
|
|
72
|
-
return These.
|
|
73
|
-
return These.
|
|
72
|
+
return These.ok(f(data.value));
|
|
73
|
+
return These.both(data.error, f(data.value));
|
|
74
74
|
};
|
|
75
75
|
/**
|
|
76
76
|
* Transforms the error/warning value, leaving the success value unchanged.
|
|
77
77
|
*
|
|
78
78
|
* @example
|
|
79
79
|
* ```ts
|
|
80
|
-
* pipe(These.
|
|
81
|
-
* pipe(These.
|
|
80
|
+
* pipe(These.err("err"), These.mapErr(e => e.toUpperCase())); // Err("ERR")
|
|
81
|
+
* pipe(These.both("warn", 5), These.mapErr(e => e.toUpperCase())); // Both("WARN", 5)
|
|
82
82
|
* ```
|
|
83
83
|
*/
|
|
84
84
|
These.mapErr = (f) => (data) => {
|
|
85
85
|
if (These.isOk(data))
|
|
86
86
|
return data;
|
|
87
87
|
if (These.isErr(data))
|
|
88
|
-
return These.
|
|
89
|
-
return These.
|
|
88
|
+
return These.err(f(data.error));
|
|
89
|
+
return These.both(f(data.error), data.value);
|
|
90
90
|
};
|
|
91
91
|
/**
|
|
92
92
|
* Transforms both the error and success values independently.
|
|
@@ -94,17 +94,17 @@ var These;
|
|
|
94
94
|
* @example
|
|
95
95
|
* ```ts
|
|
96
96
|
* pipe(
|
|
97
|
-
* These.
|
|
97
|
+
* These.both("warn", 5),
|
|
98
98
|
* These.bimap(e => e.toUpperCase(), n => n * 2)
|
|
99
99
|
* ); // Both("WARN", 10)
|
|
100
100
|
* ```
|
|
101
101
|
*/
|
|
102
102
|
These.bimap = (onErr, onOk) => (data) => {
|
|
103
103
|
if (These.isErr(data))
|
|
104
|
-
return These.
|
|
104
|
+
return These.err(onErr(data.error));
|
|
105
105
|
if (These.isOk(data))
|
|
106
|
-
return These.
|
|
107
|
-
return These.
|
|
106
|
+
return These.ok(onOk(data.value));
|
|
107
|
+
return These.both(onErr(data.error), onOk(data.value));
|
|
108
108
|
};
|
|
109
109
|
/**
|
|
110
110
|
* Chains These computations by passing the success value to f.
|
|
@@ -115,11 +115,11 @@ var These;
|
|
|
115
115
|
*
|
|
116
116
|
* @example
|
|
117
117
|
* ```ts
|
|
118
|
-
* const double = (n: number): These<string, number> => These.
|
|
118
|
+
* const double = (n: number): These<string, number> => These.ok(n * 2);
|
|
119
119
|
*
|
|
120
|
-
* pipe(These.
|
|
121
|
-
* pipe(These.
|
|
122
|
-
* pipe(These.
|
|
120
|
+
* pipe(These.ok(5), These.chain(double)); // Ok(10)
|
|
121
|
+
* pipe(These.both("warn", 5), These.chain(double)); // Both("warn", 10)
|
|
122
|
+
* pipe(These.err("err"), These.chain(double)); // Err("err")
|
|
123
123
|
* ```
|
|
124
124
|
*/
|
|
125
125
|
These.chain = (f) => (data) => {
|
|
@@ -128,7 +128,7 @@ var These;
|
|
|
128
128
|
if (These.isOk(data))
|
|
129
129
|
return f(data.value);
|
|
130
130
|
const result = f(data.value);
|
|
131
|
-
return These.isOk(result) ? These.
|
|
131
|
+
return These.isOk(result) ? These.both(data.error, result.value) : result;
|
|
132
132
|
};
|
|
133
133
|
/**
|
|
134
134
|
* Extracts a value from a These by providing handlers for all three cases.
|
|
@@ -179,9 +179,9 @@ var These;
|
|
|
179
179
|
*
|
|
180
180
|
* @example
|
|
181
181
|
* ```ts
|
|
182
|
-
* pipe(These.
|
|
183
|
-
* pipe(These.
|
|
184
|
-
* pipe(These.
|
|
182
|
+
* pipe(These.ok(5), These.getOrElse(0)); // 5
|
|
183
|
+
* pipe(These.both("warn", 5), These.getOrElse(0)); // 5
|
|
184
|
+
* pipe(These.err("err"), These.getOrElse(0)); // 0
|
|
185
185
|
* ```
|
|
186
186
|
*/
|
|
187
187
|
These.getOrElse = (defaultValue) => (data) => These.hasValue(data) ? data.value : defaultValue;
|
|
@@ -202,17 +202,17 @@ var These;
|
|
|
202
202
|
*
|
|
203
203
|
* @example
|
|
204
204
|
* ```ts
|
|
205
|
-
* These.swap(These.
|
|
206
|
-
* These.swap(These.
|
|
207
|
-
* These.swap(These.
|
|
205
|
+
* These.swap(These.err("err")); // Ok("err")
|
|
206
|
+
* These.swap(These.ok(5)); // Err(5)
|
|
207
|
+
* These.swap(These.both("warn", 5)); // Both(5, "warn")
|
|
208
208
|
* ```
|
|
209
209
|
*/
|
|
210
210
|
These.swap = (data) => {
|
|
211
211
|
if (These.isErr(data))
|
|
212
|
-
return These.
|
|
212
|
+
return These.ok(data.error);
|
|
213
213
|
if (These.isOk(data))
|
|
214
|
-
return These.
|
|
215
|
-
return These.
|
|
214
|
+
return These.err(data.value);
|
|
215
|
+
return These.both(data.value, data.error);
|
|
216
216
|
};
|
|
217
217
|
/**
|
|
218
218
|
* Converts a These to an Option.
|
|
@@ -220,9 +220,9 @@ var These;
|
|
|
220
220
|
*
|
|
221
221
|
* @example
|
|
222
222
|
* ```ts
|
|
223
|
-
* These.toOption(These.
|
|
224
|
-
* These.toOption(These.
|
|
225
|
-
* These.toOption(These.
|
|
223
|
+
* These.toOption(These.ok(42)); // Some(42)
|
|
224
|
+
* These.toOption(These.both("warn", 42)); // Some(42)
|
|
225
|
+
* These.toOption(These.err("err")); // None
|
|
226
226
|
* ```
|
|
227
227
|
*/
|
|
228
228
|
These.toOption = (data) => These.hasValue(data) ? { kind: "Some", value: data.value } : { kind: "None" };
|
|
@@ -232,14 +232,14 @@ var These;
|
|
|
232
232
|
*
|
|
233
233
|
* @example
|
|
234
234
|
* ```ts
|
|
235
|
-
* These.toResult(These.
|
|
236
|
-
* These.toResult(These.
|
|
237
|
-
* These.toResult(These.
|
|
235
|
+
* These.toResult(These.ok(42)); // Ok(42)
|
|
236
|
+
* These.toResult(These.both("warn", 42)); // Ok(42)
|
|
237
|
+
* These.toResult(These.err("err")); // Err("err")
|
|
238
238
|
* ```
|
|
239
239
|
*/
|
|
240
240
|
These.toResult = (data) => {
|
|
241
241
|
if (These.hasValue(data))
|
|
242
|
-
return Result_js_1.Result.
|
|
242
|
+
return Result_js_1.Result.ok(data.value);
|
|
243
243
|
return data;
|
|
244
244
|
};
|
|
245
245
|
})(These || (exports.These = These = {}));
|
|
@@ -9,56 +9,55 @@ var Validation;
|
|
|
9
9
|
*
|
|
10
10
|
* @example
|
|
11
11
|
* ```ts
|
|
12
|
-
* Validation.
|
|
12
|
+
* Validation.valid(42); // Valid(42)
|
|
13
13
|
* ```
|
|
14
14
|
*/
|
|
15
|
-
Validation.
|
|
15
|
+
Validation.valid = (value) => ({
|
|
16
16
|
kind: "Valid",
|
|
17
17
|
value,
|
|
18
18
|
});
|
|
19
19
|
/**
|
|
20
|
-
* Creates
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
*
|
|
20
|
+
* Creates an invalid Validation from a single error.
|
|
21
|
+
*
|
|
22
|
+
* @example
|
|
23
|
+
* ```ts
|
|
24
|
+
* Validation.invalid("Invalid input");
|
|
25
|
+
* ```
|
|
25
26
|
*/
|
|
26
|
-
Validation.
|
|
27
|
+
Validation.invalid = (error) => ({
|
|
28
|
+
kind: "Invalid",
|
|
29
|
+
errors: [error],
|
|
30
|
+
});
|
|
27
31
|
/**
|
|
28
|
-
* Creates an invalid Validation
|
|
32
|
+
* Creates an invalid Validation from multiple errors.
|
|
29
33
|
*
|
|
30
34
|
* @example
|
|
31
35
|
* ```ts
|
|
32
|
-
* Validation.
|
|
36
|
+
* Validation.invalidAll(["Invalid input"]);
|
|
33
37
|
* ```
|
|
34
38
|
*/
|
|
35
|
-
Validation.
|
|
39
|
+
Validation.invalidAll = (errors) => ({
|
|
36
40
|
kind: "Invalid",
|
|
37
41
|
errors,
|
|
38
42
|
});
|
|
39
43
|
/**
|
|
40
|
-
* Type guard that checks if a Validation is
|
|
44
|
+
* Type guard that checks if a Validation is valid.
|
|
41
45
|
*/
|
|
42
|
-
Validation.
|
|
46
|
+
Validation.isValid = (data) => data.kind === "Valid";
|
|
43
47
|
/**
|
|
44
|
-
*
|
|
45
|
-
*
|
|
46
|
-
* @example
|
|
47
|
-
* ```ts
|
|
48
|
-
* Validation.fail("Invalid input");
|
|
49
|
-
* ```
|
|
48
|
+
* Type guard that checks if a Validation is invalid.
|
|
50
49
|
*/
|
|
51
|
-
Validation.
|
|
50
|
+
Validation.isInvalid = (data) => data.kind === "Invalid";
|
|
52
51
|
/**
|
|
53
52
|
* Transforms the success value inside a Validation.
|
|
54
53
|
*
|
|
55
54
|
* @example
|
|
56
55
|
* ```ts
|
|
57
|
-
* pipe(Validation.
|
|
58
|
-
* pipe(Validation.
|
|
56
|
+
* pipe(Validation.valid(5), Validation.map(n => n * 2)); // Valid(10)
|
|
57
|
+
* pipe(Validation.invalid("oops"), Validation.map(n => n * 2)); // Invalid(["oops"])
|
|
59
58
|
* ```
|
|
60
59
|
*/
|
|
61
|
-
Validation.map = (f) => (data) => Validation.isValid(data) ? Validation.
|
|
60
|
+
Validation.map = (f) => (data) => Validation.isValid(data) ? Validation.valid(f(data.value)) : data;
|
|
62
61
|
/**
|
|
63
62
|
* Chains Validation computations. If the first is Valid, passes the value to f.
|
|
64
63
|
* If the first is Invalid, propagates the errors.
|
|
@@ -68,10 +67,10 @@ var Validation;
|
|
|
68
67
|
* @example
|
|
69
68
|
* ```ts
|
|
70
69
|
* const validatePositive = (n: number): Validation<string, number> =>
|
|
71
|
-
* n > 0 ? Validation.
|
|
70
|
+
* n > 0 ? Validation.valid(n) : Validation.invalid("Must be positive");
|
|
72
71
|
*
|
|
73
|
-
* pipe(Validation.
|
|
74
|
-
* pipe(Validation.
|
|
72
|
+
* pipe(Validation.valid(5), Validation.chain(validatePositive)); // Valid(5)
|
|
73
|
+
* pipe(Validation.valid(-1), Validation.chain(validatePositive)); // Invalid(["Must be positive"])
|
|
75
74
|
* ```
|
|
76
75
|
*/
|
|
77
76
|
Validation.chain = (f) => (data) => Validation.isValid(data) ? f(data.value) : data;
|
|
@@ -83,26 +82,26 @@ var Validation;
|
|
|
83
82
|
* ```ts
|
|
84
83
|
* const add = (a: number) => (b: number) => a + b;
|
|
85
84
|
* pipe(
|
|
86
|
-
* Validation.
|
|
87
|
-
* Validation.ap(Validation.
|
|
88
|
-
* Validation.ap(Validation.
|
|
85
|
+
* Validation.valid(add),
|
|
86
|
+
* Validation.ap(Validation.valid(5)),
|
|
87
|
+
* Validation.ap(Validation.valid(3))
|
|
89
88
|
* ); // Valid(8)
|
|
90
89
|
*
|
|
91
90
|
* pipe(
|
|
92
|
-
* Validation.
|
|
93
|
-
* Validation.ap(Validation.
|
|
94
|
-
* Validation.ap(Validation.
|
|
91
|
+
* Validation.valid(add),
|
|
92
|
+
* Validation.ap(Validation.invalid<string, number>("bad a")),
|
|
93
|
+
* Validation.ap(Validation.invalid<string, number>("bad b"))
|
|
95
94
|
* ); // Invalid(["bad a", "bad b"])
|
|
96
95
|
* ```
|
|
97
96
|
*/
|
|
98
97
|
Validation.ap = (arg) => (data) => {
|
|
99
98
|
if (Validation.isValid(data) && Validation.isValid(arg))
|
|
100
|
-
return Validation.
|
|
99
|
+
return Validation.valid(data.value(arg.value));
|
|
101
100
|
const errors = [
|
|
102
101
|
...(Validation.isInvalid(data) ? data.errors : []),
|
|
103
102
|
...(Validation.isInvalid(arg) ? arg.errors : []),
|
|
104
103
|
];
|
|
105
|
-
return (0, NonEmptyList_js_1.isNonEmptyList)(errors) ? Validation.
|
|
104
|
+
return (0, NonEmptyList_js_1.isNonEmptyList)(errors) ? Validation.invalidAll(errors) : Validation.valid(data);
|
|
106
105
|
};
|
|
107
106
|
/**
|
|
108
107
|
* Extracts the value from a Validation by providing handlers for both cases.
|
|
@@ -110,7 +109,7 @@ var Validation;
|
|
|
110
109
|
* @example
|
|
111
110
|
* ```ts
|
|
112
111
|
* pipe(
|
|
113
|
-
* Validation.
|
|
112
|
+
* Validation.valid(42),
|
|
114
113
|
* Validation.fold(
|
|
115
114
|
* errors => `Errors: ${errors.join(", ")}`,
|
|
116
115
|
* value => `Value: ${value}`
|
|
@@ -139,8 +138,8 @@ var Validation;
|
|
|
139
138
|
*
|
|
140
139
|
* @example
|
|
141
140
|
* ```ts
|
|
142
|
-
* pipe(Validation.
|
|
143
|
-
* pipe(Validation.
|
|
141
|
+
* pipe(Validation.valid(5), Validation.getOrElse(0)); // 5
|
|
142
|
+
* pipe(Validation.invalid("oops"), Validation.getOrElse(0)); // 0
|
|
144
143
|
* ```
|
|
145
144
|
*/
|
|
146
145
|
Validation.getOrElse = (defaultValue) => (data) => Validation.isValid(data) ? data.value : defaultValue;
|
|
@@ -150,7 +149,7 @@ var Validation;
|
|
|
150
149
|
* @example
|
|
151
150
|
* ```ts
|
|
152
151
|
* pipe(
|
|
153
|
-
* Validation.
|
|
152
|
+
* Validation.valid(5),
|
|
154
153
|
* Validation.tap(n => console.log("Value:", n)),
|
|
155
154
|
* Validation.map(n => n * 2)
|
|
156
155
|
* );
|
|
@@ -180,13 +179,13 @@ var Validation;
|
|
|
180
179
|
* @example
|
|
181
180
|
* ```ts
|
|
182
181
|
* Validation.combine(
|
|
183
|
-
* Validation.
|
|
184
|
-
* Validation.
|
|
182
|
+
* Validation.invalid("Error 1"),
|
|
183
|
+
* Validation.invalid("Error 2")
|
|
185
184
|
* ); // Invalid(["Error 1", "Error 2"])
|
|
186
185
|
*
|
|
187
186
|
* Validation.combine(
|
|
188
|
-
* Validation.
|
|
189
|
-
* Validation.
|
|
187
|
+
* Validation.valid("a"),
|
|
188
|
+
* Validation.valid("b")
|
|
190
189
|
* ); // Valid("b")
|
|
191
190
|
* ```
|
|
192
191
|
*/
|
|
@@ -198,7 +197,7 @@ var Validation;
|
|
|
198
197
|
...(Validation.isInvalid(first) ? first.errors : []),
|
|
199
198
|
...(Validation.isInvalid(second) ? second.errors : []),
|
|
200
199
|
];
|
|
201
|
-
return (0, NonEmptyList_js_1.isNonEmptyList)(errors) ? Validation.
|
|
200
|
+
return (0, NonEmptyList_js_1.isNonEmptyList)(errors) ? Validation.invalidAll(errors) : second;
|
|
202
201
|
};
|
|
203
202
|
/**
|
|
204
203
|
* Combines multiple Validation instances, accumulating all errors.
|
|
@@ -4,19 +4,19 @@ exports.Brand = void 0;
|
|
|
4
4
|
var Brand;
|
|
5
5
|
(function (Brand) {
|
|
6
6
|
/**
|
|
7
|
-
*
|
|
7
|
+
* Returns a constructor that wraps a value of type T in brand K.
|
|
8
8
|
* The resulting function performs an unchecked cast — only use when the raw
|
|
9
9
|
* value is known to satisfy the brand's invariants.
|
|
10
10
|
*
|
|
11
11
|
* @example
|
|
12
12
|
* ```ts
|
|
13
13
|
* type PositiveNumber = Brand<"PositiveNumber", number>;
|
|
14
|
-
* const toPositiveNumber = Brand.
|
|
14
|
+
* const toPositiveNumber = Brand.wrap<"PositiveNumber", number>();
|
|
15
15
|
*
|
|
16
16
|
* const n: PositiveNumber = toPositiveNumber(42);
|
|
17
17
|
* ```
|
|
18
18
|
*/
|
|
19
|
-
Brand.
|
|
19
|
+
Brand.wrap = () => (value) => value;
|
|
20
20
|
/**
|
|
21
21
|
* Strips the brand and returns the underlying value.
|
|
22
22
|
* Since Brand<K, T> extends T this is rarely needed, but can improve readability.
|
|
@@ -6,13 +6,13 @@
|
|
|
6
6
|
* ```ts
|
|
7
7
|
* // Original data-last (for pipe)
|
|
8
8
|
* pipe(
|
|
9
|
-
* Option.
|
|
9
|
+
* Option.some(5),
|
|
10
10
|
* Option.map(n => n * 2)
|
|
11
11
|
* ); // Some(10)
|
|
12
12
|
*
|
|
13
13
|
* // Flipped to data-first
|
|
14
14
|
* const mapFirst = flip(Option.map);
|
|
15
|
-
* mapFirst(Option.
|
|
15
|
+
* mapFirst(Option.some(5))(n => n * 2); // Some(10)
|
|
16
16
|
* ```
|
|
17
17
|
*
|
|
18
18
|
* @see {@link uncurry} for converting curried functions to multi-argument functions
|
|
@@ -11,15 +11,15 @@
|
|
|
11
11
|
* uncurry(nested)(); // 42
|
|
12
12
|
*
|
|
13
13
|
* // Original curried function
|
|
14
|
-
* Option.map(n => n * 2)(Option.
|
|
14
|
+
* Option.map(n => n * 2)(Option.some(5)); // Some(10)
|
|
15
15
|
*
|
|
16
16
|
* // Uncurried - all arguments at once
|
|
17
17
|
* const mapUncurried = uncurry(Option.map);
|
|
18
|
-
* mapUncurried(n => n * 2, Option.
|
|
18
|
+
* mapUncurried(n => n * 2, Option.some(5)); // Some(10)
|
|
19
19
|
*
|
|
20
20
|
* // Combined with flip for data-first uncurried
|
|
21
21
|
* const mapDataFirst = uncurry(flip(Option.map));
|
|
22
|
-
* mapDataFirst(Option.
|
|
22
|
+
* mapDataFirst(Option.some(5), n => n * 2); // Some(10)
|
|
23
23
|
* ```
|
|
24
24
|
*
|
|
25
25
|
* @see {@link flip} for reversing curried argument order
|
package/types/src/Core/Arr.d.ts
CHANGED
|
@@ -227,7 +227,7 @@ export declare namespace Arr {
|
|
|
227
227
|
* ```ts
|
|
228
228
|
* const parseNum = (s: string): Option<number> => {
|
|
229
229
|
* const n = Number(s);
|
|
230
|
-
* return isNaN(n) ? Option.
|
|
230
|
+
* return isNaN(n) ? Option.none() : Option.some(n);
|
|
231
231
|
* };
|
|
232
232
|
*
|
|
233
233
|
* pipe(["1", "2", "3"], Arr.traverse(parseNum)); // Some([1, 2, 3])
|
|
@@ -243,7 +243,7 @@ export declare namespace Arr {
|
|
|
243
243
|
* ```ts
|
|
244
244
|
* pipe(
|
|
245
245
|
* [1, 2, 3],
|
|
246
|
-
* Arr.traverseResult(n => n > 0 ? Result.
|
|
246
|
+
* Arr.traverseResult(n => n > 0 ? Result.ok(n) : Result.err("negative"))
|
|
247
247
|
* ); // Ok([1, 2, 3])
|
|
248
248
|
* ```
|
|
249
249
|
*/
|
|
@@ -255,7 +255,7 @@ export declare namespace Arr {
|
|
|
255
255
|
* ```ts
|
|
256
256
|
* pipe(
|
|
257
257
|
* [1, 2, 3],
|
|
258
|
-
* Arr.traverseTask(n => Task.
|
|
258
|
+
* Arr.traverseTask(n => Task.resolve(n * 2))
|
|
259
259
|
* )(); // Promise<[2, 4, 6]>
|
|
260
260
|
* ```
|
|
261
261
|
*/
|
|
@@ -266,8 +266,8 @@ export declare namespace Arr {
|
|
|
266
266
|
*
|
|
267
267
|
* @example
|
|
268
268
|
* ```ts
|
|
269
|
-
* Arr.sequence([Option.
|
|
270
|
-
* Arr.sequence([Option.
|
|
269
|
+
* Arr.sequence([Option.some(1), Option.some(2)]); // Some([1, 2])
|
|
270
|
+
* Arr.sequence([Option.some(1), Option.none()]); // None
|
|
271
271
|
* ```
|
|
272
272
|
*/
|
|
273
273
|
const sequence: <A>(data: readonly Option<A>[]) => Option<readonly A[]>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Arr.d.ts","sourceRoot":"","sources":["../../../src/src/Core/Arr.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAkB,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAExE;;;;;;;;;;;;;;GAcG;AACH,yBAAiB,GAAG,CAAC;IAGnB;;;;;;;;OAQG;IACI,MAAM,IAAI,GAAI,CAAC,EAAE,MAAM,SAAS,CAAC,EAAE,KAAG,MAAM,CAAC,CAAC,
|
|
1
|
+
{"version":3,"file":"Arr.d.ts","sourceRoot":"","sources":["../../../src/src/Core/Arr.ts"],"names":[],"mappings":"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"}
|