@clipboard-health/util-ts 2.11.2 → 2.12.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 +3 -0
- package/package.json +1 -1
- package/src/lib/errors/serviceError.d.ts +1 -1
- package/src/lib/functional/either.d.ts +28 -2
- package/src/lib/functional/either.js.map +1 -1
- package/src/lib/functional/option.d.ts +28 -2
- package/src/lib/functional/option.js.map +1 -1
- package/src/lib/functional/pipe.d.ts +18 -3
- package/src/lib/functional/pipe.js.map +1 -1
package/README.md
CHANGED
|
@@ -156,6 +156,7 @@ ok(E.isRight(validateUser({ email: "user@example.com", phone: "555-555-5555" }))
|
|
|
156
156
|
```ts
|
|
157
157
|
// ./examples/pipe.ts
|
|
158
158
|
|
|
159
|
+
// packages/util-ts/src/lib/functional/pipe.ts
|
|
159
160
|
import { equal } from "node:assert/strict";
|
|
160
161
|
|
|
161
162
|
import { pipe } from "@clipboard-health/util-ts";
|
|
@@ -178,6 +179,7 @@ equal(result, "Hello World");
|
|
|
178
179
|
```ts
|
|
179
180
|
// ./examples/option.ts
|
|
180
181
|
|
|
182
|
+
// packages/util-ts/src/lib/functional/option.ts
|
|
181
183
|
import { equal } from "node:assert/strict";
|
|
182
184
|
|
|
183
185
|
import { option as O, pipe } from "@clipboard-health/util-ts";
|
|
@@ -210,6 +212,7 @@ equal(result, "Result is 0.1");
|
|
|
210
212
|
```ts
|
|
211
213
|
// ./examples/either.ts
|
|
212
214
|
|
|
215
|
+
// packages/util-ts/src/lib/functional/either.ts
|
|
213
216
|
import { equal } from "node:assert/strict";
|
|
214
217
|
|
|
215
218
|
import { either as E, pipe } from "@clipboard-health/util-ts";
|
package/package.json
CHANGED
|
@@ -24,7 +24,7 @@ export interface ServiceIssue {
|
|
|
24
24
|
export type ErrorSource = "header" | "parameter" | "pointer";
|
|
25
25
|
export type ServiceErrorParams = string | {
|
|
26
26
|
/** Error cause */
|
|
27
|
-
cause?:
|
|
27
|
+
cause?: unknown;
|
|
28
28
|
/** Unique identifier for the issue */
|
|
29
29
|
id?: string;
|
|
30
30
|
/** Array of issues contributing to the error */
|
|
@@ -13,8 +13,34 @@ export type Right<A> = Readonly<{
|
|
|
13
13
|
* information. Convention dictates that `Left<E>` is used for failure and `Right<A>` for success.
|
|
14
14
|
* To help remember, the success case is "right"; it's the result you want.
|
|
15
15
|
*
|
|
16
|
-
* @
|
|
17
|
-
*
|
|
16
|
+
* @example
|
|
17
|
+
* ```ts
|
|
18
|
+
* // packages/util-ts/examples/either.ts
|
|
19
|
+
* import { equal } from "node:assert/strict";
|
|
20
|
+
*
|
|
21
|
+
* import { either as E, pipe } from "@clipboard-health/util-ts";
|
|
22
|
+
*
|
|
23
|
+
* function double(n: number): number {
|
|
24
|
+
* return n * 2;
|
|
25
|
+
* }
|
|
26
|
+
*
|
|
27
|
+
* function inverse(n: number): E.Either<string, number> {
|
|
28
|
+
* return n === 0 ? E.left("Division by zero") : E.right(1 / n);
|
|
29
|
+
* }
|
|
30
|
+
*
|
|
31
|
+
* const result = pipe(
|
|
32
|
+
* E.right(5),
|
|
33
|
+
* E.map(double),
|
|
34
|
+
* E.flatMap(inverse),
|
|
35
|
+
* E.match(
|
|
36
|
+
* (error) => `Error: ${error}`,
|
|
37
|
+
* (result) => `Result is ${result}`,
|
|
38
|
+
* ),
|
|
39
|
+
* );
|
|
40
|
+
*
|
|
41
|
+
* equal(result, "Result is 0.1");
|
|
42
|
+
*
|
|
43
|
+
* ```
|
|
18
44
|
*/
|
|
19
45
|
export type Either<E, A> = Left<E> | Right<A>;
|
|
20
46
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"either.js","sourceRoot":"","sources":["../../../../../../packages/util-ts/src/lib/functional/either.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"either.js","sourceRoot":"","sources":["../../../../../../packages/util-ts/src/lib/functional/either.ts"],"names":[],"mappings":";;AAsDA,oBAEC;AAQD,sBAEC;AAQD,wBAEC;AAQD,0BAEC;AAUD,kBAEC;AAOD,0BAEC;AASD,0BAIC;AASD,8BAEC;AASD,sBAKC;AAjGD;;;;;GAKG;AACH,SAAgB,IAAI,CAAe,IAAO;IACxC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;AAClC,CAAC;AAED;;;;;GAKG;AACH,SAAgB,KAAK,CAAe,KAAQ;IAC1C,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;AAClC,CAAC;AAED;;;;;GAKG;AACH,SAAgB,MAAM,CAAO,MAAoB;IAC/C,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC;AACzB,CAAC;AAED;;;;;GAKG;AACH,SAAgB,OAAO,CAAO,MAAoB;IAChD,OAAO,MAAM,CAAC,OAAO,CAAC;AACxB,CAAC;AAED;;;;;;;GAOG;AACH,SAAgB,GAAG,CAAO,CAAkB;IAC1C,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;AACzE,CAAC;AAED;;;;GAIG;AACH,SAAgB,OAAO,CAAO,CAAiB;IAC7C,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;AACtE,CAAC;AAED;;;;;;GAMG;AACH,SAAgB,OAAO,CACrB,CAA6B;IAE7B,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;AAClE,CAAC;AAED;;;;;;GAMG;AACH,SAAgB,SAAS,CAAO,MAAsB;IACpD,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;AAC5E,CAAC;AAED;;;;;;GAMG;AACH,SAAgB,KAAK,CACnB,MAAsB,EACtB,OAAwB;IAExB,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;AACrF,CAAC"}
|
|
@@ -8,8 +8,34 @@ export type Some<A> = Readonly<{
|
|
|
8
8
|
/**
|
|
9
9
|
* An optional value. If the value exists, it's of type `Some<A>`, otherwise it's of type `None`.
|
|
10
10
|
*
|
|
11
|
-
* @
|
|
12
|
-
*
|
|
11
|
+
* @example
|
|
12
|
+
* ```ts
|
|
13
|
+
* // packages/util-ts/examples/option.ts
|
|
14
|
+
* import { equal } from "node:assert/strict";
|
|
15
|
+
*
|
|
16
|
+
* import { option as O, pipe } from "@clipboard-health/util-ts";
|
|
17
|
+
*
|
|
18
|
+
* function double(n: number) {
|
|
19
|
+
* return n * 2;
|
|
20
|
+
* }
|
|
21
|
+
*
|
|
22
|
+
* function inverse(n: number): O.Option<number> {
|
|
23
|
+
* return n === 0 ? O.none : O.some(1 / n);
|
|
24
|
+
* }
|
|
25
|
+
*
|
|
26
|
+
* const result = pipe(
|
|
27
|
+
* O.some(5),
|
|
28
|
+
* O.map(double),
|
|
29
|
+
* O.flatMap(inverse),
|
|
30
|
+
* O.match(
|
|
31
|
+
* () => "No result",
|
|
32
|
+
* (n) => `Result is ${n}`,
|
|
33
|
+
* ),
|
|
34
|
+
* );
|
|
35
|
+
*
|
|
36
|
+
* equal(result, "Result is 0.1");
|
|
37
|
+
*
|
|
38
|
+
* ```
|
|
13
39
|
*/
|
|
14
40
|
export type Option<A> = None | Some<A>;
|
|
15
41
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"option.js","sourceRoot":"","sources":["../../../../../../packages/util-ts/src/lib/functional/option.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"option.js","sourceRoot":"","sources":["../../../../../../packages/util-ts/src/lib/functional/option.ts"],"names":[],"mappings":";;;AAwDA,oBAEC;AAQD,wBAEC;AAQD,wBAEC;AASD,kBAEC;AASD,0BAEC;AASD,8BAEC;AASD,sBAKC;AAUD,oCAEC;AAzID,wCAAmC;AA6CnC;;GAEG;AACU,QAAA,IAAI,GAAS,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;AAE5C;;;;;GAKG;AACH,SAAgB,IAAI,CAAI,KAAQ;IAC9B,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;AACjC,CAAC;AAED;;;;;GAKG;AACH,SAAgB,MAAM,CAAI,MAAiB;IACzC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC;AACxB,CAAC;AAED;;;;;GAKG;AACH,SAAgB,MAAM,CAAI,MAAiB;IACzC,OAAO,MAAM,CAAC,MAAM,CAAC;AACvB,CAAC;AAED;;;;;;GAMG;AACH,SAAgB,GAAG,CAAO,CAAc;IACtC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,YAAI,CAAC,CAAC;AACrE,CAAC;AAED;;;;;;GAMG;AACH,SAAgB,OAAO,CAAO,CAAsB;IAClD,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,YAAI,CAAC,CAAC;AAC/D,CAAC;AAED;;;;;;GAMG;AACH,SAAgB,SAAS,CAAI,YAAe;IAC1C,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC;AACpE,CAAC;AAED;;;;;;GAMG;AACH,SAAgB,KAAK,CACnB,MAAe,EACf,MAAuB;IAEvB,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;AACxE,CAAC;AAED;;;;;;GAMG;AACH,wDAAwD;AACxD,SAAgB,YAAY,CAAI,KAA2B;IACzD,OAAO,IAAA,eAAK,EAAC,KAAK,CAAC,CAAC,CAAC,CAAC,YAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC3C,CAAC"}
|
|
@@ -2,12 +2,27 @@
|
|
|
2
2
|
* Pipes a value through a series of functions from left to right. Currently supports up to 10
|
|
3
3
|
* functions.
|
|
4
4
|
*
|
|
5
|
-
* @includeExample ./packages/util-ts/examples/pipe.ts
|
|
6
|
-
* @see [Usage example](../../util-ts/examples/pipe.ts)
|
|
7
|
-
*
|
|
8
5
|
* @param a - The initial value to transform
|
|
9
6
|
* @param fs - Functions to apply sequentially
|
|
10
7
|
* @returns The final transformed value
|
|
8
|
+
* @example
|
|
9
|
+
* ```ts
|
|
10
|
+
* // packages/util-ts/examples/pipe.ts
|
|
11
|
+
* import { equal } from "node:assert/strict";
|
|
12
|
+
*
|
|
13
|
+
* import { pipe } from "@clipboard-health/util-ts";
|
|
14
|
+
*
|
|
15
|
+
* const result = pipe(
|
|
16
|
+
* " hello world ",
|
|
17
|
+
* (s) => s.trim(),
|
|
18
|
+
* (s) => s.split(" "),
|
|
19
|
+
* (array) => array.map((word) => word.charAt(0).toUpperCase() + word.slice(1)),
|
|
20
|
+
* (array) => array.join(" "),
|
|
21
|
+
* );
|
|
22
|
+
*
|
|
23
|
+
* equal(result, "Hello World");
|
|
24
|
+
*
|
|
25
|
+
* ```
|
|
11
26
|
*/
|
|
12
27
|
export declare function pipe<A>(a: A): A;
|
|
13
28
|
export declare function pipe<A, B>(a: A, ab: (a: A) => B): B;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pipe.js","sourceRoot":"","sources":["../../../../../../packages/util-ts/src/lib/functional/pipe.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"pipe.js","sourceRoot":"","sources":["../../../../../../packages/util-ts/src/lib/functional/pipe.ts"],"names":[],"mappings":";;AAuFA,oBAEC;AAFD,SAAgB,IAAI,CAAC,CAAU,EAAE,GAAG,EAAkC;IACpE,OAAO,EAAE,CAAC,MAAM,CAAC,CAAC,WAAW,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,CAAC;AAC1D,CAAC"}
|