@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/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
@@ -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"}
@@ -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
@@ -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"}