@konker.dev/neverthrow-r 0.0.1
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 +15 -0
- package/README.md +142 -0
- package/dist/async.d.ts +179 -0
- package/dist/async.d.ts.map +1 -0
- package/dist/async.js +178 -0
- package/dist/async.js.map +1 -0
- package/dist/bridges.d.ts +132 -0
- package/dist/bridges.d.ts.map +1 -0
- package/dist/bridges.js +131 -0
- package/dist/bridges.js.map +1 -0
- package/dist/constructors.d.ts +214 -0
- package/dist/constructors.d.ts.map +1 -0
- package/dist/constructors.js +213 -0
- package/dist/constructors.js.map +1 -0
- package/dist/do.d.ts +137 -0
- package/dist/do.d.ts.map +1 -0
- package/dist/do.js +137 -0
- package/dist/do.js.map +1 -0
- package/dist/index.d.ts +41 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +40 -0
- package/dist/index.js.map +1 -0
- package/dist/pipe.d.ts +84 -0
- package/dist/pipe.d.ts.map +1 -0
- package/dist/pipe.js +31 -0
- package/dist/pipe.js.map +1 -0
- package/dist/provide.d.ts +115 -0
- package/dist/provide.d.ts.map +1 -0
- package/dist/provide.js +35 -0
- package/dist/provide.js.map +1 -0
- package/dist/sync.d.ts +317 -0
- package/dist/sync.d.ts.map +1 -0
- package/dist/sync.js +316 -0
- package/dist/sync.js.map +1 -0
- package/dist/types.d.ts +171 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +44 -0
- package/dist/types.js.map +1 -0
- package/package.json +117 -0
package/dist/do.d.ts
ADDED
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Do-notation for `ResultR` / `ResultAsyncR`: chain steps that each bind a
|
|
3
|
+
* value into a named scope, with the scope record carried through the chain
|
|
4
|
+
* as the success type.
|
|
5
|
+
*
|
|
6
|
+
* @remarks
|
|
7
|
+
* Two pairs of helpers:
|
|
8
|
+
*
|
|
9
|
+
* - {@link doR} / {@link doAsyncR} — seed a chain with an empty scope `{}`.
|
|
10
|
+
* - {@link bindR} / {@link bindAsyncR} — add a named field by running a step
|
|
11
|
+
* that depends on the current scope, then attaching its result under a key.
|
|
12
|
+
*
|
|
13
|
+
* Use this in place of nested {@link andThen} when several intermediate
|
|
14
|
+
* values are needed downstream. Requirements `R` intersect across steps; the
|
|
15
|
+
* error channel unions; the success record grows with each `bind*`.
|
|
16
|
+
*
|
|
17
|
+
* @example
|
|
18
|
+
* ```ts
|
|
19
|
+
* import { asks, okR } from '@konker.dev/neverthrow-r/constructors';
|
|
20
|
+
* import { bindR, doR } from '@konker.dev/neverthrow-r/do';
|
|
21
|
+
* import { map } from '@konker.dev/neverthrow-r/sync';
|
|
22
|
+
* import { pipe } from '@konker.dev/neverthrow-r/pipe';
|
|
23
|
+
*
|
|
24
|
+
* type Config = { greeting: string };
|
|
25
|
+
*
|
|
26
|
+
* const program = pipe(
|
|
27
|
+
* doR(),
|
|
28
|
+
* bindR('name', () => okR<string>('world')),
|
|
29
|
+
* bindR('greeting', () => asks((r: Config) => r.greeting)),
|
|
30
|
+
* map(({ greeting, name }) => `${greeting}, ${name}!`),
|
|
31
|
+
* );
|
|
32
|
+
*
|
|
33
|
+
* program({ greeting: 'hello' }); // Ok('hello, world!')
|
|
34
|
+
* ```
|
|
35
|
+
*
|
|
36
|
+
* @module
|
|
37
|
+
*/
|
|
38
|
+
import type { ExtendedScope, ResultAsyncR, ResultR } from './types.js';
|
|
39
|
+
/**
|
|
40
|
+
* Seeds a do-chain with an empty scope record `{}` over a `ResultR`.
|
|
41
|
+
*
|
|
42
|
+
* @remarks
|
|
43
|
+
* Pass an explicit type argument when you want to fix the chain's
|
|
44
|
+
* requirements up front; otherwise leave it as `unknown` and let downstream
|
|
45
|
+
* {@link bindR} calls accumulate requirements via intersection.
|
|
46
|
+
*
|
|
47
|
+
* @typeParam R - The chain's requirements (defaults to `unknown`).
|
|
48
|
+
*
|
|
49
|
+
* @example
|
|
50
|
+
* ```ts
|
|
51
|
+
* import { doR } from '@konker.dev/neverthrow-r/do';
|
|
52
|
+
*
|
|
53
|
+
* const start = doR();
|
|
54
|
+
* start(undefined); // Ok({})
|
|
55
|
+
* ```
|
|
56
|
+
*
|
|
57
|
+
* @see {@link doAsyncR}
|
|
58
|
+
* @see {@link bindR}
|
|
59
|
+
*/
|
|
60
|
+
export declare const doR: <R = unknown>() => ResultR<R, Record<never, never>, never>;
|
|
61
|
+
/**
|
|
62
|
+
* Async sibling of {@link doR}: seeds a do-chain with an empty scope over a
|
|
63
|
+
* `ResultAsyncR`.
|
|
64
|
+
*
|
|
65
|
+
* @example
|
|
66
|
+
* ```ts
|
|
67
|
+
* import { doAsyncR } from '@konker.dev/neverthrow-r/do';
|
|
68
|
+
*
|
|
69
|
+
* const start = doAsyncR();
|
|
70
|
+
* start(undefined); // ResultAsync resolving to Ok({})
|
|
71
|
+
* ```
|
|
72
|
+
*
|
|
73
|
+
* @see {@link doR}
|
|
74
|
+
*/
|
|
75
|
+
export declare const doAsyncR: <R = unknown>() => ResultAsyncR<R, Record<never, never>, never>;
|
|
76
|
+
/**
|
|
77
|
+
* Adds a named field to a do-chain's scope.
|
|
78
|
+
*
|
|
79
|
+
* @remarks
|
|
80
|
+
* `bindR('name', f)` runs `f(scope)` and, on success, attaches its value at
|
|
81
|
+
* key `name` in the scope record. The step's requirements `R2` are
|
|
82
|
+
* intersected (`R1 & R2`) and its error type `E2` is unioned (`E1 | E2`).
|
|
83
|
+
*
|
|
84
|
+
* The callback receives the *current* scope, so later binds can depend on
|
|
85
|
+
* earlier ones — a key ergonomic win over a flat sequence of {@link andThen}.
|
|
86
|
+
*
|
|
87
|
+
* @typeParam N - The string-literal name of the field being added.
|
|
88
|
+
* @typeParam S - The current scope record.
|
|
89
|
+
* @typeParam R2 - The step's requirements.
|
|
90
|
+
* @typeParam A - The value being bound.
|
|
91
|
+
* @typeParam E2 - The step's error type.
|
|
92
|
+
*
|
|
93
|
+
* @param name - The field name to bind under.
|
|
94
|
+
* @param f - Function from current scope to the next step's `ResultR`.
|
|
95
|
+
*
|
|
96
|
+
* @example
|
|
97
|
+
* ```ts
|
|
98
|
+
* import { okR } from '@konker.dev/neverthrow-r/constructors';
|
|
99
|
+
* import { bindR, doR } from '@konker.dev/neverthrow-r/do';
|
|
100
|
+
* import { pipe } from '@konker.dev/neverthrow-r/pipe';
|
|
101
|
+
*
|
|
102
|
+
* const program = pipe(
|
|
103
|
+
* doR(),
|
|
104
|
+
* bindR('a', () => okR<number>(2)),
|
|
105
|
+
* bindR('b', ({ a }) => okR<number>(a * 10)),
|
|
106
|
+
* );
|
|
107
|
+
*
|
|
108
|
+
* program(undefined); // Ok({ a: 2, b: 20 })
|
|
109
|
+
* ```
|
|
110
|
+
*
|
|
111
|
+
* @see {@link bindAsyncR}
|
|
112
|
+
* @see {@link ExtendedScope}
|
|
113
|
+
*/
|
|
114
|
+
export declare const bindR: <N extends string, S extends object, R2, A, E2>(name: N, f: (s: S) => ResultR<R2, A, E2>) => <R1, E1>(rr: ResultR<R1, S, E1>) => ResultR<R1 & R2, ExtendedScope<S, N, A>, E1 | E2>;
|
|
115
|
+
/**
|
|
116
|
+
* Async sibling of {@link bindR}: adds a named field to an async do-chain's
|
|
117
|
+
* scope.
|
|
118
|
+
*
|
|
119
|
+
* @example
|
|
120
|
+
* ```ts
|
|
121
|
+
* import { okAsyncR } from '@konker.dev/neverthrow-r/constructors';
|
|
122
|
+
* import { bindAsyncR, doAsyncR } from '@konker.dev/neverthrow-r/do';
|
|
123
|
+
* import { pipe } from '@konker.dev/neverthrow-r/pipe';
|
|
124
|
+
*
|
|
125
|
+
* const program = pipe(
|
|
126
|
+
* doAsyncR(),
|
|
127
|
+
* bindAsyncR('a', () => okAsyncR<number>(2)),
|
|
128
|
+
* bindAsyncR('b', ({ a }) => okAsyncR<number>(a * 10)),
|
|
129
|
+
* );
|
|
130
|
+
*
|
|
131
|
+
* program(undefined); // ResultAsync resolving to Ok({ a: 2, b: 20 })
|
|
132
|
+
* ```
|
|
133
|
+
*
|
|
134
|
+
* @see {@link bindR}
|
|
135
|
+
*/
|
|
136
|
+
export declare const bindAsyncR: <N extends string, S extends object, R2, A, E2>(name: N, f: (s: S) => ResultAsyncR<R2, A, E2>) => <R1, E1>(rr: ResultAsyncR<R1, S, E1>) => ResultAsyncR<R1 & R2, ExtendedScope<S, N, A>, E1 | E2>;
|
|
137
|
+
//# sourceMappingURL=do.d.ts.map
|
package/dist/do.d.ts.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"do.d.ts","sourceRoot":"","sources":["../src/do.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AAIH,OAAO,KAAK,EAAE,aAAa,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAEvE;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,eAAO,MAAM,GAAG,GACb,CAAC,GAAG,OAAO,OAAK,OAAO,CAAC,CAAC,EAAE,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,EAAE,KAAK,CAE/C,CAAC;AAEX;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,QAAQ,GAClB,CAAC,GAAG,OAAO,OAAK,YAAY,CAAC,CAAC,EAAE,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,EAAE,KAAK,CAE/C,CAAC;AAEhB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AACH,eAAO,MAAM,KAAK,GACf,CAAC,SAAS,MAAM,EAAE,CAAC,SAAS,MAAM,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,KAAK,OAAO,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,MACvF,EAAE,EAAE,EAAE,EAAE,IAAI,OAAO,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,KAAG,OAAO,CAAC,EAAE,GAAG,EAAE,EAAE,aAAa,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,GAAG,EAAE,CAES,CAAC;AAE9F;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,eAAO,MAAM,UAAU,GACpB,CAAC,SAAS,MAAM,EAAE,CAAC,SAAS,MAAM,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,KAAK,YAAY,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,MAC5F,EAAE,EAAE,EAAE,EAAE,IAAI,YAAY,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,KAAG,YAAY,CAAC,EAAE,GAAG,EAAE,EAAE,aAAa,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,GAAG,EAAE,CAED,CAAC"}
|
package/dist/do.js
ADDED
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Do-notation for `ResultR` / `ResultAsyncR`: chain steps that each bind a
|
|
3
|
+
* value into a named scope, with the scope record carried through the chain
|
|
4
|
+
* as the success type.
|
|
5
|
+
*
|
|
6
|
+
* @remarks
|
|
7
|
+
* Two pairs of helpers:
|
|
8
|
+
*
|
|
9
|
+
* - {@link doR} / {@link doAsyncR} — seed a chain with an empty scope `{}`.
|
|
10
|
+
* - {@link bindR} / {@link bindAsyncR} — add a named field by running a step
|
|
11
|
+
* that depends on the current scope, then attaching its result under a key.
|
|
12
|
+
*
|
|
13
|
+
* Use this in place of nested {@link andThen} when several intermediate
|
|
14
|
+
* values are needed downstream. Requirements `R` intersect across steps; the
|
|
15
|
+
* error channel unions; the success record grows with each `bind*`.
|
|
16
|
+
*
|
|
17
|
+
* @example
|
|
18
|
+
* ```ts
|
|
19
|
+
* import { asks, okR } from '@konker.dev/neverthrow-r/constructors';
|
|
20
|
+
* import { bindR, doR } from '@konker.dev/neverthrow-r/do';
|
|
21
|
+
* import { map } from '@konker.dev/neverthrow-r/sync';
|
|
22
|
+
* import { pipe } from '@konker.dev/neverthrow-r/pipe';
|
|
23
|
+
*
|
|
24
|
+
* type Config = { greeting: string };
|
|
25
|
+
*
|
|
26
|
+
* const program = pipe(
|
|
27
|
+
* doR(),
|
|
28
|
+
* bindR('name', () => okR<string>('world')),
|
|
29
|
+
* bindR('greeting', () => asks((r: Config) => r.greeting)),
|
|
30
|
+
* map(({ greeting, name }) => `${greeting}, ${name}!`),
|
|
31
|
+
* );
|
|
32
|
+
*
|
|
33
|
+
* program({ greeting: 'hello' }); // Ok('hello, world!')
|
|
34
|
+
* ```
|
|
35
|
+
*
|
|
36
|
+
* @module
|
|
37
|
+
*/
|
|
38
|
+
import { ok, okAsync } from 'neverthrow';
|
|
39
|
+
/**
|
|
40
|
+
* Seeds a do-chain with an empty scope record `{}` over a `ResultR`.
|
|
41
|
+
*
|
|
42
|
+
* @remarks
|
|
43
|
+
* Pass an explicit type argument when you want to fix the chain's
|
|
44
|
+
* requirements up front; otherwise leave it as `unknown` and let downstream
|
|
45
|
+
* {@link bindR} calls accumulate requirements via intersection.
|
|
46
|
+
*
|
|
47
|
+
* @typeParam R - The chain's requirements (defaults to `unknown`).
|
|
48
|
+
*
|
|
49
|
+
* @example
|
|
50
|
+
* ```ts
|
|
51
|
+
* import { doR } from '@konker.dev/neverthrow-r/do';
|
|
52
|
+
*
|
|
53
|
+
* const start = doR();
|
|
54
|
+
* start(undefined); // Ok({})
|
|
55
|
+
* ```
|
|
56
|
+
*
|
|
57
|
+
* @see {@link doAsyncR}
|
|
58
|
+
* @see {@link bindR}
|
|
59
|
+
*/
|
|
60
|
+
export const doR = () => () => ok({});
|
|
61
|
+
/**
|
|
62
|
+
* Async sibling of {@link doR}: seeds a do-chain with an empty scope over a
|
|
63
|
+
* `ResultAsyncR`.
|
|
64
|
+
*
|
|
65
|
+
* @example
|
|
66
|
+
* ```ts
|
|
67
|
+
* import { doAsyncR } from '@konker.dev/neverthrow-r/do';
|
|
68
|
+
*
|
|
69
|
+
* const start = doAsyncR();
|
|
70
|
+
* start(undefined); // ResultAsync resolving to Ok({})
|
|
71
|
+
* ```
|
|
72
|
+
*
|
|
73
|
+
* @see {@link doR}
|
|
74
|
+
*/
|
|
75
|
+
export const doAsyncR = () => () => okAsync({});
|
|
76
|
+
/**
|
|
77
|
+
* Adds a named field to a do-chain's scope.
|
|
78
|
+
*
|
|
79
|
+
* @remarks
|
|
80
|
+
* `bindR('name', f)` runs `f(scope)` and, on success, attaches its value at
|
|
81
|
+
* key `name` in the scope record. The step's requirements `R2` are
|
|
82
|
+
* intersected (`R1 & R2`) and its error type `E2` is unioned (`E1 | E2`).
|
|
83
|
+
*
|
|
84
|
+
* The callback receives the *current* scope, so later binds can depend on
|
|
85
|
+
* earlier ones — a key ergonomic win over a flat sequence of {@link andThen}.
|
|
86
|
+
*
|
|
87
|
+
* @typeParam N - The string-literal name of the field being added.
|
|
88
|
+
* @typeParam S - The current scope record.
|
|
89
|
+
* @typeParam R2 - The step's requirements.
|
|
90
|
+
* @typeParam A - The value being bound.
|
|
91
|
+
* @typeParam E2 - The step's error type.
|
|
92
|
+
*
|
|
93
|
+
* @param name - The field name to bind under.
|
|
94
|
+
* @param f - Function from current scope to the next step's `ResultR`.
|
|
95
|
+
*
|
|
96
|
+
* @example
|
|
97
|
+
* ```ts
|
|
98
|
+
* import { okR } from '@konker.dev/neverthrow-r/constructors';
|
|
99
|
+
* import { bindR, doR } from '@konker.dev/neverthrow-r/do';
|
|
100
|
+
* import { pipe } from '@konker.dev/neverthrow-r/pipe';
|
|
101
|
+
*
|
|
102
|
+
* const program = pipe(
|
|
103
|
+
* doR(),
|
|
104
|
+
* bindR('a', () => okR<number>(2)),
|
|
105
|
+
* bindR('b', ({ a }) => okR<number>(a * 10)),
|
|
106
|
+
* );
|
|
107
|
+
*
|
|
108
|
+
* program(undefined); // Ok({ a: 2, b: 20 })
|
|
109
|
+
* ```
|
|
110
|
+
*
|
|
111
|
+
* @see {@link bindAsyncR}
|
|
112
|
+
* @see {@link ExtendedScope}
|
|
113
|
+
*/
|
|
114
|
+
export const bindR = (name, f) => (rr) => (r) => rr(r).andThen((s) => f(s)(r).map((a) => ({ ...s, [name]: a })));
|
|
115
|
+
/**
|
|
116
|
+
* Async sibling of {@link bindR}: adds a named field to an async do-chain's
|
|
117
|
+
* scope.
|
|
118
|
+
*
|
|
119
|
+
* @example
|
|
120
|
+
* ```ts
|
|
121
|
+
* import { okAsyncR } from '@konker.dev/neverthrow-r/constructors';
|
|
122
|
+
* import { bindAsyncR, doAsyncR } from '@konker.dev/neverthrow-r/do';
|
|
123
|
+
* import { pipe } from '@konker.dev/neverthrow-r/pipe';
|
|
124
|
+
*
|
|
125
|
+
* const program = pipe(
|
|
126
|
+
* doAsyncR(),
|
|
127
|
+
* bindAsyncR('a', () => okAsyncR<number>(2)),
|
|
128
|
+
* bindAsyncR('b', ({ a }) => okAsyncR<number>(a * 10)),
|
|
129
|
+
* );
|
|
130
|
+
*
|
|
131
|
+
* program(undefined); // ResultAsync resolving to Ok({ a: 2, b: 20 })
|
|
132
|
+
* ```
|
|
133
|
+
*
|
|
134
|
+
* @see {@link bindR}
|
|
135
|
+
*/
|
|
136
|
+
export const bindAsyncR = (name, f) => (rr) => (r) => rr(r).andThen((s) => f(s)(r).map((a) => ({ ...s, [name]: a })));
|
|
137
|
+
//# sourceMappingURL=do.js.map
|
package/dist/do.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"do.js","sourceRoot":"","sources":["../src/do.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AAEH,OAAO,EAAE,EAAE,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAIzC;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,CAAC,MAAM,GAAG,GACd,GAAyD,EAAE,CAC3D,GAAG,EAAE,CACH,EAAE,CAAC,EAAE,CAAC,CAAC;AAEX;;;;;;;;;;;;;GAaG;AACH,MAAM,CAAC,MAAM,QAAQ,GACnB,GAA8D,EAAE,CAChE,GAAG,EAAE,CACH,OAAO,CAAC,EAAE,CAAC,CAAC;AAEhB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AACH,MAAM,CAAC,MAAM,KAAK,GAChB,CAAgD,IAAO,EAAE,CAA+B,EAAE,EAAE,CAC5F,CAAS,EAAsB,EAAqD,EAAE,CACtF,CAAC,CAAC,EAAE,EAAE,CACJ,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAA2B,CAAC,CAAC,CAAC;AAE9F;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,CAAC,MAAM,UAAU,GACrB,CAAgD,IAAO,EAAE,CAAoC,EAAE,EAAE,CACjG,CAAS,EAA2B,EAA0D,EAAE,CAChG,CAAC,CAAC,EAAE,EAAE,CACJ,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAA2B,CAAC,CAAC,CAAC"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Public barrel for `@konker.dev/neverthrow-r` — a thin Reader-function layer
|
|
3
|
+
* over `neverthrow` that adds a third *requirements* channel `R` alongside
|
|
4
|
+
* the usual `T` / `E` of `Result`.
|
|
5
|
+
*
|
|
6
|
+
* @remarks
|
|
7
|
+
* Re-exports every public type, constructor, operator, bridge, do-notation
|
|
8
|
+
* helper, provision function, and `pipe`. For a guided tour and "pick your
|
|
9
|
+
* module" table, see the package landing page; for the conceptual model of
|
|
10
|
+
* the `R` channel, see {@link types}.
|
|
11
|
+
*
|
|
12
|
+
* @example
|
|
13
|
+
* ```ts
|
|
14
|
+
* import {
|
|
15
|
+
* andThen,
|
|
16
|
+
* map,
|
|
17
|
+
* okR,
|
|
18
|
+
* pipe,
|
|
19
|
+
* provide,
|
|
20
|
+
* } from '@konker.dev/neverthrow-r';
|
|
21
|
+
*
|
|
22
|
+
* const program = pipe(
|
|
23
|
+
* okR<number>(2),
|
|
24
|
+
* map((n) => n + 1),
|
|
25
|
+
* andThen((n) => okR<string>(`got ${n}`)),
|
|
26
|
+
* );
|
|
27
|
+
*
|
|
28
|
+
* provide(program, undefined); // Ok('got 3')
|
|
29
|
+
* ```
|
|
30
|
+
*
|
|
31
|
+
* @module
|
|
32
|
+
*/
|
|
33
|
+
export type { ExtendedScope, ResultAsyncR, ResultR, Scope, Simplify } from './types.js';
|
|
34
|
+
export { ask, asks, errAsyncR, errR, fromResult, fromResultAsync, okAsyncR, okR } from './constructors.js';
|
|
35
|
+
export { andTee, andThen, andThrough, map, mapErr, match, orElse, orTee } from './sync.js';
|
|
36
|
+
export { andTeeAsync, andThenAsync, andThroughAsync, mapAsync, mapErrAsync, matchAsync, orElseAsync, orTeeAsync, } from './async.js';
|
|
37
|
+
export { asyncAndThen, asyncAndThrough, asyncMap } from './bridges.js';
|
|
38
|
+
export { provide, provideSome } from './provide.js';
|
|
39
|
+
export { bindAsyncR, bindR, doAsyncR, doR } from './do.js';
|
|
40
|
+
export { pipe } from './pipe.js';
|
|
41
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AAEH,YAAY,EAAE,aAAa,EAAE,YAAY,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAExF,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,UAAU,EAAE,eAAe,EAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,mBAAmB,CAAC;AAE3G,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,WAAW,CAAC;AAE3F,OAAO,EACL,WAAW,EACX,YAAY,EACZ,eAAe,EACf,QAAQ,EACR,WAAW,EACX,UAAU,EACV,WAAW,EACX,UAAU,GACX,MAAM,YAAY,CAAC;AAEpB,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAEvE,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAEpD,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,SAAS,CAAC;AAE3D,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Public barrel for `@konker.dev/neverthrow-r` — a thin Reader-function layer
|
|
3
|
+
* over `neverthrow` that adds a third *requirements* channel `R` alongside
|
|
4
|
+
* the usual `T` / `E` of `Result`.
|
|
5
|
+
*
|
|
6
|
+
* @remarks
|
|
7
|
+
* Re-exports every public type, constructor, operator, bridge, do-notation
|
|
8
|
+
* helper, provision function, and `pipe`. For a guided tour and "pick your
|
|
9
|
+
* module" table, see the package landing page; for the conceptual model of
|
|
10
|
+
* the `R` channel, see {@link types}.
|
|
11
|
+
*
|
|
12
|
+
* @example
|
|
13
|
+
* ```ts
|
|
14
|
+
* import {
|
|
15
|
+
* andThen,
|
|
16
|
+
* map,
|
|
17
|
+
* okR,
|
|
18
|
+
* pipe,
|
|
19
|
+
* provide,
|
|
20
|
+
* } from '@konker.dev/neverthrow-r';
|
|
21
|
+
*
|
|
22
|
+
* const program = pipe(
|
|
23
|
+
* okR<number>(2),
|
|
24
|
+
* map((n) => n + 1),
|
|
25
|
+
* andThen((n) => okR<string>(`got ${n}`)),
|
|
26
|
+
* );
|
|
27
|
+
*
|
|
28
|
+
* provide(program, undefined); // Ok('got 3')
|
|
29
|
+
* ```
|
|
30
|
+
*
|
|
31
|
+
* @module
|
|
32
|
+
*/
|
|
33
|
+
export { ask, asks, errAsyncR, errR, fromResult, fromResultAsync, okAsyncR, okR } from './constructors.js';
|
|
34
|
+
export { andTee, andThen, andThrough, map, mapErr, match, orElse, orTee } from './sync.js';
|
|
35
|
+
export { andTeeAsync, andThenAsync, andThroughAsync, mapAsync, mapErrAsync, matchAsync, orElseAsync, orTeeAsync, } from './async.js';
|
|
36
|
+
export { asyncAndThen, asyncAndThrough, asyncMap } from './bridges.js';
|
|
37
|
+
export { provide, provideSome } from './provide.js';
|
|
38
|
+
export { bindAsyncR, bindR, doAsyncR, doR } from './do.js';
|
|
39
|
+
export { pipe } from './pipe.js';
|
|
40
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AAIH,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,UAAU,EAAE,eAAe,EAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,mBAAmB,CAAC;AAE3G,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,WAAW,CAAC;AAE3F,OAAO,EACL,WAAW,EACX,YAAY,EACZ,eAAe,EACf,QAAQ,EACR,WAAW,EACX,UAAU,EACV,WAAW,EACX,UAAU,GACX,MAAM,YAAY,CAAC;AAEpB,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAEvE,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAEpD,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,SAAS,CAAC;AAE3D,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC"}
|
package/dist/pipe.d.ts
ADDED
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Left-to-right function composition. Bundled so `neverthrow-r` doesn't drag
|
|
3
|
+
* in a heavier fp library purely for `pipe`; signature is shape-compatible
|
|
4
|
+
* with the `pipe` used by `effect`, `fp-ts`, `remeda`, and similar.
|
|
5
|
+
*
|
|
6
|
+
* @remarks
|
|
7
|
+
* Every combinator in this package is curried so the operand `ResultR`
|
|
8
|
+
* arrives last, making `pipe` the natural composition tool: feed the seed
|
|
9
|
+
* value first, then list the operators in order.
|
|
10
|
+
*
|
|
11
|
+
* @example
|
|
12
|
+
* ```ts
|
|
13
|
+
* import { okR } from '@konker.dev/neverthrow-r/constructors';
|
|
14
|
+
* import { andThen, map } from '@konker.dev/neverthrow-r/sync';
|
|
15
|
+
* import { pipe } from '@konker.dev/neverthrow-r/pipe';
|
|
16
|
+
*
|
|
17
|
+
* const program = pipe(
|
|
18
|
+
* okR<number>(2),
|
|
19
|
+
* map((n) => n + 1),
|
|
20
|
+
* andThen((n) => okR<string>(`got ${n}`)),
|
|
21
|
+
* );
|
|
22
|
+
*
|
|
23
|
+
* program(undefined); // Ok('got 3')
|
|
24
|
+
* ```
|
|
25
|
+
*
|
|
26
|
+
* @module
|
|
27
|
+
*/
|
|
28
|
+
type UnaryFn<A, B> = (value: A) => B;
|
|
29
|
+
/**
|
|
30
|
+
* Applies a chain of unary functions left-to-right to an initial value, with
|
|
31
|
+
* each function's output type inferred and propagated to the next.
|
|
32
|
+
*
|
|
33
|
+
* @remarks
|
|
34
|
+
* Overloads are provided for chains of 0 up to 20 functions. Past 20 arities,
|
|
35
|
+
* group functions with an intermediate `pipe(...)` call or extract a
|
|
36
|
+
* sub-chain into a named function.
|
|
37
|
+
*
|
|
38
|
+
* Every {@link sync}, {@link async}, {@link bridges}, and {@link do}
|
|
39
|
+
* combinator returns a unary function shaped for `pipe`, so the typical
|
|
40
|
+
* pattern is `pipe(seed, op1, op2, …)`.
|
|
41
|
+
*
|
|
42
|
+
* @typeParam A - The initial value's type. Subsequent overloads add type
|
|
43
|
+
* parameters for each intermediate output.
|
|
44
|
+
*
|
|
45
|
+
* @param value - The initial value.
|
|
46
|
+
* @returns The final value after all functions have been applied. With no
|
|
47
|
+
* functions, the input is returned unchanged.
|
|
48
|
+
*
|
|
49
|
+
* @example
|
|
50
|
+
* ```ts
|
|
51
|
+
* import { pipe } from '@konker.dev/neverthrow-r/pipe';
|
|
52
|
+
*
|
|
53
|
+
* const result = pipe(
|
|
54
|
+
* 2,
|
|
55
|
+
* (n) => n + 1,
|
|
56
|
+
* (n) => n * 10,
|
|
57
|
+
* (n) => `value: ${n}`,
|
|
58
|
+
* );
|
|
59
|
+
* // result is 'value: 30'
|
|
60
|
+
* ```
|
|
61
|
+
*/
|
|
62
|
+
export declare function pipe<A>(value: A): A;
|
|
63
|
+
export declare function pipe<A, B>(value: A, ab: UnaryFn<A, B>): B;
|
|
64
|
+
export declare function pipe<A, B, C>(value: A, ab: UnaryFn<A, B>, bc: UnaryFn<B, C>): C;
|
|
65
|
+
export declare function pipe<A, B, C, D>(value: A, ab: UnaryFn<A, B>, bc: UnaryFn<B, C>, cd: UnaryFn<C, D>): D;
|
|
66
|
+
export declare function pipe<A, B, C, D, E>(value: A, ab: UnaryFn<A, B>, bc: UnaryFn<B, C>, cd: UnaryFn<C, D>, de: UnaryFn<D, E>): E;
|
|
67
|
+
export declare function pipe<A, B, C, D, E, F>(value: A, ab: UnaryFn<A, B>, bc: UnaryFn<B, C>, cd: UnaryFn<C, D>, de: UnaryFn<D, E>, ef: UnaryFn<E, F>): F;
|
|
68
|
+
export declare function pipe<A, B, C, D, E, F, G>(value: A, ab: UnaryFn<A, B>, bc: UnaryFn<B, C>, cd: UnaryFn<C, D>, de: UnaryFn<D, E>, ef: UnaryFn<E, F>, fg: UnaryFn<F, G>): G;
|
|
69
|
+
export declare function pipe<A, B, C, D, E, F, G, H>(value: A, ab: UnaryFn<A, B>, bc: UnaryFn<B, C>, cd: UnaryFn<C, D>, de: UnaryFn<D, E>, ef: UnaryFn<E, F>, fg: UnaryFn<F, G>, gh: UnaryFn<G, H>): H;
|
|
70
|
+
export declare function pipe<A, B, C, D, E, F, G, H, I>(value: A, ab: UnaryFn<A, B>, bc: UnaryFn<B, C>, cd: UnaryFn<C, D>, de: UnaryFn<D, E>, ef: UnaryFn<E, F>, fg: UnaryFn<F, G>, gh: UnaryFn<G, H>, hi: UnaryFn<H, I>): I;
|
|
71
|
+
export declare function pipe<A, B, C, D, E, F, G, H, I, J>(value: A, ab: UnaryFn<A, B>, bc: UnaryFn<B, C>, cd: UnaryFn<C, D>, de: UnaryFn<D, E>, ef: UnaryFn<E, F>, fg: UnaryFn<F, G>, gh: UnaryFn<G, H>, hi: UnaryFn<H, I>, ij: UnaryFn<I, J>): J;
|
|
72
|
+
export declare function pipe<A, B, C, D, E, F, G, H, I, J, K>(value: A, ab: UnaryFn<A, B>, bc: UnaryFn<B, C>, cd: UnaryFn<C, D>, de: UnaryFn<D, E>, ef: UnaryFn<E, F>, fg: UnaryFn<F, G>, gh: UnaryFn<G, H>, hi: UnaryFn<H, I>, ij: UnaryFn<I, J>, jk: UnaryFn<J, K>): K;
|
|
73
|
+
export declare function pipe<A, B, C, D, E, F, G, H, I, J, K, L>(value: A, ab: UnaryFn<A, B>, bc: UnaryFn<B, C>, cd: UnaryFn<C, D>, de: UnaryFn<D, E>, ef: UnaryFn<E, F>, fg: UnaryFn<F, G>, gh: UnaryFn<G, H>, hi: UnaryFn<H, I>, ij: UnaryFn<I, J>, jk: UnaryFn<J, K>, kl: UnaryFn<K, L>): L;
|
|
74
|
+
export declare function pipe<A, B, C, D, E, F, G, H, I, J, K, L, M>(value: A, ab: UnaryFn<A, B>, bc: UnaryFn<B, C>, cd: UnaryFn<C, D>, de: UnaryFn<D, E>, ef: UnaryFn<E, F>, fg: UnaryFn<F, G>, gh: UnaryFn<G, H>, hi: UnaryFn<H, I>, ij: UnaryFn<I, J>, jk: UnaryFn<J, K>, kl: UnaryFn<K, L>, lm: UnaryFn<L, M>): M;
|
|
75
|
+
export declare function pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N>(value: A, ab: UnaryFn<A, B>, bc: UnaryFn<B, C>, cd: UnaryFn<C, D>, de: UnaryFn<D, E>, ef: UnaryFn<E, F>, fg: UnaryFn<F, G>, gh: UnaryFn<G, H>, hi: UnaryFn<H, I>, ij: UnaryFn<I, J>, jk: UnaryFn<J, K>, kl: UnaryFn<K, L>, lm: UnaryFn<L, M>, mn: UnaryFn<M, N>): N;
|
|
76
|
+
export declare function pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O>(value: A, ab: UnaryFn<A, B>, bc: UnaryFn<B, C>, cd: UnaryFn<C, D>, de: UnaryFn<D, E>, ef: UnaryFn<E, F>, fg: UnaryFn<F, G>, gh: UnaryFn<G, H>, hi: UnaryFn<H, I>, ij: UnaryFn<I, J>, jk: UnaryFn<J, K>, kl: UnaryFn<K, L>, lm: UnaryFn<L, M>, mn: UnaryFn<M, N>, no: UnaryFn<N, O>): O;
|
|
77
|
+
export declare function pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P>(value: A, ab: UnaryFn<A, B>, bc: UnaryFn<B, C>, cd: UnaryFn<C, D>, de: UnaryFn<D, E>, ef: UnaryFn<E, F>, fg: UnaryFn<F, G>, gh: UnaryFn<G, H>, hi: UnaryFn<H, I>, ij: UnaryFn<I, J>, jk: UnaryFn<J, K>, kl: UnaryFn<K, L>, lm: UnaryFn<L, M>, mn: UnaryFn<M, N>, no: UnaryFn<N, O>, op: UnaryFn<O, P>): P;
|
|
78
|
+
export declare function pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q>(value: A, ab: UnaryFn<A, B>, bc: UnaryFn<B, C>, cd: UnaryFn<C, D>, de: UnaryFn<D, E>, ef: UnaryFn<E, F>, fg: UnaryFn<F, G>, gh: UnaryFn<G, H>, hi: UnaryFn<H, I>, ij: UnaryFn<I, J>, jk: UnaryFn<J, K>, kl: UnaryFn<K, L>, lm: UnaryFn<L, M>, mn: UnaryFn<M, N>, no: UnaryFn<N, O>, op: UnaryFn<O, P>, pq: UnaryFn<P, Q>): Q;
|
|
79
|
+
export declare function pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R>(value: A, ab: UnaryFn<A, B>, bc: UnaryFn<B, C>, cd: UnaryFn<C, D>, de: UnaryFn<D, E>, ef: UnaryFn<E, F>, fg: UnaryFn<F, G>, gh: UnaryFn<G, H>, hi: UnaryFn<H, I>, ij: UnaryFn<I, J>, jk: UnaryFn<J, K>, kl: UnaryFn<K, L>, lm: UnaryFn<L, M>, mn: UnaryFn<M, N>, no: UnaryFn<N, O>, op: UnaryFn<O, P>, pq: UnaryFn<P, Q>, qr: UnaryFn<Q, R>): R;
|
|
80
|
+
export declare function pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S>(value: A, ab: UnaryFn<A, B>, bc: UnaryFn<B, C>, cd: UnaryFn<C, D>, de: UnaryFn<D, E>, ef: UnaryFn<E, F>, fg: UnaryFn<F, G>, gh: UnaryFn<G, H>, hi: UnaryFn<H, I>, ij: UnaryFn<I, J>, jk: UnaryFn<J, K>, kl: UnaryFn<K, L>, lm: UnaryFn<L, M>, mn: UnaryFn<M, N>, no: UnaryFn<N, O>, op: UnaryFn<O, P>, pq: UnaryFn<P, Q>, qr: UnaryFn<Q, R>, rs: UnaryFn<R, S>): S;
|
|
81
|
+
export declare function pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T>(value: A, ab: UnaryFn<A, B>, bc: UnaryFn<B, C>, cd: UnaryFn<C, D>, de: UnaryFn<D, E>, ef: UnaryFn<E, F>, fg: UnaryFn<F, G>, gh: UnaryFn<G, H>, hi: UnaryFn<H, I>, ij: UnaryFn<I, J>, jk: UnaryFn<J, K>, kl: UnaryFn<K, L>, lm: UnaryFn<L, M>, mn: UnaryFn<M, N>, no: UnaryFn<N, O>, op: UnaryFn<O, P>, pq: UnaryFn<P, Q>, qr: UnaryFn<Q, R>, rs: UnaryFn<R, S>, st: UnaryFn<S, T>): T;
|
|
82
|
+
export declare function pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U>(value: A, ab: UnaryFn<A, B>, bc: UnaryFn<B, C>, cd: UnaryFn<C, D>, de: UnaryFn<D, E>, ef: UnaryFn<E, F>, fg: UnaryFn<F, G>, gh: UnaryFn<G, H>, hi: UnaryFn<H, I>, ij: UnaryFn<I, J>, jk: UnaryFn<J, K>, kl: UnaryFn<K, L>, lm: UnaryFn<L, M>, mn: UnaryFn<M, N>, no: UnaryFn<N, O>, op: UnaryFn<O, P>, pq: UnaryFn<P, Q>, qr: UnaryFn<Q, R>, rs: UnaryFn<R, S>, st: UnaryFn<S, T>, tu: UnaryFn<T, U>): U;
|
|
83
|
+
export {};
|
|
84
|
+
//# sourceMappingURL=pipe.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pipe.d.ts","sourceRoot":"","sources":["../src/pipe.ts"],"names":[],"mappings":"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"}
|
package/dist/pipe.js
ADDED
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Left-to-right function composition. Bundled so `neverthrow-r` doesn't drag
|
|
3
|
+
* in a heavier fp library purely for `pipe`; signature is shape-compatible
|
|
4
|
+
* with the `pipe` used by `effect`, `fp-ts`, `remeda`, and similar.
|
|
5
|
+
*
|
|
6
|
+
* @remarks
|
|
7
|
+
* Every combinator in this package is curried so the operand `ResultR`
|
|
8
|
+
* arrives last, making `pipe` the natural composition tool: feed the seed
|
|
9
|
+
* value first, then list the operators in order.
|
|
10
|
+
*
|
|
11
|
+
* @example
|
|
12
|
+
* ```ts
|
|
13
|
+
* import { okR } from '@konker.dev/neverthrow-r/constructors';
|
|
14
|
+
* import { andThen, map } from '@konker.dev/neverthrow-r/sync';
|
|
15
|
+
* import { pipe } from '@konker.dev/neverthrow-r/pipe';
|
|
16
|
+
*
|
|
17
|
+
* const program = pipe(
|
|
18
|
+
* okR<number>(2),
|
|
19
|
+
* map((n) => n + 1),
|
|
20
|
+
* andThen((n) => okR<string>(`got ${n}`)),
|
|
21
|
+
* );
|
|
22
|
+
*
|
|
23
|
+
* program(undefined); // Ok('got 3')
|
|
24
|
+
* ```
|
|
25
|
+
*
|
|
26
|
+
* @module
|
|
27
|
+
*/
|
|
28
|
+
export function pipe(value, ...fns) {
|
|
29
|
+
return fns.reduce((acc, fn) => fn(acc), value);
|
|
30
|
+
}
|
|
31
|
+
//# sourceMappingURL=pipe.js.map
|
package/dist/pipe.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pipe.js","sourceRoot":"","sources":["../src/pipe.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAySH,MAAM,UAAU,IAAI,CAAC,KAAc,EAAE,GAAG,GAA6C;IACnF,OAAO,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,KAAK,CAAC,CAAC;AACjD,CAAC"}
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Provision: supply the accumulated requirements `R` to a `ResultR` /
|
|
3
|
+
* `ResultAsyncR` and exit back into a plain `neverthrow` `Result` /
|
|
4
|
+
* `ResultAsync`.
|
|
5
|
+
*
|
|
6
|
+
* @remarks
|
|
7
|
+
* The rest of the package builds up an `R` channel through intersection;
|
|
8
|
+
* this module is where you discharge it. Two flavours:
|
|
9
|
+
*
|
|
10
|
+
* - {@link provide} — supply the full environment in one call. Returns the
|
|
11
|
+
* underlying `Result` (or `ResultAsync`).
|
|
12
|
+
* - {@link provideSome} — supply a *subset* of the requirements. Returns a
|
|
13
|
+
* new `ResultR` over the keys that remain unsatisfied.
|
|
14
|
+
*
|
|
15
|
+
* @example
|
|
16
|
+
* ```ts
|
|
17
|
+
* import { asks } from '@konker.dev/neverthrow-r/constructors';
|
|
18
|
+
* import { provide } from '@konker.dev/neverthrow-r/provide';
|
|
19
|
+
*
|
|
20
|
+
* type Deps = { factor: number };
|
|
21
|
+
*
|
|
22
|
+
* const program = asks((r: Deps) => r.factor * 2);
|
|
23
|
+
*
|
|
24
|
+
* provide(program, { factor: 10 }); // Ok(20)
|
|
25
|
+
* ```
|
|
26
|
+
*
|
|
27
|
+
* @module
|
|
28
|
+
*/
|
|
29
|
+
import type { Result, ResultAsync } from 'neverthrow';
|
|
30
|
+
import type { ResultAsyncR, ResultR, Simplify } from './types.js';
|
|
31
|
+
/**
|
|
32
|
+
* Supplies the environment to a `ResultR` (or `ResultAsyncR`) and returns
|
|
33
|
+
* the underlying neverthrow value.
|
|
34
|
+
*
|
|
35
|
+
* @remarks
|
|
36
|
+
* Equivalent to calling `rr(deps)` directly, but named for intent and
|
|
37
|
+
* overloaded so the return type tracks whether the input is sync or async.
|
|
38
|
+
*
|
|
39
|
+
* Typically the final call in a pipeline: composition builds a `ResultR<R, T,
|
|
40
|
+
* E>`; `provide` discharges `R`.
|
|
41
|
+
*
|
|
42
|
+
* @typeParam R - The requirements being supplied.
|
|
43
|
+
* @typeParam T - The success type.
|
|
44
|
+
* @typeParam E - The error type.
|
|
45
|
+
*
|
|
46
|
+
* @param rr - The `ResultR` or `ResultAsyncR` to provide for.
|
|
47
|
+
* @param deps - The environment.
|
|
48
|
+
*
|
|
49
|
+
* @example
|
|
50
|
+
* Sync:
|
|
51
|
+
* ```ts
|
|
52
|
+
* import { okR } from '@konker.dev/neverthrow-r/constructors';
|
|
53
|
+
* import { provide } from '@konker.dev/neverthrow-r/provide';
|
|
54
|
+
*
|
|
55
|
+
* provide(okR<number>(2), undefined); // Ok(2)
|
|
56
|
+
* ```
|
|
57
|
+
*
|
|
58
|
+
* @example
|
|
59
|
+
* Async:
|
|
60
|
+
* ```ts
|
|
61
|
+
* import { okAsyncR } from '@konker.dev/neverthrow-r/constructors';
|
|
62
|
+
* import { provide } from '@konker.dev/neverthrow-r/provide';
|
|
63
|
+
*
|
|
64
|
+
* provide(okAsyncR<number>(2), undefined); // ResultAsync resolving to Ok(2)
|
|
65
|
+
* ```
|
|
66
|
+
*
|
|
67
|
+
* @see {@link provideSome}
|
|
68
|
+
*/
|
|
69
|
+
export declare function provide<R, T, E>(rr: ResultR<R, T, E>, deps: R): Result<T, E>;
|
|
70
|
+
export declare function provide<R, T, E>(rr: ResultAsyncR<R, T, E>, deps: R): ResultAsync<T, E>;
|
|
71
|
+
/**
|
|
72
|
+
* Supplies a *subset* of the requirements, returning a new `ResultR` whose
|
|
73
|
+
* `R` is narrowed to the remaining keys.
|
|
74
|
+
*
|
|
75
|
+
* @remarks
|
|
76
|
+
* Useful for satisfying part of an environment at one level of an
|
|
77
|
+
* application (e.g. injecting a config singleton in `main`) while leaving the
|
|
78
|
+
* rest to be supplied later (e.g. a per-request handle).
|
|
79
|
+
*
|
|
80
|
+
* The merge is shallow: `partial` and the runtime `rest` are spread into a
|
|
81
|
+
* single object, with `partial` taking precedence on conflicting keys. There
|
|
82
|
+
* is no deep merge — if a requirement value is a nested object, supply the
|
|
83
|
+
* whole nested object in one call, not in pieces across two `provideSome`s.
|
|
84
|
+
*
|
|
85
|
+
* The return type uses {@link Simplify} to flatten `Omit<R, keyof P>` for a
|
|
86
|
+
* clean inferred display.
|
|
87
|
+
*
|
|
88
|
+
* @typeParam R - The full requirements of `rr`.
|
|
89
|
+
* @typeParam T - The success type.
|
|
90
|
+
* @typeParam E - The error type.
|
|
91
|
+
* @typeParam P - The subset of `R` being supplied.
|
|
92
|
+
*
|
|
93
|
+
* @param rr - The `ResultR` or `ResultAsyncR` to partially provide for.
|
|
94
|
+
* @param partial - The subset of requirements to inject now.
|
|
95
|
+
*
|
|
96
|
+
* @example
|
|
97
|
+
* ```ts
|
|
98
|
+
* import { asks } from '@konker.dev/neverthrow-r/constructors';
|
|
99
|
+
* import { provide, provideSome } from '@konker.dev/neverthrow-r/provide';
|
|
100
|
+
*
|
|
101
|
+
* type Deps = { config: { name: string }; handle: number };
|
|
102
|
+
*
|
|
103
|
+
* const program = asks((r: Deps) => `${r.config.name}#${r.handle}`);
|
|
104
|
+
*
|
|
105
|
+
* // Pre-inject config; defer handle to later.
|
|
106
|
+
* const withConfig = provideSome(program, { config: { name: 'svc' } });
|
|
107
|
+
*
|
|
108
|
+
* provide(withConfig, { handle: 42 }); // Ok('svc#42')
|
|
109
|
+
* ```
|
|
110
|
+
*
|
|
111
|
+
* @see {@link provide}
|
|
112
|
+
*/
|
|
113
|
+
export declare function provideSome<R, T, E, P extends Partial<R>>(rr: ResultR<R, T, E>, partial: P): ResultR<Simplify<Omit<R, keyof P>>, T, E>;
|
|
114
|
+
export declare function provideSome<R, T, E, P extends Partial<R>>(rr: ResultAsyncR<R, T, E>, partial: P): ResultAsyncR<Simplify<Omit<R, keyof P>>, T, E>;
|
|
115
|
+
//# sourceMappingURL=provide.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"provide.d.ts","sourceRoot":"","sources":["../src/provide.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAEtD,OAAO,KAAK,EAAE,YAAY,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAElE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AACH,wBAAgB,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,GAAG,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAC9E,wBAAgB,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,GAAG,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAQxF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyCG;AACH,wBAAgB,WAAW,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,SAAS,OAAO,CAAC,CAAC,CAAC,EACvD,EAAE,EAAE,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EACpB,OAAO,EAAE,CAAC,GACT,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AAC7C,wBAAgB,WAAW,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,SAAS,OAAO,CAAC,CAAC,CAAC,EACvD,EAAE,EAAE,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EACzB,OAAO,EAAE,CAAC,GACT,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC"}
|