@zambit/elevate-ts 0.1.2
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/CLA-CORPORATE.md +72 -0
- package/CLA-INDIVIDUAL.md +71 -0
- package/DUAL-PUBLISHING-STRATEGY.md +571 -0
- package/LICENSE +610 -0
- package/README.md +77 -0
- package/dist/cjs/Either.d.ts +67 -0
- package/dist/cjs/Either.d.ts.map +1 -0
- package/dist/cjs/Either.js +147 -0
- package/dist/cjs/Either.js.map +1 -0
- package/dist/cjs/EitherAsync.d.ts +139 -0
- package/dist/cjs/EitherAsync.d.ts.map +1 -0
- package/dist/cjs/EitherAsync.js +171 -0
- package/dist/cjs/EitherAsync.js.map +1 -0
- package/dist/cjs/Function.d.ts +153 -0
- package/dist/cjs/Function.d.ts.map +1 -0
- package/dist/cjs/Function.js +110 -0
- package/dist/cjs/Function.js.map +1 -0
- package/dist/cjs/List.d.ts +134 -0
- package/dist/cjs/List.d.ts.map +1 -0
- package/dist/cjs/List.js +243 -0
- package/dist/cjs/List.js.map +1 -0
- package/dist/cjs/Maybe.d.ts +64 -0
- package/dist/cjs/Maybe.d.ts.map +1 -0
- package/dist/cjs/Maybe.js +122 -0
- package/dist/cjs/Maybe.js.map +1 -0
- package/dist/cjs/MaybeAsync.d.ts +115 -0
- package/dist/cjs/MaybeAsync.d.ts.map +1 -0
- package/dist/cjs/MaybeAsync.js +151 -0
- package/dist/cjs/MaybeAsync.js.map +1 -0
- package/dist/cjs/NonEmptyList.d.ts +86 -0
- package/dist/cjs/NonEmptyList.d.ts.map +1 -0
- package/dist/cjs/NonEmptyList.js +128 -0
- package/dist/cjs/NonEmptyList.js.map +1 -0
- package/dist/cjs/Reader.d.ts +53 -0
- package/dist/cjs/Reader.d.ts.map +1 -0
- package/dist/cjs/Reader.js +60 -0
- package/dist/cjs/Reader.js.map +1 -0
- package/dist/cjs/State.d.ts +71 -0
- package/dist/cjs/State.d.ts.map +1 -0
- package/dist/cjs/State.js +94 -0
- package/dist/cjs/State.js.map +1 -0
- package/dist/cjs/Tuple.d.ts +69 -0
- package/dist/cjs/Tuple.d.ts.map +1 -0
- package/dist/cjs/Tuple.js +73 -0
- package/dist/cjs/Tuple.js.map +1 -0
- package/dist/cjs/Validation.d.ts +53 -0
- package/dist/cjs/Validation.d.ts.map +1 -0
- package/dist/cjs/Validation.js +77 -0
- package/dist/cjs/Validation.js.map +1 -0
- package/dist/cjs/index.d.ts +12 -0
- package/dist/cjs/index.d.ts.map +1 -0
- package/dist/cjs/index.js +25 -0
- package/dist/cjs/index.js.map +1 -0
- package/dist/cjs/tokens/config.d.ts +43 -0
- package/dist/cjs/tokens/config.d.ts.map +1 -0
- package/dist/cjs/tokens/config.js +162 -0
- package/dist/cjs/tokens/config.js.map +1 -0
- package/dist/cjs/tokens/cssGen.d.ts +18 -0
- package/dist/cjs/tokens/cssGen.d.ts.map +1 -0
- package/dist/cjs/tokens/cssGen.js +144 -0
- package/dist/cjs/tokens/cssGen.js.map +1 -0
- package/dist/cjs/tokens/generateCSS.d.ts +18 -0
- package/dist/cjs/tokens/generateCSS.d.ts.map +1 -0
- package/dist/cjs/tokens/generateCSS.js +83 -0
- package/dist/cjs/tokens/generateCSS.js.map +1 -0
- package/dist/cjs/tokens/index.d.ts +13 -0
- package/dist/cjs/tokens/index.d.ts.map +1 -0
- package/dist/cjs/tokens/index.js +12 -0
- package/dist/cjs/tokens/index.js.map +1 -0
- package/dist/cjs/tsconfig.tsbuildinfo +1 -0
- package/dist/esm/Either.d.ts +67 -0
- package/dist/esm/Either.d.ts.map +1 -0
- package/dist/esm/Either.js +136 -0
- package/dist/esm/Either.js.map +1 -0
- package/dist/esm/EitherAsync.d.ts +139 -0
- package/dist/esm/EitherAsync.d.ts.map +1 -0
- package/dist/esm/EitherAsync.js +173 -0
- package/dist/esm/EitherAsync.js.map +1 -0
- package/dist/esm/Function.d.ts +153 -0
- package/dist/esm/Function.d.ts.map +1 -0
- package/dist/esm/Function.js +109 -0
- package/dist/esm/Function.js.map +1 -0
- package/dist/esm/List.d.ts +134 -0
- package/dist/esm/List.d.ts.map +1 -0
- package/dist/esm/List.js +243 -0
- package/dist/esm/List.js.map +1 -0
- package/dist/esm/Maybe.d.ts +64 -0
- package/dist/esm/Maybe.d.ts.map +1 -0
- package/dist/esm/Maybe.js +113 -0
- package/dist/esm/Maybe.js.map +1 -0
- package/dist/esm/MaybeAsync.d.ts +115 -0
- package/dist/esm/MaybeAsync.d.ts.map +1 -0
- package/dist/esm/MaybeAsync.js +150 -0
- package/dist/esm/MaybeAsync.js.map +1 -0
- package/dist/esm/NonEmptyList.d.ts +86 -0
- package/dist/esm/NonEmptyList.d.ts.map +1 -0
- package/dist/esm/NonEmptyList.js +128 -0
- package/dist/esm/NonEmptyList.js.map +1 -0
- package/dist/esm/Reader.d.ts +53 -0
- package/dist/esm/Reader.d.ts.map +1 -0
- package/dist/esm/Reader.js +60 -0
- package/dist/esm/Reader.js.map +1 -0
- package/dist/esm/State.d.ts +71 -0
- package/dist/esm/State.d.ts.map +1 -0
- package/dist/esm/State.js +94 -0
- package/dist/esm/State.js.map +1 -0
- package/dist/esm/Tuple.d.ts +69 -0
- package/dist/esm/Tuple.d.ts.map +1 -0
- package/dist/esm/Tuple.js +73 -0
- package/dist/esm/Tuple.js.map +1 -0
- package/dist/esm/Validation.d.ts +53 -0
- package/dist/esm/Validation.d.ts.map +1 -0
- package/dist/esm/Validation.js +79 -0
- package/dist/esm/Validation.js.map +1 -0
- package/dist/esm/index.d.ts +12 -0
- package/dist/esm/index.d.ts.map +1 -0
- package/dist/esm/index.js +22 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/src/Either.d.ts +67 -0
- package/dist/esm/src/Either.d.ts.map +1 -0
- package/dist/esm/src/Either.js +147 -0
- package/dist/esm/src/Either.js.map +1 -0
- package/dist/esm/src/EitherAsync.d.ts +139 -0
- package/dist/esm/src/EitherAsync.d.ts.map +1 -0
- package/dist/esm/src/EitherAsync.js +171 -0
- package/dist/esm/src/EitherAsync.js.map +1 -0
- package/dist/esm/src/Function.d.ts +153 -0
- package/dist/esm/src/Function.d.ts.map +1 -0
- package/dist/esm/src/Function.js +110 -0
- package/dist/esm/src/Function.js.map +1 -0
- package/dist/esm/src/List.d.ts +134 -0
- package/dist/esm/src/List.d.ts.map +1 -0
- package/dist/esm/src/List.js +243 -0
- package/dist/esm/src/List.js.map +1 -0
- package/dist/esm/src/Maybe.d.ts +64 -0
- package/dist/esm/src/Maybe.d.ts.map +1 -0
- package/dist/esm/src/Maybe.js +122 -0
- package/dist/esm/src/Maybe.js.map +1 -0
- package/dist/esm/src/MaybeAsync.d.ts +115 -0
- package/dist/esm/src/MaybeAsync.d.ts.map +1 -0
- package/dist/esm/src/MaybeAsync.js +151 -0
- package/dist/esm/src/MaybeAsync.js.map +1 -0
- package/dist/esm/src/NonEmptyList.d.ts +86 -0
- package/dist/esm/src/NonEmptyList.d.ts.map +1 -0
- package/dist/esm/src/NonEmptyList.js +128 -0
- package/dist/esm/src/NonEmptyList.js.map +1 -0
- package/dist/esm/src/Reader.d.ts +53 -0
- package/dist/esm/src/Reader.d.ts.map +1 -0
- package/dist/esm/src/Reader.js +60 -0
- package/dist/esm/src/Reader.js.map +1 -0
- package/dist/esm/src/State.d.ts +71 -0
- package/dist/esm/src/State.d.ts.map +1 -0
- package/dist/esm/src/State.js +94 -0
- package/dist/esm/src/State.js.map +1 -0
- package/dist/esm/src/Tuple.d.ts +69 -0
- package/dist/esm/src/Tuple.d.ts.map +1 -0
- package/dist/esm/src/Tuple.js +73 -0
- package/dist/esm/src/Tuple.js.map +1 -0
- package/dist/esm/src/Validation.d.ts +53 -0
- package/dist/esm/src/Validation.d.ts.map +1 -0
- package/dist/esm/src/Validation.js +77 -0
- package/dist/esm/src/Validation.js.map +1 -0
- package/dist/esm/src/index.d.ts +12 -0
- package/dist/esm/src/index.d.ts.map +1 -0
- package/dist/esm/src/index.js +25 -0
- package/dist/esm/src/index.js.map +1 -0
- package/dist/esm/tsconfig.esm.tsbuildinfo +1 -0
- package/elevate-ts-vs-effect-critique.md +806 -0
- package/eslint.config.js +104 -0
- package/package.json +139 -0
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
// State — Pure Stateful Computation
|
|
2
|
+
/**
|
|
3
|
+
* Construct a State from a function.
|
|
4
|
+
* @param run - The function that computes a value and new state.
|
|
5
|
+
* @returns A State that encapsulates the computation.
|
|
6
|
+
*/
|
|
7
|
+
export const State = (run) => ({
|
|
8
|
+
tag: 'State',
|
|
9
|
+
run,
|
|
10
|
+
});
|
|
11
|
+
/**
|
|
12
|
+
* Retrieve the current state.
|
|
13
|
+
* @returns A State that returns the state as its value.
|
|
14
|
+
*/
|
|
15
|
+
export const get = () => State((s) => [s, s]);
|
|
16
|
+
/**
|
|
17
|
+
* Replace the state.
|
|
18
|
+
* @param s - The new state.
|
|
19
|
+
* @returns A State that replaces the current state and returns void.
|
|
20
|
+
*/
|
|
21
|
+
export const put = (s) => State(() => [undefined, s]);
|
|
22
|
+
/**
|
|
23
|
+
* Transform the state.
|
|
24
|
+
* @param f - Function to transform the state.
|
|
25
|
+
* @returns A State that applies the transformation and returns void.
|
|
26
|
+
*/
|
|
27
|
+
export const modify = (f) => State((s) => [undefined, f(s)]);
|
|
28
|
+
/**
|
|
29
|
+
* Retrieve and transform the state.
|
|
30
|
+
* @param f - Function to transform the state.
|
|
31
|
+
* @returns A State that applies the function to the state and returns the result.
|
|
32
|
+
*/
|
|
33
|
+
export const gets = (f) => State((s) => [f(s), s]);
|
|
34
|
+
/**
|
|
35
|
+
* Functor map over the value.
|
|
36
|
+
* @param f - Function to transform the value.
|
|
37
|
+
* @returns A function that takes a State and returns a new State with mapped value.
|
|
38
|
+
*/
|
|
39
|
+
export const map = (f) => (state) => State((s) => {
|
|
40
|
+
const [a, s2] = state.run(s);
|
|
41
|
+
return [f(a), s2];
|
|
42
|
+
});
|
|
43
|
+
/**
|
|
44
|
+
* Applicative ap: apply a State function to a State value.
|
|
45
|
+
* @param sf - A State containing a function.
|
|
46
|
+
* @returns A function that takes a State and returns a new State with applied function.
|
|
47
|
+
*/
|
|
48
|
+
export const ap = (sf) => (sa) => State((s) => {
|
|
49
|
+
const [f, s2] = sf.run(s);
|
|
50
|
+
const [a, s3] = sa.run(s2);
|
|
51
|
+
return [f(a), s3];
|
|
52
|
+
});
|
|
53
|
+
/**
|
|
54
|
+
* Monadic bind: sequentially compose two State computations.
|
|
55
|
+
* @param f - Function that returns a new State.
|
|
56
|
+
* @returns A function that takes a State and returns a new State.
|
|
57
|
+
*/
|
|
58
|
+
export const chain = (f) => (state) => State((s) => {
|
|
59
|
+
const [a, s2] = state.run(s);
|
|
60
|
+
return f(a).run(s2);
|
|
61
|
+
});
|
|
62
|
+
/**
|
|
63
|
+
* Execute a State computation with an initial state.
|
|
64
|
+
* @param state - The initial state.
|
|
65
|
+
* @returns A function that takes a State and returns the result pair.
|
|
66
|
+
*/
|
|
67
|
+
export const runState = (state) => (computation) => computation.run(state);
|
|
68
|
+
/**
|
|
69
|
+
* Execute a State computation and extract only the value.
|
|
70
|
+
* @param state - The initial state.
|
|
71
|
+
* @returns A function that takes a State and returns only the value.
|
|
72
|
+
*/
|
|
73
|
+
export const evalState = (state) => (computation) => {
|
|
74
|
+
const [a] = computation.run(state);
|
|
75
|
+
return a;
|
|
76
|
+
};
|
|
77
|
+
/**
|
|
78
|
+
* Execute a State computation and extract only the final state.
|
|
79
|
+
* @param state - The initial state.
|
|
80
|
+
* @returns A function that takes a State and returns only the final state.
|
|
81
|
+
*/
|
|
82
|
+
export const execState = (state) => (computation) => {
|
|
83
|
+
const [, s] = computation.run(state);
|
|
84
|
+
return s;
|
|
85
|
+
};
|
|
86
|
+
// Fantasy Land symbols
|
|
87
|
+
// Note: FL methods excluded to work around vitest coverage serialization issues.
|
|
88
|
+
// The core functionality is complete and all point-free functions work correctly.
|
|
89
|
+
// TODO: Re-enable Fantasy Land methods when vitest issue is resolved.
|
|
90
|
+
//
|
|
91
|
+
// const stateProto = Object.getPrototypeOf(State(() => [0, 0]))
|
|
92
|
+
// stateProto['fantasy-land/map'] = ...
|
|
93
|
+
// etc.
|
|
94
|
+
//# sourceMappingURL=State.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"State.js","sourceRoot":"","sources":["../../src/State.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
/** Immutable 2-tuple. */
|
|
2
|
+
export type Tuple<A, B> = {
|
|
3
|
+
readonly fst: A;
|
|
4
|
+
readonly snd: B;
|
|
5
|
+
};
|
|
6
|
+
/**
|
|
7
|
+
* Construct a Tuple from two values.
|
|
8
|
+
* @param fst - The first component.
|
|
9
|
+
* @param snd - The second component.
|
|
10
|
+
* @returns A Tuple containing both values.
|
|
11
|
+
*/
|
|
12
|
+
export declare const Tuple: <A, B>(fst: A, snd: B) => Tuple<A, B>;
|
|
13
|
+
/**
|
|
14
|
+
* Extract the first component.
|
|
15
|
+
* @param tuple - The tuple to extract from.
|
|
16
|
+
* @returns The first component.
|
|
17
|
+
*/
|
|
18
|
+
export declare const fst: <A, B>(tuple: Tuple<A, B>) => A;
|
|
19
|
+
/**
|
|
20
|
+
* Extract the second component.
|
|
21
|
+
* @param tuple - The tuple to extract from.
|
|
22
|
+
* @returns The second component.
|
|
23
|
+
*/
|
|
24
|
+
export declare const snd: <A, B>(tuple: Tuple<A, B>) => B;
|
|
25
|
+
/**
|
|
26
|
+
* Map over the first component.
|
|
27
|
+
* @param f - Function to transform the first component.
|
|
28
|
+
* @returns A function that takes a Tuple and returns a new Tuple with mapped first component.
|
|
29
|
+
*/
|
|
30
|
+
export declare const mapFst: <A, B, A2>(f: (a: A) => A2) => ((tuple: Tuple<A, B>) => Tuple<A2, B>);
|
|
31
|
+
/**
|
|
32
|
+
* Map over the second component.
|
|
33
|
+
* @param f - Function to transform the second component.
|
|
34
|
+
* @returns A function that takes a Tuple and returns a new Tuple with mapped second component.
|
|
35
|
+
*/
|
|
36
|
+
export declare const mapSnd: <A, B, B2>(f: (b: B) => B2) => ((tuple: Tuple<A, B>) => Tuple<A, B2>);
|
|
37
|
+
/**
|
|
38
|
+
* Bifunctor bimap: map over both components independently.
|
|
39
|
+
* @param f - Function to transform the first component.
|
|
40
|
+
* @param g - Function to transform the second component.
|
|
41
|
+
* @returns A function that takes a Tuple and returns a new Tuple with both components mapped.
|
|
42
|
+
*/
|
|
43
|
+
export declare const bimap: <A, B, A2, B2>(f: (a: A) => A2, g: (b: B) => B2) => ((tuple: Tuple<A, B>) => Tuple<A2, B2>);
|
|
44
|
+
/**
|
|
45
|
+
* Convert a Tuple to a 2-element array.
|
|
46
|
+
* @param tuple - The tuple to convert.
|
|
47
|
+
* @returns A 2-element array.
|
|
48
|
+
*/
|
|
49
|
+
export declare const toArray: <A, B>(tuple: Tuple<A, B>) => readonly [A, B];
|
|
50
|
+
/**
|
|
51
|
+
* Construct a Tuple from a 2-element array.
|
|
52
|
+
* @param arr - A 2-element array.
|
|
53
|
+
* @returns A Tuple constructed from the array.
|
|
54
|
+
*/
|
|
55
|
+
export declare const fromArray: <A, B>(arr: readonly [A, B]) => Tuple<A, B>;
|
|
56
|
+
/**
|
|
57
|
+
* Swap the components of a Tuple.
|
|
58
|
+
* @param tuple - The tuple to swap.
|
|
59
|
+
* @returns A new Tuple with components reversed.
|
|
60
|
+
*/
|
|
61
|
+
export declare const swap: <A, B>(tuple: Tuple<A, B>) => Tuple<B, A>;
|
|
62
|
+
/**
|
|
63
|
+
* Apply two functions to the same input, combining results as a Tuple.
|
|
64
|
+
* @param f - Function to apply to the input.
|
|
65
|
+
* @param g - Function to apply to the input.
|
|
66
|
+
* @returns A function that takes a value and returns a Tuple of the results.
|
|
67
|
+
*/
|
|
68
|
+
export declare const fanout: <A, B, C>(f: (a: A) => B, g: (a: A) => C) => ((a: A) => Tuple<B, C>);
|
|
69
|
+
//# sourceMappingURL=Tuple.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Tuple.d.ts","sourceRoot":"","sources":["../../src/Tuple.ts"],"names":[],"mappings":"AAEA,yBAAyB;AACzB,MAAM,MAAM,KAAK,CAAC,CAAC,EAAE,CAAC,IAAI;IAAE,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAC;IAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAA;CAAE,CAAA;AAE9D;;;;;GAKG;AACH,eAAO,MAAM,KAAK,GAAI,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,EAAE,KAAK,CAAC,KAAG,KAAK,CAAC,CAAC,EAAE,CAAC,CAAmB,CAAA;AAE1E;;;;GAIG;AACH,eAAO,MAAM,GAAG,GAAI,CAAC,EAAE,CAAC,EAAE,OAAO,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,KAAG,CAAc,CAAA;AAE7D;;;;GAIG;AACH,eAAO,MAAM,GAAG,GAAI,CAAC,EAAE,CAAC,EAAE,OAAO,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,KAAG,CAAc,CAAA;AAE7D;;;;GAIG;AACH,eAAO,MAAM,MAAM,GAChB,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,KAAG,CAAC,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,CAElC,CAAA;AAElC;;;;GAIG;AACH,eAAO,MAAM,MAAM,GAChB,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,KAAG,CAAC,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAElC,CAAA;AAElC;;;;;GAKG;AACH,eAAO,MAAM,KAAK,GACf,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,KAAG,CAAC,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,CAErD,CAAA;AAErC;;;;GAIG;AACH,eAAO,MAAM,OAAO,GAAI,CAAC,EAAE,CAAC,EAAE,OAAO,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,KAAG,SAAS,CAAC,CAAC,EAAE,CAAC,CACzC,CAAA;AAExB;;;;GAIG;AACH,eAAO,MAAM,SAAS,GAAI,CAAC,EAAE,CAAC,EAAE,KAAK,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,KAAG,KAAK,CAAC,CAAC,EAAE,CAAC,CAC1C,CAAA;AAEvB;;;;GAIG;AACH,eAAO,MAAM,IAAI,GAAI,CAAC,EAAE,CAAC,EAAE,OAAO,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,KAAG,KAAK,CAAC,CAAC,EAAE,CAAC,CAC7B,CAAA;AAE7B;;;;;GAKG;AACH,eAAO,MAAM,MAAM,GAChB,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,KAAG,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAE9C,CAAA"}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
// Tuple — Immutable 2-Tuples
|
|
2
|
+
/**
|
|
3
|
+
* Construct a Tuple from two values.
|
|
4
|
+
* @param fst - The first component.
|
|
5
|
+
* @param snd - The second component.
|
|
6
|
+
* @returns A Tuple containing both values.
|
|
7
|
+
*/
|
|
8
|
+
export const Tuple = (fst, snd) => ({ fst, snd });
|
|
9
|
+
/**
|
|
10
|
+
* Extract the first component.
|
|
11
|
+
* @param tuple - The tuple to extract from.
|
|
12
|
+
* @returns The first component.
|
|
13
|
+
*/
|
|
14
|
+
export const fst = (tuple) => tuple.fst;
|
|
15
|
+
/**
|
|
16
|
+
* Extract the second component.
|
|
17
|
+
* @param tuple - The tuple to extract from.
|
|
18
|
+
* @returns The second component.
|
|
19
|
+
*/
|
|
20
|
+
export const snd = (tuple) => tuple.snd;
|
|
21
|
+
/**
|
|
22
|
+
* Map over the first component.
|
|
23
|
+
* @param f - Function to transform the first component.
|
|
24
|
+
* @returns A function that takes a Tuple and returns a new Tuple with mapped first component.
|
|
25
|
+
*/
|
|
26
|
+
export const mapFst = (f) => (tuple) => Tuple(f(tuple.fst), tuple.snd);
|
|
27
|
+
/**
|
|
28
|
+
* Map over the second component.
|
|
29
|
+
* @param f - Function to transform the second component.
|
|
30
|
+
* @returns A function that takes a Tuple and returns a new Tuple with mapped second component.
|
|
31
|
+
*/
|
|
32
|
+
export const mapSnd = (f) => (tuple) => Tuple(tuple.fst, f(tuple.snd));
|
|
33
|
+
/**
|
|
34
|
+
* Bifunctor bimap: map over both components independently.
|
|
35
|
+
* @param f - Function to transform the first component.
|
|
36
|
+
* @param g - Function to transform the second component.
|
|
37
|
+
* @returns A function that takes a Tuple and returns a new Tuple with both components mapped.
|
|
38
|
+
*/
|
|
39
|
+
export const bimap = (f, g) => (tuple) => Tuple(f(tuple.fst), g(tuple.snd));
|
|
40
|
+
/**
|
|
41
|
+
* Convert a Tuple to a 2-element array.
|
|
42
|
+
* @param tuple - The tuple to convert.
|
|
43
|
+
* @returns A 2-element array.
|
|
44
|
+
*/
|
|
45
|
+
export const toArray = (tuple) => [tuple.fst, tuple.snd];
|
|
46
|
+
/**
|
|
47
|
+
* Construct a Tuple from a 2-element array.
|
|
48
|
+
* @param arr - A 2-element array.
|
|
49
|
+
* @returns A Tuple constructed from the array.
|
|
50
|
+
*/
|
|
51
|
+
export const fromArray = (arr) => Tuple(arr[0], arr[1]);
|
|
52
|
+
/**
|
|
53
|
+
* Swap the components of a Tuple.
|
|
54
|
+
* @param tuple - The tuple to swap.
|
|
55
|
+
* @returns A new Tuple with components reversed.
|
|
56
|
+
*/
|
|
57
|
+
export const swap = (tuple) => Tuple(tuple.snd, tuple.fst);
|
|
58
|
+
/**
|
|
59
|
+
* Apply two functions to the same input, combining results as a Tuple.
|
|
60
|
+
* @param f - Function to apply to the input.
|
|
61
|
+
* @param g - Function to apply to the input.
|
|
62
|
+
* @returns A function that takes a value and returns a Tuple of the results.
|
|
63
|
+
*/
|
|
64
|
+
export const fanout = (f, g) => (a) => Tuple(f(a), g(a));
|
|
65
|
+
// Fantasy Land symbols
|
|
66
|
+
// Note: FL methods excluded to work around vitest coverage serialization issues.
|
|
67
|
+
// The core functionality is complete and all point-free functions work correctly.
|
|
68
|
+
// TODO: Re-enable Fantasy Land methods when vitest issue is resolved.
|
|
69
|
+
//
|
|
70
|
+
// const tupleProto = Object.getPrototypeOf(Tuple(0, 0))
|
|
71
|
+
// tupleProto['fantasy-land/bimap'] = ...
|
|
72
|
+
// etc.
|
|
73
|
+
//# sourceMappingURL=Tuple.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Tuple.js","sourceRoot":"","sources":["../../src/Tuple.ts"],"names":[],"mappings":"AAAA,6BAA6B;AAK7B;;;;;GAKG;AACH,MAAM,CAAC,MAAM,KAAK,GAAG,CAAO,GAAM,EAAE,GAAM,EAAe,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAA;AAE1E;;;;GAIG;AACH,MAAM,CAAC,MAAM,GAAG,GAAG,CAAO,KAAkB,EAAK,EAAE,CAAC,KAAK,CAAC,GAAG,CAAA;AAE7D;;;;GAIG;AACH,MAAM,CAAC,MAAM,GAAG,GAAG,CAAO,KAAkB,EAAK,EAAE,CAAC,KAAK,CAAC,GAAG,CAAA;AAE7D;;;;GAIG;AACH,MAAM,CAAC,MAAM,MAAM,GACjB,CAAW,CAAe,EAA0C,EAAE,CACtE,CAAC,KAAK,EAAE,EAAE,CACR,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,CAAA;AAElC;;;;GAIG;AACH,MAAM,CAAC,MAAM,MAAM,GACjB,CAAW,CAAe,EAA0C,EAAE,CACtE,CAAC,KAAK,EAAE,EAAE,CACR,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAA;AAElC;;;;;GAKG;AACH,MAAM,CAAC,MAAM,KAAK,GAChB,CAAe,CAAe,EAAE,CAAe,EAA2C,EAAE,CAC5F,CAAC,KAAK,EAAE,EAAE,CACR,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAA;AAErC;;;;GAIG;AACH,MAAM,CAAC,MAAM,OAAO,GAAG,CAAO,KAAkB,EAAmB,EAAE,CACnE,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,CAAC,CAAA;AAExB;;;;GAIG;AACH,MAAM,CAAC,MAAM,SAAS,GAAG,CAAO,GAAoB,EAAe,EAAE,CACnE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAA;AAEvB;;;;GAIG;AACH,MAAM,CAAC,MAAM,IAAI,GAAG,CAAO,KAAkB,EAAe,EAAE,CAC5D,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,CAAC,CAAA;AAE7B;;;;;GAKG;AACH,MAAM,CAAC,MAAM,MAAM,GACjB,CAAU,CAAc,EAAE,CAAc,EAA2B,EAAE,CACrE,CAAC,CAAC,EAAE,EAAE,CACJ,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;AAErB,uBAAuB;AACvB,iFAAiF;AACjF,kFAAkF;AAClF,sEAAsE;AACtE,EAAE;AACF,wDAAwD;AACxD,yCAAyC;AACzC,OAAO"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
/** Represents a Failure with accumulated errors. */
|
|
2
|
+
export type Failure<E> = {
|
|
3
|
+
readonly tag: 'Failure';
|
|
4
|
+
readonly errors: readonly E[];
|
|
5
|
+
};
|
|
6
|
+
/** Represents a Success value. */
|
|
7
|
+
export type Success<A> = {
|
|
8
|
+
readonly tag: 'Success';
|
|
9
|
+
readonly value: A;
|
|
10
|
+
};
|
|
11
|
+
/** Validation type: Failure<E> (errors) or Success<A> (value). */
|
|
12
|
+
export type Validation<E, A> = Failure<E> | Success<A>;
|
|
13
|
+
type Left<L> = {
|
|
14
|
+
readonly tag: 'Left';
|
|
15
|
+
readonly left: L;
|
|
16
|
+
};
|
|
17
|
+
type Right<R> = {
|
|
18
|
+
readonly tag: 'Right';
|
|
19
|
+
readonly right: R;
|
|
20
|
+
};
|
|
21
|
+
type Either<L, R> = Left<L> | Right<R>;
|
|
22
|
+
/** Create a Failure with one or more errors. */
|
|
23
|
+
export declare const Failure: <E>(errors: readonly E[]) => Failure<E>;
|
|
24
|
+
/** Create a Success value. */
|
|
25
|
+
export declare const Success: <A>(value: A) => Success<A>;
|
|
26
|
+
/** Test if a Validation is Failure. */
|
|
27
|
+
export declare const isFailure: <E, A>(va: Validation<E, A>) => va is Failure<E>;
|
|
28
|
+
/** Test if a Validation is Success. */
|
|
29
|
+
export declare const isSuccess: <E, A>(va: Validation<E, A>) => va is Success<A>;
|
|
30
|
+
/** Lift an Either into Validation. */
|
|
31
|
+
export declare const fromEither: <E, A>(ea: Either<E, A>) => Validation<E, A>;
|
|
32
|
+
/** Convert Validation to Either with errors array. */
|
|
33
|
+
export declare const toEither: <E, A>(va: Validation<E, A>) => Either<readonly E[], A>;
|
|
34
|
+
/** Construct Success if predicate holds, Failure otherwise. */
|
|
35
|
+
export declare const fromPredicate: <E, A>(predicate: (a: A) => boolean, onFalse: (a: A) => E) => ((a: A) => Validation<E, A>);
|
|
36
|
+
/** Functor map over Success. */
|
|
37
|
+
export declare const map: <E, A, B>(f: (a: A) => B) => ((va: Validation<E, A>) => Validation<E, B>);
|
|
38
|
+
/** Applicative ap: accumulates errors when both are Failures. */
|
|
39
|
+
export declare const ap: <E, A, B>(vf: Validation<E, (a: A) => B>) => ((va: Validation<E, A>) => Validation<E, B>);
|
|
40
|
+
/** Monadic bind (short-circuits on first Failure). */
|
|
41
|
+
export declare const chain: <E, A, B>(f: (a: A) => Validation<E, B>) => ((va: Validation<E, A>) => Validation<E, B>);
|
|
42
|
+
/** Extract Success or default. */
|
|
43
|
+
export declare const getOrElse: <E, A>(a: A) => ((va: Validation<E, A>) => A);
|
|
44
|
+
/** Case analysis. */
|
|
45
|
+
export declare const fold: <E, A, B>(onFailure: (errors: readonly E[]) => B, onSuccess: (a: A) => B) => ((va: Validation<E, A>) => B);
|
|
46
|
+
/** Merge two Validations; if both are Failure, concatenate errors. */
|
|
47
|
+
export declare const concat: <E, A>(va2: Validation<E, A>) => ((va1: Validation<E, A>) => Validation<E, A>);
|
|
48
|
+
/** Sequence all-or-Failure, collecting all errors. */
|
|
49
|
+
export declare const sequence: <E, A>(validations: readonly Validation<E, A>[]) => Validation<E, readonly A[]>;
|
|
50
|
+
/** Traverse a sequence, collecting all errors. */
|
|
51
|
+
export declare const traverse: <E, A, B>(f: (a: A) => Validation<E, B>) => ((as: readonly A[]) => Validation<E, readonly B[]>);
|
|
52
|
+
export {};
|
|
53
|
+
//# sourceMappingURL=Validation.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Validation.d.ts","sourceRoot":"","sources":["../../src/Validation.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
// Validation — Accumulating Errors
|
|
2
|
+
/** Create a Failure with one or more errors. */
|
|
3
|
+
export const Failure = (errors) => ({
|
|
4
|
+
tag: 'Failure',
|
|
5
|
+
errors,
|
|
6
|
+
});
|
|
7
|
+
/** Create a Success value. */
|
|
8
|
+
export const Success = (value) => ({
|
|
9
|
+
tag: 'Success',
|
|
10
|
+
value,
|
|
11
|
+
});
|
|
12
|
+
/** Test if a Validation is Failure. */
|
|
13
|
+
export const isFailure = (va) => va.tag === 'Failure';
|
|
14
|
+
/** Test if a Validation is Success. */
|
|
15
|
+
export const isSuccess = (va) => va.tag === 'Success';
|
|
16
|
+
/** Lift an Either into Validation. */
|
|
17
|
+
export const fromEither = (ea) => ea.tag === 'Left' ? Failure([ea.left]) : Success(ea.right);
|
|
18
|
+
/** Convert Validation to Either with errors array. */
|
|
19
|
+
export const toEither = (va) => va.tag === 'Failure'
|
|
20
|
+
? { tag: 'Left', left: va.errors }
|
|
21
|
+
: { tag: 'Right', right: va.value };
|
|
22
|
+
/** Construct Success if predicate holds, Failure otherwise. */
|
|
23
|
+
export const fromPredicate = (predicate, onFalse) => (a) => predicate(a) ? Success(a) : Failure([onFalse(a)]);
|
|
24
|
+
/** Functor map over Success. */
|
|
25
|
+
export const map = (f) => (va) => va.tag === 'Success' ? Success(f(va.value)) : va;
|
|
26
|
+
/** Applicative ap: accumulates errors when both are Failures. */
|
|
27
|
+
export const ap = (vf) => (va) => {
|
|
28
|
+
if (vf.tag === 'Failure' && va.tag === 'Failure') {
|
|
29
|
+
return Failure([...vf.errors, ...va.errors]);
|
|
30
|
+
}
|
|
31
|
+
if (vf.tag === 'Failure')
|
|
32
|
+
return vf;
|
|
33
|
+
if (va.tag === 'Failure')
|
|
34
|
+
return va;
|
|
35
|
+
return Success(vf.value(va.value));
|
|
36
|
+
};
|
|
37
|
+
/** Monadic bind (short-circuits on first Failure). */
|
|
38
|
+
export const chain = (f) => (va) => va.tag === 'Failure' ? va : f(va.value);
|
|
39
|
+
/** Extract Success or default. */
|
|
40
|
+
export const getOrElse = (a) => (va) => va.tag === 'Success' ? va.value : a;
|
|
41
|
+
/** Case analysis. */
|
|
42
|
+
export const fold = (onFailure, onSuccess) => (va) => va.tag === 'Failure' ? onFailure(va.errors) : onSuccess(va.value);
|
|
43
|
+
/** Merge two Validations; if both are Failure, concatenate errors. */
|
|
44
|
+
export const concat = (va2) => (va1) => {
|
|
45
|
+
if (va1.tag === 'Failure' && va2.tag === 'Failure') {
|
|
46
|
+
return Failure([...va1.errors, ...va2.errors]);
|
|
47
|
+
}
|
|
48
|
+
if (va1.tag === 'Failure')
|
|
49
|
+
return va1;
|
|
50
|
+
return va2;
|
|
51
|
+
};
|
|
52
|
+
/** Sequence all-or-Failure, collecting all errors. */
|
|
53
|
+
export const sequence = (validations) => {
|
|
54
|
+
const result = [];
|
|
55
|
+
const errors = [];
|
|
56
|
+
for (const va of validations) {
|
|
57
|
+
if (va.tag === 'Failure') {
|
|
58
|
+
errors.push(...va.errors);
|
|
59
|
+
}
|
|
60
|
+
else {
|
|
61
|
+
result.push(va.value);
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
return errors.length > 0 ? Failure(errors) : Success(result);
|
|
65
|
+
};
|
|
66
|
+
/** Traverse a sequence, collecting all errors. */
|
|
67
|
+
export const traverse = (f) => (as) => sequence(as.map(f));
|
|
68
|
+
// Fantasy Land symbols
|
|
69
|
+
// Note: FL methods are excluded to work around vitest coverage serialization issues.
|
|
70
|
+
// The core functionality is complete and all point-free functions work correctly.
|
|
71
|
+
// TODO: Re-enable Fantasy Land methods when vitest issue is resolved.
|
|
72
|
+
//
|
|
73
|
+
// Object.defineProperty(Success, 'fantasy-land/of', { value: Success })
|
|
74
|
+
// Object.defineProperty(Failure, 'fantasy-land/zero', { value: Failure([]) })
|
|
75
|
+
//
|
|
76
|
+
// const successProto = Object.getPrototypeOf(Success(0))
|
|
77
|
+
// successProto['fantasy-land/map'] = ...
|
|
78
|
+
// etc.
|
|
79
|
+
//# sourceMappingURL=Validation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Validation.js","sourceRoot":"","sources":["../../src/Validation.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export * as Maybe from './Maybe.js';
|
|
2
|
+
export * as Either from './Either.js';
|
|
3
|
+
export * as Validation from './Validation.js';
|
|
4
|
+
export * as Reader from './Reader.js';
|
|
5
|
+
export * as State from './State.js';
|
|
6
|
+
export * as Tuple from './Tuple.js';
|
|
7
|
+
export * as NonEmptyList from './NonEmptyList.js';
|
|
8
|
+
export * as List from './List.js';
|
|
9
|
+
export * as Function from './Function.js';
|
|
10
|
+
export * as MaybeAsync from './MaybeAsync.js';
|
|
11
|
+
export * as EitherAsync from './EitherAsync.js';
|
|
12
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,KAAK,MAAM,YAAY,CAAA;AACnC,OAAO,KAAK,MAAM,MAAM,aAAa,CAAA;AACrC,OAAO,KAAK,UAAU,MAAM,iBAAiB,CAAA;AAC7C,OAAO,KAAK,MAAM,MAAM,aAAa,CAAA;AACrC,OAAO,KAAK,KAAK,MAAM,YAAY,CAAA;AACnC,OAAO,KAAK,KAAK,MAAM,YAAY,CAAA;AACnC,OAAO,KAAK,YAAY,MAAM,mBAAmB,CAAA;AACjD,OAAO,KAAK,IAAI,MAAM,WAAW,CAAA;AACjC,OAAO,KAAK,QAAQ,MAAM,eAAe,CAAA;AACzC,OAAO,KAAK,UAAU,MAAM,iBAAiB,CAAA;AAC7C,OAAO,KAAK,WAAW,MAAM,kBAAkB,CAAA"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
// elevate-ts
|
|
2
|
+
// Re-exports added as each module is implemented.
|
|
3
|
+
// See prompts/README.md for implementation order.
|
|
4
|
+
//
|
|
5
|
+
// TODO(audit): add @paralleldrive/cuid2 when time-travel audit subsystem
|
|
6
|
+
// is implemented. Each audited operation will receive a cuid2-stamped ID
|
|
7
|
+
// (monotonically sortable, collision-resistant across distributed Worker
|
|
8
|
+
// instances) enabling deterministic replay and rewind of operation sequences.
|
|
9
|
+
// Note: Individual modules are exported with namespace prefixes to avoid
|
|
10
|
+
// naming conflicts (all monads export map, chain, ap, etc.)
|
|
11
|
+
export * as Maybe from './Maybe.js';
|
|
12
|
+
export * as Either from './Either.js';
|
|
13
|
+
export * as Validation from './Validation.js';
|
|
14
|
+
export * as Reader from './Reader.js';
|
|
15
|
+
export * as State from './State.js';
|
|
16
|
+
export * as Tuple from './Tuple.js';
|
|
17
|
+
export * as NonEmptyList from './NonEmptyList.js';
|
|
18
|
+
export * as List from './List.js';
|
|
19
|
+
export * as Function from './Function.js';
|
|
20
|
+
export * as MaybeAsync from './MaybeAsync.js';
|
|
21
|
+
export * as EitherAsync from './EitherAsync.js';
|
|
22
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,aAAa;AACb,kDAAkD;AAClD,kDAAkD;AAClD,EAAE;AACF,yEAAyE;AACzE,yEAAyE;AACzE,yEAAyE;AACzE,8EAA8E;AAE9E,yEAAyE;AACzE,4DAA4D;AAC5D,OAAO,KAAK,KAAK,MAAM,YAAY,CAAA;AACnC,OAAO,KAAK,MAAM,MAAM,aAAa,CAAA;AACrC,OAAO,KAAK,UAAU,MAAM,iBAAiB,CAAA;AAC7C,OAAO,KAAK,MAAM,MAAM,aAAa,CAAA;AACrC,OAAO,KAAK,KAAK,MAAM,YAAY,CAAA;AACnC,OAAO,KAAK,KAAK,MAAM,YAAY,CAAA;AACnC,OAAO,KAAK,YAAY,MAAM,mBAAmB,CAAA;AACjD,OAAO,KAAK,IAAI,MAAM,WAAW,CAAA;AACjC,OAAO,KAAK,QAAQ,MAAM,eAAe,CAAA;AACzC,OAAO,KAAK,UAAU,MAAM,iBAAiB,CAAA;AAC7C,OAAO,KAAK,WAAW,MAAM,kBAAkB,CAAA"}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
/** Represents a Left (error) value. */
|
|
2
|
+
export type Left<L> = {
|
|
3
|
+
readonly tag: 'Left';
|
|
4
|
+
readonly left: L;
|
|
5
|
+
};
|
|
6
|
+
/** Represents a Right (success) value. */
|
|
7
|
+
export type Right<R> = {
|
|
8
|
+
readonly tag: 'Right';
|
|
9
|
+
readonly right: R;
|
|
10
|
+
};
|
|
11
|
+
/** Result type: Left<L> (error) or Right<R> (success). */
|
|
12
|
+
export type Either<L, R> = Left<L> | Right<R>;
|
|
13
|
+
/** Create a Left value. */
|
|
14
|
+
export declare const Left: <L>(left: L) => Left<L>;
|
|
15
|
+
/** Create a Right value. */
|
|
16
|
+
export declare const Right: <R>(right: R) => Right<R>;
|
|
17
|
+
/** Test if Either is Left. */
|
|
18
|
+
export declare const isLeft: <L, R>(ea: Either<L, R>) => ea is Left<L>;
|
|
19
|
+
/** Test if Either is Right. */
|
|
20
|
+
export declare const isRight: <L, R>(ea: Either<L, R>) => ea is Right<R>;
|
|
21
|
+
/** Lift a nullable value into Either. */
|
|
22
|
+
export declare const fromNullable: <L, R>(onNull: L) => ((value: R | null | undefined) => Either<L, R>);
|
|
23
|
+
/** Construct Right if predicate holds, Left otherwise. */
|
|
24
|
+
export declare const fromPredicate: <L, A>(predicate: (a: A) => boolean, onFalse: (a: A) => L) => ((a: A) => Either<L, A>);
|
|
25
|
+
/** Convert Either to Maybe, discarding Left. */
|
|
26
|
+
export declare const toMaybe: <L, R>(ea: Either<L, R>) => {
|
|
27
|
+
tag: "Just";
|
|
28
|
+
value: R;
|
|
29
|
+
} | {
|
|
30
|
+
tag: "Nothing";
|
|
31
|
+
value?: undefined;
|
|
32
|
+
};
|
|
33
|
+
/** Extract Right or null. */
|
|
34
|
+
export declare const toNullable: <L, R>(ea: Either<L, R>) => R | null;
|
|
35
|
+
/** Functor map over Right. */
|
|
36
|
+
export declare const map: <L, A, B>(f: (a: A) => B) => ((ea: Either<L, A>) => Either<L, B>);
|
|
37
|
+
/** Map over Left. */
|
|
38
|
+
export declare const mapLeft: <L, L2, R>(f: (l: L) => L2) => ((ea: Either<L, R>) => Either<L2, R>);
|
|
39
|
+
/** Bifunctor bimap. */
|
|
40
|
+
export declare const bimap: <L, L2, A, B>(f: (l: L) => L2, g: (a: A) => B) => ((ea: Either<L, A>) => Either<L2, B>);
|
|
41
|
+
/** Applicative ap. */
|
|
42
|
+
export declare const ap: <L, A, B>(ef: Either<L, (a: A) => B>) => ((ea: Either<L, A>) => Either<L, B>);
|
|
43
|
+
/** Monadic bind (flatMap). */
|
|
44
|
+
export declare const chain: <L, A, B>(f: (a: A) => Either<L, B>) => ((ea: Either<L, A>) => Either<L, B>);
|
|
45
|
+
/** Chain over Left. */
|
|
46
|
+
export declare const chainLeft: <L, L2, R>(f: (l: L) => Either<L2, R>) => ((ea: Either<L, R>) => Either<L2, R>);
|
|
47
|
+
/** Extract Right or default. */
|
|
48
|
+
export declare const getOrElse: <L, R>(r: R) => ((ea: Either<L, R>) => R);
|
|
49
|
+
/** Extract Right or compute from Left. */
|
|
50
|
+
export declare const getOrElseL: <L, R>(f: (l: L) => R) => ((ea: Either<L, R>) => R);
|
|
51
|
+
/** Case analysis. */
|
|
52
|
+
export declare const fold: <L, R, B>(onLeft: (l: L) => B, onRight: (r: R) => B) => ((ea: Either<L, R>) => B);
|
|
53
|
+
/** Swap Left and Right. */
|
|
54
|
+
export declare const swap: <L, R>(ea: Either<L, R>) => Either<R, L>;
|
|
55
|
+
/** Wrap throwing function in Either. */
|
|
56
|
+
export declare const tryCatch: <L, R>(f: () => R, onError: (e: unknown) => L) => Either<L, R>;
|
|
57
|
+
/** Partition array of Eithers into Left and Right arrays. */
|
|
58
|
+
export declare const partitionEithers: <L, R>(eithers: readonly Either<L, R>[]) => readonly [readonly L[], readonly R[]];
|
|
59
|
+
/** Extract all Lefts. */
|
|
60
|
+
export declare const lefts: <L, R>(eithers: readonly Either<L, R>[]) => readonly L[];
|
|
61
|
+
/** Extract all Rights. */
|
|
62
|
+
export declare const rights: <L, R>(eithers: readonly Either<L, R>[]) => readonly R[];
|
|
63
|
+
/** Sequence all-or-Left. */
|
|
64
|
+
export declare const sequence: <L, A>(eithers: readonly Either<L, A>[]) => Either<L, readonly A[]>;
|
|
65
|
+
/** Traverse a sequence. */
|
|
66
|
+
export declare const traverse: <L, A, B>(f: (a: A) => Either<L, B>) => ((as: readonly A[]) => Either<L, readonly B[]>);
|
|
67
|
+
//# sourceMappingURL=Either.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Either.d.ts","sourceRoot":"","sources":["../../../src/Either.ts"],"names":[],"mappings":"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"}
|