@duplojs/utils 1.0.4 → 1.0.6

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.
Files changed (59) hide show
  1. package/dist/array/group.cjs +1 -1
  2. package/dist/array/group.mjs +2 -2
  3. package/dist/array/index.cjs +3 -0
  4. package/dist/array/index.d.ts +1 -0
  5. package/dist/array/index.mjs +2 -1
  6. package/dist/array/length.cjs +7 -0
  7. package/dist/array/length.d.ts +1 -0
  8. package/dist/array/length.mjs +5 -0
  9. package/dist/array/reduce.cjs +8 -9
  10. package/dist/array/reduce.d.ts +6 -8
  11. package/dist/array/reduce.mjs +8 -10
  12. package/dist/array/reduceRight.cjs +4 -12
  13. package/dist/array/reduceRight.d.ts +3 -30
  14. package/dist/array/reduceRight.mjs +4 -12
  15. package/dist/array/types/index.d.ts +1 -0
  16. package/dist/common/and.cjs +17 -0
  17. package/dist/common/and.mjs +15 -0
  18. package/dist/common/index.d.ts +2 -0
  19. package/dist/common/or.cjs +17 -0
  20. package/dist/common/or.mjs +15 -0
  21. package/dist/either/bool/create.d.ts +1 -0
  22. package/dist/either/future/create.d.ts +1 -1
  23. package/dist/either/nullable/create.d.ts +1 -0
  24. package/dist/either/nullish/create.d.ts +1 -0
  25. package/dist/either/optional/create.d.ts +1 -0
  26. package/dist/either/right/asyncPipe.cjs +8 -4
  27. package/dist/either/right/asyncPipe.d.ts +13 -15
  28. package/dist/either/right/asyncPipe.mjs +8 -4
  29. package/dist/either/right/pipe.cjs +15 -8
  30. package/dist/either/right/pipe.d.ts +13 -14
  31. package/dist/either/right/pipe.mjs +12 -5
  32. package/dist/generator/asyncReduce.cjs +4 -12
  33. package/dist/generator/asyncReduce.d.ts +3 -30
  34. package/dist/generator/asyncReduce.mjs +4 -12
  35. package/dist/generator/index.cjs +1 -0
  36. package/dist/generator/index.mjs +1 -1
  37. package/dist/generator/reduce.cjs +8 -9
  38. package/dist/generator/reduce.d.ts +8 -10
  39. package/dist/generator/reduce.mjs +8 -10
  40. package/dist/index.cjs +4 -0
  41. package/dist/index.mjs +2 -0
  42. package/dist/object/deepDiscriminate.cjs +15 -0
  43. package/dist/object/deepDiscriminate.d.ts +11 -0
  44. package/dist/object/deepDiscriminate.mjs +13 -0
  45. package/dist/object/discriminate.cjs +4 -5
  46. package/dist/object/discriminate.d.ts +6 -10
  47. package/dist/object/discriminate.mjs +4 -5
  48. package/dist/object/index.cjs +4 -2
  49. package/dist/object/index.d.ts +2 -1
  50. package/dist/object/index.mjs +2 -1
  51. package/dist/string/index.cjs +2 -0
  52. package/dist/string/index.d.ts +1 -0
  53. package/dist/string/index.mjs +1 -0
  54. package/dist/string/length.cjs +7 -0
  55. package/dist/string/length.d.ts +2 -0
  56. package/dist/string/length.mjs +5 -0
  57. package/dist/string/types/index.d.ts +1 -0
  58. package/dist/string/types/stringLength.d.ts +2 -0
  59. package/package.json +1 -1
@@ -19,7 +19,7 @@ function group(...args) {
19
19
  return (array) => group(array, theFunction);
20
20
  }
21
21
  const [array, theFunction] = args;
22
- return reduce.reduce(array, ({ from }) => from({}), ({ index, element, lastValue, nextWithObject }) => {
22
+ return reduce.reduce(array, reduce.reduceFrom({}), ({ index, element, lastValue, nextWithObject }) => {
23
23
  const { group, value } = theFunction(element, {
24
24
  index,
25
25
  output: groupOutput,
@@ -1,4 +1,4 @@
1
- import { reduce } from './reduce.mjs';
1
+ import { reduce, reduceFrom } from './reduce.mjs';
2
2
 
3
3
  function groupOutput(...args) {
4
4
  if (args.length === 1) {
@@ -17,7 +17,7 @@ function group(...args) {
17
17
  return (array) => group(array, theFunction);
18
18
  }
19
19
  const [array, theFunction] = args;
20
- return reduce(array, ({ from }) => from({}), ({ index, element, lastValue, nextWithObject }) => {
20
+ return reduce(array, reduceFrom({}), ({ index, element, lastValue, nextWithObject }) => {
21
21
  const { group, value } = theFunction(element, {
22
22
  index,
23
23
  output: groupOutput,
@@ -48,6 +48,7 @@ var _delete$1 = require('./findAndSplice/delete.cjs');
48
48
  var insert$1 = require('./findAndSplice/insert.cjs');
49
49
  var replace$1 = require('./findAndSplice/replace.cjs');
50
50
  var sum = require('./sum.cjs');
51
+ var length = require('./length.cjs');
51
52
 
52
53
 
53
54
 
@@ -64,6 +65,7 @@ exports.minElements = minElements.minElements;
64
65
  exports.minOf = minOf.minOf;
65
66
  exports.push = push.push;
66
67
  exports.reduce = reduce.reduce;
68
+ exports.reduceFrom = reduce.reduceFrom;
67
69
  exports.some = some.some;
68
70
  exports.sort = _default.sort;
69
71
  exports.sortNumber = number.sortNumber;
@@ -100,3 +102,4 @@ exports.findAndSpliceDelete = _delete$1.findAndSpliceDelete;
100
102
  exports.findAndSpliceInsert = insert$1.findAndSpliceInsert;
101
103
  exports.findAndSpliceReplace = replace$1.findAndSpliceReplace;
102
104
  exports.sum = sum.sum;
105
+ exports.length = length.length;
@@ -38,3 +38,4 @@ export * from "./copyWithin";
38
38
  export * from "./findAndReplace";
39
39
  export * from "./findAndSplice";
40
40
  export * from "./sum";
41
+ export * from "./length";
@@ -9,7 +9,7 @@ export { maxOf } from './maxOf.mjs';
9
9
  export { minElements } from './minElements.mjs';
10
10
  export { minOf } from './minOf.mjs';
11
11
  export { push } from './push.mjs';
12
- export { reduce } from './reduce.mjs';
12
+ export { reduce, reduceFrom } from './reduce.mjs';
13
13
  export { some } from './some.mjs';
14
14
  export { sort } from './sort/default.mjs';
15
15
  export { sortNumber } from './sort/number.mjs';
@@ -46,3 +46,4 @@ export { findAndSpliceDelete } from './findAndSplice/delete.mjs';
46
46
  export { findAndSpliceInsert } from './findAndSplice/insert.mjs';
47
47
  export { findAndSpliceReplace } from './findAndSplice/replace.mjs';
48
48
  export { sum } from './sum.mjs';
49
+ export { length } from './length.mjs';
@@ -0,0 +1,7 @@
1
+ 'use strict';
2
+
3
+ function length(input) {
4
+ return input.length;
5
+ }
6
+
7
+ exports.length = length;
@@ -0,0 +1 @@
1
+ export declare function length<GenericInput extends readonly unknown[]>(input: GenericInput): GenericInput["length"];
@@ -0,0 +1,5 @@
1
+ function length(input) {
2
+ return input.length;
3
+ }
4
+
5
+ export { length };
@@ -6,18 +6,16 @@ var unwrap = require('../common/unwrap.cjs');
6
6
  var override = require('../object/override.cjs');
7
7
 
8
8
  const arrayReduceFromKind = kind.createKind("array-reduce-from");
9
- const getStartValueParams = {
10
- from: (value) => arrayReduceFromKind.addTo(wrapValue.wrapValue(value), null),
11
- };
9
+ function reduceFrom(value) {
10
+ return arrayReduceFromKind.addTo(wrapValue.wrapValue(value));
11
+ }
12
12
  function reduce(...args) {
13
13
  if (args.length === 2) {
14
- const [getStartValue, theFunction] = args;
15
- return (array) => reduce(array, getStartValue, theFunction);
14
+ const [fromValue, theFunction] = args;
15
+ return (array) => reduce(array, fromValue, theFunction);
16
16
  }
17
- const [array, getStartValue, theFunction] = args;
18
- let lastValue = unwrap.unwrap(typeof getStartValue === "function"
19
- ? getStartValue(getStartValueParams)
20
- : getStartValue);
17
+ const [array, fromValue, theFunction] = args;
18
+ let lastValue = unwrap.unwrap(fromValue);
21
19
  for (let index = 0; index < array.length; index++) {
22
20
  const element = array[index];
23
21
  const result = theFunction({
@@ -39,3 +37,4 @@ function reduce(...args) {
39
37
  }
40
38
 
41
39
  exports.reduce = reduce;
40
+ exports.reduceFrom = reduceFrom;
@@ -8,7 +8,7 @@ interface ArrayReduceNext<GenericOutput extends unknown> {
8
8
  interface ArrayReduceExit<GenericOutput extends unknown> {
9
9
  "-exit": GenericOutput;
10
10
  }
11
- type ExitOrNext<GenericOutput extends unknown = unknown> = ArrayReduceExit<GenericOutput> | ArrayReduceNext<GenericOutput>;
11
+ export type ArrayReduceExitOrNext<GenericOutput extends unknown = unknown> = ArrayReduceExit<GenericOutput> | ArrayReduceNext<GenericOutput>;
12
12
  export interface ArrayReduceFunctionParams<GenericElement extends unknown = unknown, GenericOutput extends unknown = unknown> {
13
13
  element: GenericElement;
14
14
  index: number;
@@ -20,11 +20,9 @@ export interface ArrayReduceFunctionParams<GenericElement extends unknown = unkn
20
20
  declare const arrayReduceFromKind: import("../common").KindHandler<import("../common").KindDefinition<"array-reduce-from", unknown>>;
21
21
  export interface ArrayReduceFromResult<GenericValue extends unknown = unknown> extends Kind<typeof arrayReduceFromKind.definition>, WrappedValue<GenericValue> {
22
22
  }
23
- interface GetStartValueParams {
24
- from<GenericValue extends unknown>(value: GenericValue): ArrayReduceFromResult<GenericValue>;
25
- }
26
- export declare function reduce<GenericElement extends unknown, GenericReduceFrom extends number | string | bigint | boolean>(startValue: GenericReduceFrom, theFunction: (params: ArrayReduceFunctionParams<GenericElement, ToLargeEnsemble<GenericReduceFrom>>) => ExitOrNext<ToLargeEnsemble<GenericReduceFrom>>): (array: readonly GenericElement[]) => ToLargeEnsemble<GenericReduceFrom>;
27
- export declare function reduce<GenericElement extends unknown, GenericReduceFrom extends ArrayReduceFromResult>(getStartValue: (params: GetStartValueParams) => GenericReduceFrom, theFunction: (params: ArrayReduceFunctionParams<GenericElement, Unwrap<GenericReduceFrom>>) => ExitOrNext<Unwrap<GenericReduceFrom>>): (array: readonly GenericElement[]) => Unwrap<GenericReduceFrom>;
28
- export declare function reduce<GenericElement extends unknown, GenericReduceFrom extends number | string | bigint | boolean>(array: readonly GenericElement[], startValue: GenericReduceFrom, theFunction: (params: ArrayReduceFunctionParams<GenericElement, ToLargeEnsemble<GenericReduceFrom>>) => ExitOrNext<ToLargeEnsemble<GenericReduceFrom>>): ToLargeEnsemble<GenericReduceFrom>;
29
- export declare function reduce<GenericElement extends unknown, GenericReduceFrom extends ArrayReduceFromResult>(array: readonly GenericElement[], getStartValue: (params: GetStartValueParams) => GenericReduceFrom, theFunction: (params: ArrayReduceFunctionParams<GenericElement, Unwrap<GenericReduceFrom>>) => ExitOrNext<Unwrap<GenericReduceFrom>>): Unwrap<GenericReduceFrom>;
23
+ export declare function reduceFrom<GenericValue extends unknown>(value: GenericValue): ArrayReduceFromResult<GenericValue>;
24
+ export type ArrayEligibleReduceFromValue = number | string | bigint | boolean | ArrayReduceFromResult;
25
+ export type ArrayReduceFromValue<GenericValue extends ArrayEligibleReduceFromValue> = GenericValue extends ArrayReduceFromResult ? Unwrap<GenericValue> : ToLargeEnsemble<GenericValue>;
26
+ export declare function reduce<GenericElement extends unknown, GenericReduceFrom extends ArrayEligibleReduceFromValue>(startValue: GenericReduceFrom, theFunction: (params: ArrayReduceFunctionParams<GenericElement, ArrayReduceFromValue<GenericReduceFrom>>) => ArrayReduceExitOrNext<ArrayReduceFromValue<GenericReduceFrom>>): (array: readonly GenericElement[]) => ArrayReduceFromValue<GenericReduceFrom>;
27
+ export declare function reduce<GenericElement extends unknown, GenericReduceFrom extends number | string | bigint | boolean | ArrayReduceFromResult>(array: readonly GenericElement[], startValue: GenericReduceFrom, theFunction: (params: ArrayReduceFunctionParams<GenericElement, ArrayReduceFromValue<GenericReduceFrom>>) => ArrayReduceExitOrNext<ArrayReduceFromValue<GenericReduceFrom>>): ArrayReduceFromValue<GenericReduceFrom>;
30
28
  export {};
@@ -4,18 +4,16 @@ import { unwrap } from '../common/unwrap.mjs';
4
4
  import { override } from '../object/override.mjs';
5
5
 
6
6
  const arrayReduceFromKind = createKind("array-reduce-from");
7
- const getStartValueParams = {
8
- from: (value) => arrayReduceFromKind.addTo(wrapValue(value), null),
9
- };
7
+ function reduceFrom(value) {
8
+ return arrayReduceFromKind.addTo(wrapValue(value));
9
+ }
10
10
  function reduce(...args) {
11
11
  if (args.length === 2) {
12
- const [getStartValue, theFunction] = args;
13
- return (array) => reduce(array, getStartValue, theFunction);
12
+ const [fromValue, theFunction] = args;
13
+ return (array) => reduce(array, fromValue, theFunction);
14
14
  }
15
- const [array, getStartValue, theFunction] = args;
16
- let lastValue = unwrap(typeof getStartValue === "function"
17
- ? getStartValue(getStartValueParams)
18
- : getStartValue);
15
+ const [array, fromValue, theFunction] = args;
16
+ let lastValue = unwrap(fromValue);
19
17
  for (let index = 0; index < array.length; index++) {
20
18
  const element = array[index];
21
19
  const result = theFunction({
@@ -36,4 +34,4 @@ function reduce(...args) {
36
34
  return lastValue;
37
35
  }
38
36
 
39
- export { reduce };
37
+ export { reduce, reduceFrom };
@@ -1,23 +1,15 @@
1
1
  'use strict';
2
2
 
3
- var kind = require('../common/kind.cjs');
4
- var wrapValue = require('../common/wrapValue.cjs');
5
3
  var unwrap = require('../common/unwrap.cjs');
6
4
  var override = require('../object/override.cjs');
7
5
 
8
- const arrayReduceRightFromKind = kind.createKind("array-reduce-right-from");
9
- const getStartValueParams = {
10
- from: (value) => arrayReduceRightFromKind.addTo(wrapValue.wrapValue(value), null),
11
- };
12
6
  function reduceRight(...args) {
13
7
  if (args.length === 2) {
14
- const [getStartValue, theFunction] = args;
15
- return (array) => reduceRight(array, getStartValue, theFunction);
8
+ const [fromValue, theFunction] = args;
9
+ return (array) => reduceRight(array, fromValue, theFunction);
16
10
  }
17
- const [array, getStartValue, theFunction] = args;
18
- let lastValue = unwrap.unwrap(typeof getStartValue === "function"
19
- ? getStartValue(getStartValueParams)
20
- : getStartValue);
11
+ const [array, fromValue, theFunction] = args;
12
+ let lastValue = unwrap.unwrap(fromValue);
21
13
  for (let index = array.length - 1; index >= 0; index--) {
22
14
  const element = array[index];
23
15
  const result = theFunction({
@@ -1,30 +1,3 @@
1
- import { type Kind } from "../common/kind";
2
- import { type WrappedValue } from "../common/wrapValue";
3
- import { type Unwrap } from "../common/unwrap";
4
- import { type ToLargeEnsemble } from "../common";
5
- interface ArrayReduceRightNext<GenericOutput extends unknown> {
6
- "-next": GenericOutput;
7
- }
8
- interface ArrayReduceRightExit<GenericOutput extends unknown> {
9
- "-exit": GenericOutput;
10
- }
11
- type ExitOrNextRight<GenericOutput extends unknown = unknown> = ArrayReduceRightExit<GenericOutput> | ArrayReduceRightNext<GenericOutput>;
12
- export interface ArrayReduceRightFunctionParams<GenericElement extends unknown = unknown, GenericOutput extends unknown = unknown> {
13
- element: GenericElement;
14
- index: number;
15
- lastValue: GenericOutput;
16
- nextWithObject: GenericOutput extends object ? (object1: GenericOutput, object2: Partial<GenericOutput>) => ArrayReduceRightNext<GenericOutput> : undefined;
17
- next(output: GenericOutput): ArrayReduceRightNext<GenericOutput>;
18
- exit(output: GenericOutput): ArrayReduceRightExit<GenericOutput>;
19
- }
20
- declare const arrayReduceRightFromKind: import("../common").KindHandler<import("../common").KindDefinition<"array-reduce-right-from", unknown>>;
21
- export interface ArrayReduceRightFromResult<GenericValue extends unknown = unknown> extends Kind<typeof arrayReduceRightFromKind.definition>, WrappedValue<GenericValue> {
22
- }
23
- interface GetStartValueParams {
24
- from<GenericValue extends unknown>(value: GenericValue): ArrayReduceRightFromResult<GenericValue>;
25
- }
26
- export declare function reduceRight<GenericElement extends unknown, GenericReduceFrom extends number | string | bigint | boolean>(startValue: GenericReduceFrom, theFunction: (params: ArrayReduceRightFunctionParams<GenericElement, ToLargeEnsemble<GenericReduceFrom>>) => ExitOrNextRight<ToLargeEnsemble<GenericReduceFrom>>): (array: readonly GenericElement[]) => ToLargeEnsemble<GenericReduceFrom>;
27
- export declare function reduceRight<GenericElement extends unknown, GenericReduceFrom extends ArrayReduceRightFromResult>(getStartValue: (params: GetStartValueParams) => GenericReduceFrom, theFunction: (params: ArrayReduceRightFunctionParams<GenericElement, Unwrap<GenericReduceFrom>>) => ExitOrNextRight<Unwrap<GenericReduceFrom>>): (array: readonly GenericElement[]) => Unwrap<GenericReduceFrom>;
28
- export declare function reduceRight<GenericElement extends unknown, GenericReduceFrom extends number | string | bigint | boolean>(array: readonly GenericElement[], startValue: GenericReduceFrom, theFunction: (params: ArrayReduceRightFunctionParams<GenericElement, ToLargeEnsemble<GenericReduceFrom>>) => ExitOrNextRight<ToLargeEnsemble<GenericReduceFrom>>): ToLargeEnsemble<GenericReduceFrom>;
29
- export declare function reduceRight<GenericElement extends unknown, GenericReduceFrom extends ArrayReduceRightFromResult>(array: readonly GenericElement[], getStartValue: (params: GetStartValueParams) => GenericReduceFrom, theFunction: (params: ArrayReduceRightFunctionParams<GenericElement, Unwrap<GenericReduceFrom>>) => ExitOrNextRight<Unwrap<GenericReduceFrom>>): Unwrap<GenericReduceFrom>;
30
- export {};
1
+ import { type ArrayReduceFunctionParams, type ArrayReduceFromResult, type ArrayReduceExitOrNext, type ArrayReduceFromValue } from "./reduce";
2
+ export declare function reduceRight<GenericElement extends unknown, GenericReduceFrom extends number | string | bigint | boolean | ArrayReduceFromResult>(startValue: GenericReduceFrom, theFunction: (params: ArrayReduceFunctionParams<GenericElement, ArrayReduceFromValue<GenericReduceFrom>>) => ArrayReduceExitOrNext<ArrayReduceFromValue<GenericReduceFrom>>): (array: readonly GenericElement[]) => ArrayReduceFromValue<GenericReduceFrom>;
3
+ export declare function reduceRight<GenericElement extends unknown, GenericReduceFrom extends number | string | bigint | boolean | ArrayReduceFromResult>(array: readonly GenericElement[], startValue: GenericReduceFrom, theFunction: (params: ArrayReduceFunctionParams<GenericElement, ArrayReduceFromValue<GenericReduceFrom>>) => ArrayReduceExitOrNext<ArrayReduceFromValue<GenericReduceFrom>>): ArrayReduceFromValue<GenericReduceFrom>;
@@ -1,21 +1,13 @@
1
- import { createKind } from '../common/kind.mjs';
2
- import { wrapValue } from '../common/wrapValue.mjs';
3
1
  import { unwrap } from '../common/unwrap.mjs';
4
2
  import { override } from '../object/override.mjs';
5
3
 
6
- const arrayReduceRightFromKind = createKind("array-reduce-right-from");
7
- const getStartValueParams = {
8
- from: (value) => arrayReduceRightFromKind.addTo(wrapValue(value), null),
9
- };
10
4
  function reduceRight(...args) {
11
5
  if (args.length === 2) {
12
- const [getStartValue, theFunction] = args;
13
- return (array) => reduceRight(array, getStartValue, theFunction);
6
+ const [fromValue, theFunction] = args;
7
+ return (array) => reduceRight(array, fromValue, theFunction);
14
8
  }
15
- const [array, getStartValue, theFunction] = args;
16
- let lastValue = unwrap(typeof getStartValue === "function"
17
- ? getStartValue(getStartValueParams)
18
- : getStartValue);
9
+ const [array, fromValue, theFunction] = args;
10
+ let lastValue = unwrap(fromValue);
19
11
  for (let index = array.length - 1; index >= 0; index--) {
20
12
  const element = array[index];
21
13
  const result = theFunction({
@@ -6,3 +6,4 @@ export * from "./tupleHasSpread";
6
6
  export * from "./mergeUnionTuple";
7
7
  export * from "./extractTuple";
8
8
  export * from "./excludeTuple";
9
+ export * from "./createTuple";
@@ -0,0 +1,17 @@
1
+ 'use strict';
2
+
3
+ function and(...args) {
4
+ if (args.length === 1) {
5
+ const [predicatedList] = args;
6
+ return (input) => and(input, predicatedList);
7
+ }
8
+ const [input, predicatedList] = args;
9
+ for (const predicate of predicatedList) {
10
+ if (!predicate(input)) {
11
+ return false;
12
+ }
13
+ }
14
+ return true;
15
+ }
16
+
17
+ exports.and = and;
@@ -0,0 +1,15 @@
1
+ function and(...args) {
2
+ if (args.length === 1) {
3
+ const [predicatedList] = args;
4
+ return (input) => and(input, predicatedList);
5
+ }
6
+ const [input, predicatedList] = args;
7
+ for (const predicate of predicatedList) {
8
+ if (!predicate(input)) {
9
+ return false;
10
+ }
11
+ }
12
+ return true;
13
+ }
14
+
15
+ export { and };
@@ -30,3 +30,5 @@ export * from "./whenNot";
30
30
  export * from "./equal";
31
31
  export * from "./not";
32
32
  export * from "./isType";
33
+ export * from "./and";
34
+ export * from "./or";
@@ -0,0 +1,17 @@
1
+ 'use strict';
2
+
3
+ function or(...args) {
4
+ if (args.length === 1) {
5
+ const [predicatedList] = args;
6
+ return (input) => or(input, predicatedList);
7
+ }
8
+ const [input, predicatedList] = args;
9
+ for (const predicate of predicatedList) {
10
+ if (predicate(input)) {
11
+ return true;
12
+ }
13
+ }
14
+ return false;
15
+ }
16
+
17
+ exports.or = or;
@@ -0,0 +1,15 @@
1
+ function or(...args) {
2
+ if (args.length === 1) {
3
+ const [predicatedList] = args;
4
+ return (input) => or(input, predicatedList);
5
+ }
6
+ const [input, predicatedList] = args;
7
+ for (const predicate of predicatedList) {
8
+ if (predicate(input)) {
9
+ return true;
10
+ }
11
+ }
12
+ return false;
13
+ }
14
+
15
+ export { or };
@@ -2,3 +2,4 @@ import { type IsEqual } from "../../common";
2
2
  import { type BoolFalsyValue, type EitherBoolFalsy } from "./falsy";
3
3
  import { type EitherBoolTruthy } from "./truthy";
4
4
  export declare function bool<const GenericValue extends unknown = undefined>(value: GenericValue): GenericValue extends BoolFalsyValue ? EitherBoolFalsy<GenericValue> : IsEqual<GenericValue, number> extends true ? EitherBoolTruthy<GenericValue> | EitherBoolFalsy<0> : IsEqual<GenericValue, string> extends true ? EitherBoolTruthy<GenericValue> | EitherBoolFalsy<""> : EitherBoolTruthy<GenericValue>;
5
+ export type Bool<GenericValue extends unknown> = EitherBoolTruthy<GenericValue> | EitherBoolFalsy;
@@ -21,5 +21,5 @@ export declare class Future<const GenericValue extends unknown = unknown> extend
21
21
  static instanceof<GenericValue extends unknown>(value: GenericValue): value is Extract<GenericValue, Future<any>>;
22
22
  static all<const GenericValue extends unknown, GenericArray extends readonly GenericValue[] | []>(values: GenericArray): FutureEitherAllResult<GenericArray>;
23
23
  }
24
- export declare function future<const GenericEither extends unknown>(value: GenericEither): Future<GenericEither>;
24
+ export declare function future<GenericEither extends AnyValue>(value: GenericEither): Future<GenericEither>;
25
25
  export {};
@@ -1,3 +1,4 @@
1
1
  import { type EitherNullableEmpty } from "./empty";
2
2
  import { type EitherNullableFilled } from "./filled";
3
3
  export declare function nullable<const GenericValue extends unknown = null>(value: GenericValue): GenericValue extends null ? EitherNullableEmpty : EitherNullableFilled<GenericValue>;
4
+ export type Nullable<GenericValue extends unknown> = EitherNullableFilled<GenericValue> | EitherNullableEmpty;
@@ -1,3 +1,4 @@
1
1
  import { type EitherNullishEmpty, type NullishValue } from "./empty";
2
2
  import { type EitherNullishFilled } from "./filled";
3
3
  export declare function nullish<const GenericValue extends unknown = undefined>(value: GenericValue): GenericValue extends NullishValue ? EitherNullishEmpty<GenericValue> : EitherNullishFilled<GenericValue>;
4
+ export type Nullish<GenericValue extends unknown> = EitherNullishFilled<GenericValue> | EitherNullishEmpty;
@@ -1,3 +1,4 @@
1
1
  import { type EitherOptionalEmpty } from "./empty";
2
2
  import { type EitherOptionalFilled } from "./filled";
3
3
  export declare function optional<const GenericValue extends unknown = undefined>(value: GenericValue): GenericValue extends undefined ? EitherOptionalEmpty : EitherOptionalFilled<GenericValue>;
4
+ export type Optional<GenericValue extends unknown> = EitherOptionalFilled<GenericValue> | EitherOptionalEmpty;
@@ -13,15 +13,19 @@ function rightAsyncPipe(input, ...pipes) {
13
13
  return awaitedInput;
14
14
  }
15
15
  let acc = is$1.isRight(awaitedInput)
16
- ? awaitedInput
17
- : success.success(awaitedInput);
16
+ ? unwrap.unwrap(awaitedInput)
17
+ : awaitedInput;
18
18
  for (const pipe of pipes) {
19
- acc = await pipe(unwrap.unwrap(acc));
19
+ acc = await pipe(is$1.isRight(acc)
20
+ ? unwrap.unwrap(acc)
21
+ : acc);
20
22
  if (is.isLeft(acc)) {
21
23
  return acc;
22
24
  }
23
25
  }
24
- return acc;
26
+ return is$1.isRight(acc)
27
+ ? acc
28
+ : success.success(acc);
25
29
  })());
26
30
  }
27
31
 
@@ -3,20 +3,18 @@ import { type EitherLeft } from "../left";
3
3
  import { type MaybeFutureEither } from "../future/maybeFutureEither";
4
4
  import { type Future } from "../future";
5
5
  import { type EitherSuccess } from "./success";
6
- import { type Unwrap, type AnyValue } from "../../common";
6
+ import { type AnyValue, type Unwrap } from "../../common";
7
7
  type Either = EitherRight | EitherLeft;
8
- type EitherOrFutureEither = Either | Future<any>;
9
- export type EitherRightAsyncPipeFunction<GenericInput extends Either = Either, GenericOutput extends EitherOrFutureEither = EitherOrFutureEither> = (input: Unwrap<Extract<GenericInput, EitherRight>>) => GenericOutput;
10
- export type EitherRightAsyncPipeResult<GenericInput extends EitherOrFutureEither, GenericOutputPipes extends EitherOrFutureEither, GenericLastPipe extends EitherOrFutureEither> = Extract<GenericInput | GenericOutputPipes, EitherLeft> | Extract<GenericLastPipe, EitherRight>;
11
- type ToEither<GenericValue extends unknown> = GenericValue extends Either ? GenericValue : EitherSuccess<GenericValue>;
12
- export declare function rightAsyncPipe<GenericInput extends MaybeFutureEither<AnyValue>, GenericOutputPipe1 extends EitherOrFutureEither>(input: GenericInput, pipe1: EitherRightAsyncPipeFunction<ToEither<Awaited<GenericInput>>, GenericOutputPipe1>): Future<Extract<EitherRightAsyncPipeResult<ToEither<Awaited<GenericInput>>, GenericOutputPipe1, GenericOutputPipe1>, any>>;
13
- export declare function rightAsyncPipe<GenericInput extends MaybeFutureEither<AnyValue>, GenericOutputPipe1 extends EitherOrFutureEither, GenericOutputPipe2 extends EitherOrFutureEither>(input: GenericInput, pipe1: EitherRightAsyncPipeFunction<ToEither<Awaited<GenericInput>>, GenericOutputPipe1>, pipe2: EitherRightAsyncPipeFunction<Awaited<GenericOutputPipe1>, GenericOutputPipe2>): Future<Extract<EitherRightAsyncPipeResult<ToEither<Awaited<GenericInput>>, GenericOutputPipe1 | GenericOutputPipe2, GenericOutputPipe2>, any>>;
14
- export declare function rightAsyncPipe<GenericInput extends MaybeFutureEither<AnyValue>, GenericOutputPipe1 extends EitherOrFutureEither, GenericOutputPipe2 extends EitherOrFutureEither, GenericOutputPipe3 extends EitherOrFutureEither>(input: GenericInput, pipe1: EitherRightAsyncPipeFunction<ToEither<Awaited<GenericInput>>, GenericOutputPipe1>, pipe2: EitherRightAsyncPipeFunction<Awaited<GenericOutputPipe1>, GenericOutputPipe2>, pipe3: EitherRightAsyncPipeFunction<Awaited<GenericOutputPipe2>, GenericOutputPipe3>): Future<Extract<EitherRightAsyncPipeResult<ToEither<Awaited<GenericInput>>, GenericOutputPipe1 | GenericOutputPipe2 | GenericOutputPipe3, GenericOutputPipe3>, any>>;
15
- export declare function rightAsyncPipe<GenericInput extends MaybeFutureEither<AnyValue>, GenericOutputPipe1 extends EitherOrFutureEither, GenericOutputPipe2 extends EitherOrFutureEither, GenericOutputPipe3 extends EitherOrFutureEither, GenericOutputPipe4 extends EitherOrFutureEither>(input: GenericInput, pipe1: EitherRightAsyncPipeFunction<ToEither<Awaited<GenericInput>>, GenericOutputPipe1>, pipe2: EitherRightAsyncPipeFunction<Awaited<GenericOutputPipe1>, GenericOutputPipe2>, pipe3: EitherRightAsyncPipeFunction<Awaited<GenericOutputPipe2>, GenericOutputPipe3>, pipe4: EitherRightAsyncPipeFunction<Awaited<GenericOutputPipe3>, GenericOutputPipe4>): Future<Extract<EitherRightAsyncPipeResult<ToEither<Awaited<GenericInput>>, GenericOutputPipe1 | GenericOutputPipe2 | GenericOutputPipe3 | GenericOutputPipe4, GenericOutputPipe4>, any>>;
16
- export declare function rightAsyncPipe<GenericInput extends MaybeFutureEither<AnyValue>, GenericOutputPipe1 extends EitherOrFutureEither, GenericOutputPipe2 extends EitherOrFutureEither, GenericOutputPipe3 extends EitherOrFutureEither, GenericOutputPipe4 extends EitherOrFutureEither, GenericOutputPipe5 extends EitherOrFutureEither>(input: GenericInput, pipe1: EitherRightAsyncPipeFunction<ToEither<Awaited<GenericInput>>, GenericOutputPipe1>, pipe2: EitherRightAsyncPipeFunction<Awaited<GenericOutputPipe1>, GenericOutputPipe2>, pipe3: EitherRightAsyncPipeFunction<Awaited<GenericOutputPipe2>, GenericOutputPipe3>, pipe4: EitherRightAsyncPipeFunction<Awaited<GenericOutputPipe3>, GenericOutputPipe4>, pipe5: EitherRightAsyncPipeFunction<Awaited<GenericOutputPipe4>, GenericOutputPipe5>): Future<Extract<EitherRightAsyncPipeResult<ToEither<Awaited<GenericInput>>, GenericOutputPipe1 | GenericOutputPipe2 | GenericOutputPipe3 | GenericOutputPipe4 | GenericOutputPipe5, GenericOutputPipe5>, any>>;
17
- export declare function rightAsyncPipe<GenericInput extends MaybeFutureEither<AnyValue>, GenericOutputPipe1 extends EitherOrFutureEither, GenericOutputPipe2 extends EitherOrFutureEither, GenericOutputPipe3 extends EitherOrFutureEither, GenericOutputPipe4 extends EitherOrFutureEither, GenericOutputPipe5 extends EitherOrFutureEither, GenericOutputPipe6 extends EitherOrFutureEither>(input: GenericInput, pipe1: EitherRightAsyncPipeFunction<ToEither<Awaited<GenericInput>>, GenericOutputPipe1>, pipe2: EitherRightAsyncPipeFunction<Awaited<GenericOutputPipe1>, GenericOutputPipe2>, pipe3: EitherRightAsyncPipeFunction<Awaited<GenericOutputPipe2>, GenericOutputPipe3>, pipe4: EitherRightAsyncPipeFunction<Awaited<GenericOutputPipe3>, GenericOutputPipe4>, pipe5: EitherRightAsyncPipeFunction<Awaited<GenericOutputPipe4>, GenericOutputPipe5>, pipe6: EitherRightAsyncPipeFunction<Awaited<GenericOutputPipe5>, GenericOutputPipe6>): Future<Extract<EitherRightAsyncPipeResult<ToEither<Awaited<GenericInput>>, GenericOutputPipe1 | GenericOutputPipe2 | GenericOutputPipe3 | GenericOutputPipe4 | GenericOutputPipe5 | GenericOutputPipe6, GenericOutputPipe6>, any>>;
18
- export declare function rightAsyncPipe<GenericInput extends MaybeFutureEither<AnyValue>, GenericOutputPipe1 extends EitherOrFutureEither, GenericOutputPipe2 extends EitherOrFutureEither, GenericOutputPipe3 extends EitherOrFutureEither, GenericOutputPipe4 extends EitherOrFutureEither, GenericOutputPipe5 extends EitherOrFutureEither, GenericOutputPipe6 extends EitherOrFutureEither, GenericOutputPipe7 extends EitherOrFutureEither>(input: GenericInput, pipe1: EitherRightAsyncPipeFunction<ToEither<Awaited<GenericInput>>, GenericOutputPipe1>, pipe2: EitherRightAsyncPipeFunction<Awaited<GenericOutputPipe1>, GenericOutputPipe2>, pipe3: EitherRightAsyncPipeFunction<Awaited<GenericOutputPipe2>, GenericOutputPipe3>, pipe4: EitherRightAsyncPipeFunction<Awaited<GenericOutputPipe3>, GenericOutputPipe4>, pipe5: EitherRightAsyncPipeFunction<Awaited<GenericOutputPipe4>, GenericOutputPipe5>, pipe6: EitherRightAsyncPipeFunction<Awaited<GenericOutputPipe5>, GenericOutputPipe6>, pipe7: EitherRightAsyncPipeFunction<Awaited<GenericOutputPipe6>, GenericOutputPipe7>): Future<Extract<EitherRightAsyncPipeResult<ToEither<Awaited<GenericInput>>, GenericOutputPipe1 | GenericOutputPipe2 | GenericOutputPipe3 | GenericOutputPipe4 | GenericOutputPipe5 | GenericOutputPipe6 | GenericOutputPipe7, GenericOutputPipe7>, any>>;
19
- export declare function rightAsyncPipe<GenericInput extends MaybeFutureEither<AnyValue>, GenericOutputPipe1 extends EitherOrFutureEither, GenericOutputPipe2 extends EitherOrFutureEither, GenericOutputPipe3 extends EitherOrFutureEither, GenericOutputPipe4 extends EitherOrFutureEither, GenericOutputPipe5 extends EitherOrFutureEither, GenericOutputPipe6 extends EitherOrFutureEither, GenericOutputPipe7 extends EitherOrFutureEither, GenericOutputPipe8 extends EitherOrFutureEither>(input: GenericInput, pipe1: EitherRightAsyncPipeFunction<ToEither<Awaited<GenericInput>>, GenericOutputPipe1>, pipe2: EitherRightAsyncPipeFunction<Awaited<GenericOutputPipe1>, GenericOutputPipe2>, pipe3: EitherRightAsyncPipeFunction<Awaited<GenericOutputPipe2>, GenericOutputPipe3>, pipe4: EitherRightAsyncPipeFunction<Awaited<GenericOutputPipe3>, GenericOutputPipe4>, pipe5: EitherRightAsyncPipeFunction<Awaited<GenericOutputPipe4>, GenericOutputPipe5>, pipe6: EitherRightAsyncPipeFunction<Awaited<GenericOutputPipe5>, GenericOutputPipe6>, pipe7: EitherRightAsyncPipeFunction<Awaited<GenericOutputPipe6>, GenericOutputPipe7>, pipe8: EitherRightAsyncPipeFunction<Awaited<GenericOutputPipe7>, GenericOutputPipe8>): Future<Extract<EitherRightAsyncPipeResult<ToEither<Awaited<GenericInput>>, GenericOutputPipe1 | GenericOutputPipe2 | GenericOutputPipe3 | GenericOutputPipe4 | GenericOutputPipe5 | GenericOutputPipe6 | GenericOutputPipe7 | GenericOutputPipe8, GenericOutputPipe8>, any>>;
20
- export declare function rightAsyncPipe<GenericInput extends MaybeFutureEither<AnyValue>, GenericOutputPipe1 extends EitherOrFutureEither, GenericOutputPipe2 extends EitherOrFutureEither, GenericOutputPipe3 extends EitherOrFutureEither, GenericOutputPipe4 extends EitherOrFutureEither, GenericOutputPipe5 extends EitherOrFutureEither, GenericOutputPipe6 extends EitherOrFutureEither, GenericOutputPipe7 extends EitherOrFutureEither, GenericOutputPipe8 extends EitherOrFutureEither, GenericOutputPipe9 extends EitherOrFutureEither>(input: GenericInput, pipe1: EitherRightAsyncPipeFunction<ToEither<Awaited<GenericInput>>, GenericOutputPipe1>, pipe2: EitherRightAsyncPipeFunction<Awaited<GenericOutputPipe1>, GenericOutputPipe2>, pipe3: EitherRightAsyncPipeFunction<Awaited<GenericOutputPipe2>, GenericOutputPipe3>, pipe4: EitherRightAsyncPipeFunction<Awaited<GenericOutputPipe3>, GenericOutputPipe4>, pipe5: EitherRightAsyncPipeFunction<Awaited<GenericOutputPipe4>, GenericOutputPipe5>, pipe6: EitherRightAsyncPipeFunction<Awaited<GenericOutputPipe5>, GenericOutputPipe6>, pipe7: EitherRightAsyncPipeFunction<Awaited<GenericOutputPipe6>, GenericOutputPipe7>, pipe8: EitherRightAsyncPipeFunction<Awaited<GenericOutputPipe7>, GenericOutputPipe8>, pipe9: EitherRightAsyncPipeFunction<Awaited<GenericOutputPipe8>, GenericOutputPipe9>): Future<Extract<EitherRightAsyncPipeResult<ToEither<Awaited<GenericInput>>, GenericOutputPipe1 | GenericOutputPipe2 | GenericOutputPipe3 | GenericOutputPipe4 | GenericOutputPipe5 | GenericOutputPipe6 | GenericOutputPipe7 | GenericOutputPipe8 | GenericOutputPipe9, GenericOutputPipe9>, any>>;
21
- export declare function rightAsyncPipe<GenericInput extends MaybeFutureEither<AnyValue>, GenericOutputPipe1 extends EitherOrFutureEither, GenericOutputPipe2 extends EitherOrFutureEither, GenericOutputPipe3 extends EitherOrFutureEither, GenericOutputPipe4 extends EitherOrFutureEither, GenericOutputPipe5 extends EitherOrFutureEither, GenericOutputPipe6 extends EitherOrFutureEither, GenericOutputPipe7 extends EitherOrFutureEither, GenericOutputPipe8 extends EitherOrFutureEither, GenericOutputPipe9 extends EitherOrFutureEither, GenericOutputPipe10 extends EitherOrFutureEither>(input: GenericInput, pipe1: EitherRightAsyncPipeFunction<ToEither<Awaited<GenericInput>>, GenericOutputPipe1>, pipe2: EitherRightAsyncPipeFunction<Awaited<GenericOutputPipe1>, GenericOutputPipe2>, pipe3: EitherRightAsyncPipeFunction<Awaited<GenericOutputPipe2>, GenericOutputPipe3>, pipe4: EitherRightAsyncPipeFunction<Awaited<GenericOutputPipe3>, GenericOutputPipe4>, pipe5: EitherRightAsyncPipeFunction<Awaited<GenericOutputPipe4>, GenericOutputPipe5>, pipe6: EitherRightAsyncPipeFunction<Awaited<GenericOutputPipe5>, GenericOutputPipe6>, pipe7: EitherRightAsyncPipeFunction<Awaited<GenericOutputPipe6>, GenericOutputPipe7>, pipe8: EitherRightAsyncPipeFunction<Awaited<GenericOutputPipe7>, GenericOutputPipe8>, pipe9: EitherRightAsyncPipeFunction<Awaited<GenericOutputPipe8>, GenericOutputPipe9>, pipe10: EitherRightAsyncPipeFunction<Awaited<GenericOutputPipe9>, GenericOutputPipe10>): Future<Extract<EitherRightAsyncPipeResult<ToEither<Awaited<GenericInput>>, GenericOutputPipe1 | GenericOutputPipe2 | GenericOutputPipe3 | GenericOutputPipe4 | GenericOutputPipe5 | GenericOutputPipe6 | GenericOutputPipe7 | GenericOutputPipe8 | GenericOutputPipe9 | GenericOutputPipe10, GenericOutputPipe10>, any>>;
8
+ export type EitherRightAsyncPipeFunction<GenericInput extends AnyValue = AnyValue, GenericOutput extends MaybeFutureEither<AnyValue> = MaybeFutureEither<AnyValue>> = (input: Awaited<GenericInput> extends infer InferredInput extends Either ? Unwrap<Exclude<Awaited<InferredInput>, EitherLeft>> : Exclude<Awaited<GenericInput>, Either>) => GenericOutput;
9
+ export type EitherRightAsyncPipeResult<GenericPipeOutputs extends AnyValue, GenericLastPipeOutput extends AnyValue> = Extract<Awaited<GenericPipeOutputs>, EitherLeft> | Exclude<Awaited<GenericLastPipeOutput> extends Either ? Awaited<GenericLastPipeOutput> : EitherSuccess<Awaited<GenericLastPipeOutput>>, EitherLeft>;
10
+ export declare function rightAsyncPipe<GenericInput extends MaybeFutureEither<AnyValue>, GenericOutputPipe1 extends MaybeFutureEither<AnyValue>>(input: GenericInput, pipe1: EitherRightAsyncPipeFunction<GenericInput, GenericOutputPipe1>): Future<Extract<EitherRightAsyncPipeResult<GenericInput | GenericOutputPipe1, GenericOutputPipe1>, any>>;
11
+ export declare function rightAsyncPipe<GenericInput extends MaybeFutureEither<AnyValue>, GenericOutputPipe1 extends MaybeFutureEither<AnyValue>, GenericOutputPipe2 extends MaybeFutureEither<AnyValue>>(input: GenericInput, pipe1: EitherRightAsyncPipeFunction<GenericInput, GenericOutputPipe1>, pipe2: EitherRightAsyncPipeFunction<GenericOutputPipe1, GenericOutputPipe2>): Future<Extract<EitherRightAsyncPipeResult<GenericInput | GenericOutputPipe1 | GenericOutputPipe2, GenericOutputPipe2>, any>>;
12
+ export declare function rightAsyncPipe<GenericInput extends MaybeFutureEither<AnyValue>, GenericOutputPipe1 extends MaybeFutureEither<AnyValue>, GenericOutputPipe2 extends MaybeFutureEither<AnyValue>, GenericOutputPipe3 extends MaybeFutureEither<AnyValue>>(input: GenericInput, pipe1: EitherRightAsyncPipeFunction<GenericInput, GenericOutputPipe1>, pipe2: EitherRightAsyncPipeFunction<GenericOutputPipe1, GenericOutputPipe2>, pipe3: EitherRightAsyncPipeFunction<GenericOutputPipe2, GenericOutputPipe3>): Future<Extract<EitherRightAsyncPipeResult<GenericInput | GenericOutputPipe1 | GenericOutputPipe2 | GenericOutputPipe3, GenericOutputPipe3>, any>>;
13
+ export declare function rightAsyncPipe<GenericInput extends MaybeFutureEither<AnyValue>, GenericOutputPipe1 extends MaybeFutureEither<AnyValue>, GenericOutputPipe2 extends MaybeFutureEither<AnyValue>, GenericOutputPipe3 extends MaybeFutureEither<AnyValue>, GenericOutputPipe4 extends MaybeFutureEither<AnyValue>>(input: GenericInput, pipe1: EitherRightAsyncPipeFunction<GenericInput, GenericOutputPipe1>, pipe2: EitherRightAsyncPipeFunction<GenericOutputPipe1, GenericOutputPipe2>, pipe3: EitherRightAsyncPipeFunction<GenericOutputPipe2, GenericOutputPipe3>, pipe4: EitherRightAsyncPipeFunction<GenericOutputPipe3, GenericOutputPipe4>): Future<Extract<EitherRightAsyncPipeResult<GenericInput | GenericOutputPipe1 | GenericOutputPipe2 | GenericOutputPipe3 | GenericOutputPipe4, GenericOutputPipe4>, any>>;
14
+ export declare function rightAsyncPipe<GenericInput extends MaybeFutureEither<AnyValue>, GenericOutputPipe1 extends MaybeFutureEither<AnyValue>, GenericOutputPipe2 extends MaybeFutureEither<AnyValue>, GenericOutputPipe3 extends MaybeFutureEither<AnyValue>, GenericOutputPipe4 extends MaybeFutureEither<AnyValue>, GenericOutputPipe5 extends MaybeFutureEither<AnyValue>>(input: GenericInput, pipe1: EitherRightAsyncPipeFunction<GenericInput, GenericOutputPipe1>, pipe2: EitherRightAsyncPipeFunction<GenericOutputPipe1, GenericOutputPipe2>, pipe3: EitherRightAsyncPipeFunction<GenericOutputPipe2, GenericOutputPipe3>, pipe4: EitherRightAsyncPipeFunction<GenericOutputPipe3, GenericOutputPipe4>, pipe5: EitherRightAsyncPipeFunction<GenericOutputPipe4, GenericOutputPipe5>): Future<Extract<EitherRightAsyncPipeResult<GenericInput | GenericOutputPipe1 | GenericOutputPipe2 | GenericOutputPipe3 | GenericOutputPipe4 | GenericOutputPipe5, GenericOutputPipe5>, any>>;
15
+ export declare function rightAsyncPipe<GenericInput extends MaybeFutureEither<AnyValue>, GenericOutputPipe1 extends MaybeFutureEither<AnyValue>, GenericOutputPipe2 extends MaybeFutureEither<AnyValue>, GenericOutputPipe3 extends MaybeFutureEither<AnyValue>, GenericOutputPipe4 extends MaybeFutureEither<AnyValue>, GenericOutputPipe5 extends MaybeFutureEither<AnyValue>, GenericOutputPipe6 extends MaybeFutureEither<AnyValue>>(input: GenericInput, pipe1: EitherRightAsyncPipeFunction<GenericInput, GenericOutputPipe1>, pipe2: EitherRightAsyncPipeFunction<GenericOutputPipe1, GenericOutputPipe2>, pipe3: EitherRightAsyncPipeFunction<GenericOutputPipe2, GenericOutputPipe3>, pipe4: EitherRightAsyncPipeFunction<GenericOutputPipe3, GenericOutputPipe4>, pipe5: EitherRightAsyncPipeFunction<GenericOutputPipe4, GenericOutputPipe5>, pipe6: EitherRightAsyncPipeFunction<GenericOutputPipe5, GenericOutputPipe6>): Future<Extract<EitherRightAsyncPipeResult<GenericInput | GenericOutputPipe1 | GenericOutputPipe2 | GenericOutputPipe3 | GenericOutputPipe4 | GenericOutputPipe5 | GenericOutputPipe6, GenericOutputPipe6>, any>>;
16
+ export declare function rightAsyncPipe<GenericInput extends MaybeFutureEither<AnyValue>, GenericOutputPipe1 extends MaybeFutureEither<AnyValue>, GenericOutputPipe2 extends MaybeFutureEither<AnyValue>, GenericOutputPipe3 extends MaybeFutureEither<AnyValue>, GenericOutputPipe4 extends MaybeFutureEither<AnyValue>, GenericOutputPipe5 extends MaybeFutureEither<AnyValue>, GenericOutputPipe6 extends MaybeFutureEither<AnyValue>, GenericOutputPipe7 extends MaybeFutureEither<AnyValue>>(input: GenericInput, pipe1: EitherRightAsyncPipeFunction<GenericInput, GenericOutputPipe1>, pipe2: EitherRightAsyncPipeFunction<GenericOutputPipe1, GenericOutputPipe2>, pipe3: EitherRightAsyncPipeFunction<GenericOutputPipe2, GenericOutputPipe3>, pipe4: EitherRightAsyncPipeFunction<GenericOutputPipe3, GenericOutputPipe4>, pipe5: EitherRightAsyncPipeFunction<GenericOutputPipe4, GenericOutputPipe5>, pipe6: EitherRightAsyncPipeFunction<GenericOutputPipe5, GenericOutputPipe6>, pipe7: EitherRightAsyncPipeFunction<GenericOutputPipe6, GenericOutputPipe7>): Future<Extract<EitherRightAsyncPipeResult<GenericInput | GenericOutputPipe1 | GenericOutputPipe2 | GenericOutputPipe3 | GenericOutputPipe4 | GenericOutputPipe5 | GenericOutputPipe6 | GenericOutputPipe7, GenericOutputPipe7>, any>>;
17
+ export declare function rightAsyncPipe<GenericInput extends MaybeFutureEither<AnyValue>, GenericOutputPipe1 extends MaybeFutureEither<AnyValue>, GenericOutputPipe2 extends MaybeFutureEither<AnyValue>, GenericOutputPipe3 extends MaybeFutureEither<AnyValue>, GenericOutputPipe4 extends MaybeFutureEither<AnyValue>, GenericOutputPipe5 extends MaybeFutureEither<AnyValue>, GenericOutputPipe6 extends MaybeFutureEither<AnyValue>, GenericOutputPipe7 extends MaybeFutureEither<AnyValue>, GenericOutputPipe8 extends MaybeFutureEither<AnyValue>>(input: GenericInput, pipe1: EitherRightAsyncPipeFunction<GenericInput, GenericOutputPipe1>, pipe2: EitherRightAsyncPipeFunction<GenericOutputPipe1, GenericOutputPipe2>, pipe3: EitherRightAsyncPipeFunction<GenericOutputPipe2, GenericOutputPipe3>, pipe4: EitherRightAsyncPipeFunction<GenericOutputPipe3, GenericOutputPipe4>, pipe5: EitherRightAsyncPipeFunction<GenericOutputPipe4, GenericOutputPipe5>, pipe6: EitherRightAsyncPipeFunction<GenericOutputPipe5, GenericOutputPipe6>, pipe7: EitherRightAsyncPipeFunction<GenericOutputPipe6, GenericOutputPipe7>, pipe8: EitherRightAsyncPipeFunction<GenericOutputPipe7, GenericOutputPipe8>): Future<Extract<EitherRightAsyncPipeResult<GenericInput | GenericOutputPipe1 | GenericOutputPipe2 | GenericOutputPipe3 | GenericOutputPipe4 | GenericOutputPipe5 | GenericOutputPipe6 | GenericOutputPipe7 | GenericOutputPipe8, GenericOutputPipe8>, any>>;
18
+ export declare function rightAsyncPipe<GenericInput extends MaybeFutureEither<AnyValue>, GenericOutputPipe1 extends MaybeFutureEither<AnyValue>, GenericOutputPipe2 extends MaybeFutureEither<AnyValue>, GenericOutputPipe3 extends MaybeFutureEither<AnyValue>, GenericOutputPipe4 extends MaybeFutureEither<AnyValue>, GenericOutputPipe5 extends MaybeFutureEither<AnyValue>, GenericOutputPipe6 extends MaybeFutureEither<AnyValue>, GenericOutputPipe7 extends MaybeFutureEither<AnyValue>, GenericOutputPipe8 extends MaybeFutureEither<AnyValue>, GenericOutputPipe9 extends MaybeFutureEither<AnyValue>>(input: GenericInput, pipe1: EitherRightAsyncPipeFunction<GenericInput, GenericOutputPipe1>, pipe2: EitherRightAsyncPipeFunction<GenericOutputPipe1, GenericOutputPipe2>, pipe3: EitherRightAsyncPipeFunction<GenericOutputPipe2, GenericOutputPipe3>, pipe4: EitherRightAsyncPipeFunction<GenericOutputPipe3, GenericOutputPipe4>, pipe5: EitherRightAsyncPipeFunction<GenericOutputPipe4, GenericOutputPipe5>, pipe6: EitherRightAsyncPipeFunction<GenericOutputPipe5, GenericOutputPipe6>, pipe7: EitherRightAsyncPipeFunction<GenericOutputPipe6, GenericOutputPipe7>, pipe8: EitherRightAsyncPipeFunction<GenericOutputPipe7, GenericOutputPipe8>, pipe9: EitherRightAsyncPipeFunction<GenericOutputPipe8, GenericOutputPipe9>): Future<Extract<EitherRightAsyncPipeResult<GenericInput | GenericOutputPipe1 | GenericOutputPipe2 | GenericOutputPipe3 | GenericOutputPipe4 | GenericOutputPipe5 | GenericOutputPipe6 | GenericOutputPipe7 | GenericOutputPipe8 | GenericOutputPipe9, GenericOutputPipe9>, any>>;
19
+ export declare function rightAsyncPipe<GenericInput extends MaybeFutureEither<AnyValue>, GenericOutputPipe1 extends MaybeFutureEither<AnyValue>, GenericOutputPipe2 extends MaybeFutureEither<AnyValue>, GenericOutputPipe3 extends MaybeFutureEither<AnyValue>, GenericOutputPipe4 extends MaybeFutureEither<AnyValue>, GenericOutputPipe5 extends MaybeFutureEither<AnyValue>, GenericOutputPipe6 extends MaybeFutureEither<AnyValue>, GenericOutputPipe7 extends MaybeFutureEither<AnyValue>, GenericOutputPipe8 extends MaybeFutureEither<AnyValue>, GenericOutputPipe9 extends MaybeFutureEither<AnyValue>, GenericOutputPipe10 extends MaybeFutureEither<AnyValue>>(input: GenericInput, pipe1: EitherRightAsyncPipeFunction<GenericInput, GenericOutputPipe1>, pipe2: EitherRightAsyncPipeFunction<GenericOutputPipe1, GenericOutputPipe2>, pipe3: EitherRightAsyncPipeFunction<GenericOutputPipe2, GenericOutputPipe3>, pipe4: EitherRightAsyncPipeFunction<GenericOutputPipe3, GenericOutputPipe4>, pipe5: EitherRightAsyncPipeFunction<GenericOutputPipe4, GenericOutputPipe5>, pipe6: EitherRightAsyncPipeFunction<GenericOutputPipe5, GenericOutputPipe6>, pipe7: EitherRightAsyncPipeFunction<GenericOutputPipe6, GenericOutputPipe7>, pipe8: EitherRightAsyncPipeFunction<GenericOutputPipe7, GenericOutputPipe8>, pipe9: EitherRightAsyncPipeFunction<GenericOutputPipe8, GenericOutputPipe9>, pipe10: EitherRightAsyncPipeFunction<GenericOutputPipe9, GenericOutputPipe10>): Future<Extract<EitherRightAsyncPipeResult<GenericInput | GenericOutputPipe1 | GenericOutputPipe2 | GenericOutputPipe3 | GenericOutputPipe4 | GenericOutputPipe5 | GenericOutputPipe6 | GenericOutputPipe7 | GenericOutputPipe8 | GenericOutputPipe9 | GenericOutputPipe10, GenericOutputPipe10>, any>>;
22
20
  export {};
@@ -11,15 +11,19 @@ function rightAsyncPipe(input, ...pipes) {
11
11
  return awaitedInput;
12
12
  }
13
13
  let acc = isRight(awaitedInput)
14
- ? awaitedInput
15
- : success(awaitedInput);
14
+ ? unwrap(awaitedInput)
15
+ : awaitedInput;
16
16
  for (const pipe of pipes) {
17
- acc = await pipe(unwrap(acc));
17
+ acc = await pipe(isRight(acc)
18
+ ? unwrap(acc)
19
+ : acc);
18
20
  if (isLeft(acc)) {
19
21
  return acc;
20
22
  }
21
23
  }
22
- return acc;
24
+ return isRight(acc)
25
+ ? acc
26
+ : success(acc);
23
27
  })());
24
28
  }
25
29
 
@@ -1,22 +1,29 @@
1
1
  'use strict';
2
2
 
3
3
  var unwrap = require('../../common/unwrap.cjs');
4
- var is$1 = require('../left/is.cjs');
4
+ var is = require('../left/is.cjs');
5
5
  var success = require('./success.cjs');
6
- var is = require('./is.cjs');
6
+ var is$1 = require('./is.cjs');
7
7
 
8
8
  /* eslint-disable @typescript-eslint/max-params */
9
9
  function rightPipe(input, ...pipes) {
10
- let acc = is.isRight(input) || is$1.isLeft(input)
11
- ? input
12
- : success.success(input);
10
+ if (is.isLeft(input)) {
11
+ return input;
12
+ }
13
+ let acc = is$1.isRight(input)
14
+ ? unwrap.unwrap(input)
15
+ : input;
13
16
  for (const pipe of pipes) {
14
- acc = pipe(unwrap.unwrap(acc));
15
- if (is$1.isLeft(acc)) {
17
+ acc = pipe(is$1.isRight(acc)
18
+ ? unwrap.unwrap(acc)
19
+ : acc);
20
+ if (is.isLeft(acc)) {
16
21
  return acc;
17
22
  }
18
23
  }
19
- return acc;
24
+ return is$1.isRight(acc)
25
+ ? acc
26
+ : success.success(acc);
20
27
  }
21
28
 
22
29
  exports.rightPipe = rightPipe;
@@ -1,19 +1,18 @@
1
1
  import { type EitherRight } from "./create";
2
2
  import { type EitherLeft } from "../left";
3
3
  import { type EitherSuccess } from "./success";
4
- import { type Unwrap } from "../../common";
4
+ import { type AnyValue, type Unwrap } from "../../common";
5
5
  type Either = EitherRight | EitherLeft;
6
- export type EitherRightPipeFunction<GenericInput extends Either = Either, GenericOutput extends Either = Either> = (input: Unwrap<Extract<GenericInput, EitherRight>>) => GenericOutput;
7
- export type EitherRightPipeResult<GenericInput extends Either, GenericPipes extends Either, GenericLastPipe extends Either> = Extract<GenericInput | GenericPipes, EitherLeft> | Extract<GenericLastPipe, EitherRight>;
8
- type ToEither<GenericValue extends unknown> = GenericValue extends Either ? GenericValue : EitherSuccess<GenericValue>;
9
- export declare function rightPipe<const GenericInput extends unknown, GenericOutputPipe1 extends Either>(input: GenericInput, pipe1: EitherRightPipeFunction<ToEither<GenericInput>, GenericOutputPipe1>): Extract<EitherRightPipeResult<ToEither<GenericInput>, GenericOutputPipe1, GenericOutputPipe1>, any>;
10
- export declare function rightPipe<const GenericInput extends unknown, GenericOutputPipe1 extends Either, GenericOutputPipe2 extends Either>(input: GenericInput, pipe1: EitherRightPipeFunction<ToEither<GenericInput>, GenericOutputPipe1>, pipe2: EitherRightPipeFunction<GenericOutputPipe1, GenericOutputPipe2>): Extract<EitherRightPipeResult<ToEither<GenericInput>, GenericOutputPipe1 | GenericOutputPipe2, GenericOutputPipe2>, any>;
11
- export declare function rightPipe<const GenericInput extends unknown, GenericOutputPipe1 extends Either, GenericOutputPipe2 extends Either, GenericOutputPipe3 extends Either>(input: GenericInput, pipe1: EitherRightPipeFunction<ToEither<GenericInput>, GenericOutputPipe1>, pipe2: EitherRightPipeFunction<GenericOutputPipe1, GenericOutputPipe2>, pipe3: EitherRightPipeFunction<GenericOutputPipe2, GenericOutputPipe3>): Extract<EitherRightPipeResult<ToEither<GenericInput>, GenericOutputPipe1 | GenericOutputPipe2 | GenericOutputPipe3, GenericOutputPipe3>, any>;
12
- export declare function rightPipe<const GenericInput extends unknown, GenericOutputPipe1 extends Either, GenericOutputPipe2 extends Either, GenericOutputPipe3 extends Either, GenericOutputPipe4 extends Either>(input: GenericInput, pipe1: EitherRightPipeFunction<ToEither<GenericInput>, GenericOutputPipe1>, pipe2: EitherRightPipeFunction<GenericOutputPipe1, GenericOutputPipe2>, pipe3: EitherRightPipeFunction<GenericOutputPipe2, GenericOutputPipe3>, pipe4: EitherRightPipeFunction<GenericOutputPipe3, GenericOutputPipe4>): Extract<EitherRightPipeResult<ToEither<GenericInput>, GenericOutputPipe1 | GenericOutputPipe2 | GenericOutputPipe3 | GenericOutputPipe4, GenericOutputPipe4>, any>;
13
- export declare function rightPipe<const GenericInput extends unknown, GenericOutputPipe1 extends Either, GenericOutputPipe2 extends Either, GenericOutputPipe3 extends Either, GenericOutputPipe4 extends Either, GenericOutputPipe5 extends Either>(input: GenericInput, pipe1: EitherRightPipeFunction<ToEither<GenericInput>, GenericOutputPipe1>, pipe2: EitherRightPipeFunction<GenericOutputPipe1, GenericOutputPipe2>, pipe3: EitherRightPipeFunction<GenericOutputPipe2, GenericOutputPipe3>, pipe4: EitherRightPipeFunction<GenericOutputPipe3, GenericOutputPipe4>, pipe5: EitherRightPipeFunction<GenericOutputPipe4, GenericOutputPipe5>): Extract<EitherRightPipeResult<ToEither<GenericInput>, GenericOutputPipe1 | GenericOutputPipe2 | GenericOutputPipe3 | GenericOutputPipe4 | GenericOutputPipe5, GenericOutputPipe5>, any>;
14
- export declare function rightPipe<const GenericInput extends unknown, GenericOutputPipe1 extends Either, GenericOutputPipe2 extends Either, GenericOutputPipe3 extends Either, GenericOutputPipe4 extends Either, GenericOutputPipe5 extends Either, GenericOutputPipe6 extends Either>(input: GenericInput, pipe1: EitherRightPipeFunction<ToEither<GenericInput>, GenericOutputPipe1>, pipe2: EitherRightPipeFunction<GenericOutputPipe1, GenericOutputPipe2>, pipe3: EitherRightPipeFunction<GenericOutputPipe2, GenericOutputPipe3>, pipe4: EitherRightPipeFunction<GenericOutputPipe3, GenericOutputPipe4>, pipe5: EitherRightPipeFunction<GenericOutputPipe4, GenericOutputPipe5>, pipe6: EitherRightPipeFunction<GenericOutputPipe5, GenericOutputPipe6>): Extract<EitherRightPipeResult<ToEither<GenericInput>, GenericOutputPipe1 | GenericOutputPipe2 | GenericOutputPipe3 | GenericOutputPipe4 | GenericOutputPipe5 | GenericOutputPipe6, GenericOutputPipe6>, any>;
15
- export declare function rightPipe<const GenericInput extends unknown, GenericOutputPipe1 extends Either, GenericOutputPipe2 extends Either, GenericOutputPipe3 extends Either, GenericOutputPipe4 extends Either, GenericOutputPipe5 extends Either, GenericOutputPipe6 extends Either, GenericOutputPipe7 extends Either>(input: GenericInput, pipe1: EitherRightPipeFunction<ToEither<GenericInput>, GenericOutputPipe1>, pipe2: EitherRightPipeFunction<GenericOutputPipe1, GenericOutputPipe2>, pipe3: EitherRightPipeFunction<GenericOutputPipe2, GenericOutputPipe3>, pipe4: EitherRightPipeFunction<GenericOutputPipe3, GenericOutputPipe4>, pipe5: EitherRightPipeFunction<GenericOutputPipe4, GenericOutputPipe5>, pipe6: EitherRightPipeFunction<GenericOutputPipe5, GenericOutputPipe6>, pipe7: EitherRightPipeFunction<GenericOutputPipe6, GenericOutputPipe7>): Extract<EitherRightPipeResult<ToEither<GenericInput>, GenericOutputPipe1 | GenericOutputPipe2 | GenericOutputPipe3 | GenericOutputPipe4 | GenericOutputPipe5 | GenericOutputPipe6 | GenericOutputPipe7, GenericOutputPipe7>, any>;
16
- export declare function rightPipe<const GenericInput extends unknown, GenericOutputPipe1 extends Either, GenericOutputPipe2 extends Either, GenericOutputPipe3 extends Either, GenericOutputPipe4 extends Either, GenericOutputPipe5 extends Either, GenericOutputPipe6 extends Either, GenericOutputPipe7 extends Either, GenericOutputPipe8 extends Either>(input: GenericInput, pipe1: EitherRightPipeFunction<ToEither<GenericInput>, GenericOutputPipe1>, pipe2: EitherRightPipeFunction<GenericOutputPipe1, GenericOutputPipe2>, pipe3: EitherRightPipeFunction<GenericOutputPipe2, GenericOutputPipe3>, pipe4: EitherRightPipeFunction<GenericOutputPipe3, GenericOutputPipe4>, pipe5: EitherRightPipeFunction<GenericOutputPipe4, GenericOutputPipe5>, pipe6: EitherRightPipeFunction<GenericOutputPipe5, GenericOutputPipe6>, pipe7: EitherRightPipeFunction<GenericOutputPipe6, GenericOutputPipe7>, pipe8: EitherRightPipeFunction<GenericOutputPipe7, GenericOutputPipe8>): Extract<EitherRightPipeResult<ToEither<GenericInput>, GenericOutputPipe1 | GenericOutputPipe2 | GenericOutputPipe3 | GenericOutputPipe4 | GenericOutputPipe5 | GenericOutputPipe6 | GenericOutputPipe7 | GenericOutputPipe8, GenericOutputPipe8>, any>;
17
- export declare function rightPipe<const GenericInput extends unknown, GenericOutputPipe1 extends Either, GenericOutputPipe2 extends Either, GenericOutputPipe3 extends Either, GenericOutputPipe4 extends Either, GenericOutputPipe5 extends Either, GenericOutputPipe6 extends Either, GenericOutputPipe7 extends Either, GenericOutputPipe8 extends Either, GenericOutputPipe9 extends Either>(input: GenericInput, pipe1: EitherRightPipeFunction<ToEither<GenericInput>, GenericOutputPipe1>, pipe2: EitherRightPipeFunction<GenericOutputPipe1, GenericOutputPipe2>, pipe3: EitherRightPipeFunction<GenericOutputPipe2, GenericOutputPipe3>, pipe4: EitherRightPipeFunction<GenericOutputPipe3, GenericOutputPipe4>, pipe5: EitherRightPipeFunction<GenericOutputPipe4, GenericOutputPipe5>, pipe6: EitherRightPipeFunction<GenericOutputPipe5, GenericOutputPipe6>, pipe7: EitherRightPipeFunction<GenericOutputPipe6, GenericOutputPipe7>, pipe8: EitherRightPipeFunction<GenericOutputPipe7, GenericOutputPipe8>, pipe9: EitherRightPipeFunction<GenericOutputPipe8, GenericOutputPipe9>): Extract<EitherRightPipeResult<ToEither<GenericInput>, GenericOutputPipe1 | GenericOutputPipe2 | GenericOutputPipe3 | GenericOutputPipe4 | GenericOutputPipe5 | GenericOutputPipe6 | GenericOutputPipe7 | GenericOutputPipe8 | GenericOutputPipe9, GenericOutputPipe9>, any>;
18
- export declare function rightPipe<const GenericInput extends unknown, GenericOutputPipe1 extends Either, GenericOutputPipe2 extends Either, GenericOutputPipe3 extends Either, GenericOutputPipe4 extends Either, GenericOutputPipe5 extends Either, GenericOutputPipe6 extends Either, GenericOutputPipe7 extends Either, GenericOutputPipe8 extends Either, GenericOutputPipe9 extends Either, GenericOutputPipe10 extends Either>(input: GenericInput, pipe1: EitherRightPipeFunction<ToEither<GenericInput>, GenericOutputPipe1>, pipe2: EitherRightPipeFunction<GenericOutputPipe1, GenericOutputPipe2>, pipe3: EitherRightPipeFunction<GenericOutputPipe2, GenericOutputPipe3>, pipe4: EitherRightPipeFunction<GenericOutputPipe3, GenericOutputPipe4>, pipe5: EitherRightPipeFunction<GenericOutputPipe4, GenericOutputPipe5>, pipe6: EitherRightPipeFunction<GenericOutputPipe5, GenericOutputPipe6>, pipe7: EitherRightPipeFunction<GenericOutputPipe6, GenericOutputPipe7>, pipe8: EitherRightPipeFunction<GenericOutputPipe7, GenericOutputPipe8>, pipe9: EitherRightPipeFunction<GenericOutputPipe8, GenericOutputPipe9>, pipe10: EitherRightPipeFunction<GenericOutputPipe9, GenericOutputPipe10>): Extract<EitherRightPipeResult<ToEither<GenericInput>, GenericOutputPipe1 | GenericOutputPipe2 | GenericOutputPipe3 | GenericOutputPipe4 | GenericOutputPipe5 | GenericOutputPipe6 | GenericOutputPipe7 | GenericOutputPipe8 | GenericOutputPipe9 | GenericOutputPipe10, GenericOutputPipe10>, any>;
6
+ export type EitherRightPipeFunction<GenericInput extends AnyValue = AnyValue, GenericOutput extends AnyValue = AnyValue> = (input: GenericInput extends Either ? Unwrap<Exclude<GenericInput, EitherLeft>> : GenericInput) => GenericOutput;
7
+ export type EitherRightPipeResult<GenericPipeOutputs extends AnyValue, GenericLastPipeOutput extends AnyValue> = Extract<GenericPipeOutputs, EitherLeft> | Exclude<GenericLastPipeOutput extends Either ? GenericLastPipeOutput : EitherSuccess<GenericLastPipeOutput>, EitherLeft>;
8
+ export declare function rightPipe<GenericInput extends AnyValue, GenericOutputPipe1 extends AnyValue>(input: GenericInput, pipe1: EitherRightPipeFunction<GenericInput, GenericOutputPipe1>): Extract<EitherRightPipeResult<GenericInput | GenericOutputPipe1, GenericOutputPipe1>, any>;
9
+ export declare function rightPipe<GenericInput extends AnyValue, GenericOutputPipe1 extends AnyValue, GenericOutputPipe2 extends AnyValue>(input: GenericInput, pipe1: EitherRightPipeFunction<GenericInput, GenericOutputPipe1>, pipe2: EitherRightPipeFunction<GenericOutputPipe1, GenericOutputPipe2>): Extract<EitherRightPipeResult<GenericInput | GenericOutputPipe1 | GenericOutputPipe2, GenericOutputPipe2>, any>;
10
+ export declare function rightPipe<GenericInput extends AnyValue, GenericOutputPipe1 extends AnyValue, GenericOutputPipe2 extends AnyValue, GenericOutputPipe3 extends AnyValue>(input: GenericInput, pipe1: EitherRightPipeFunction<GenericInput, GenericOutputPipe1>, pipe2: EitherRightPipeFunction<GenericOutputPipe1, GenericOutputPipe2>, pipe3: EitherRightPipeFunction<GenericOutputPipe2, GenericOutputPipe3>): Extract<EitherRightPipeResult<GenericInput | GenericOutputPipe1 | GenericOutputPipe2 | GenericOutputPipe3, GenericOutputPipe3>, any>;
11
+ export declare function rightPipe<GenericInput extends AnyValue, GenericOutputPipe1 extends AnyValue, GenericOutputPipe2 extends AnyValue, GenericOutputPipe3 extends AnyValue, GenericOutputPipe4 extends AnyValue>(input: GenericInput, pipe1: EitherRightPipeFunction<GenericInput, GenericOutputPipe1>, pipe2: EitherRightPipeFunction<GenericOutputPipe1, GenericOutputPipe2>, pipe3: EitherRightPipeFunction<GenericOutputPipe2, GenericOutputPipe3>, pipe4: EitherRightPipeFunction<GenericOutputPipe3, GenericOutputPipe4>): Extract<EitherRightPipeResult<GenericInput | GenericOutputPipe1 | GenericOutputPipe2 | GenericOutputPipe3 | GenericOutputPipe4, GenericOutputPipe4>, any>;
12
+ export declare function rightPipe<GenericInput extends AnyValue, GenericOutputPipe1 extends AnyValue, GenericOutputPipe2 extends AnyValue, GenericOutputPipe3 extends AnyValue, GenericOutputPipe4 extends AnyValue, GenericOutputPipe5 extends AnyValue>(input: GenericInput, pipe1: EitherRightPipeFunction<GenericInput, GenericOutputPipe1>, pipe2: EitherRightPipeFunction<GenericOutputPipe1, GenericOutputPipe2>, pipe3: EitherRightPipeFunction<GenericOutputPipe2, GenericOutputPipe3>, pipe4: EitherRightPipeFunction<GenericOutputPipe3, GenericOutputPipe4>, pipe5: EitherRightPipeFunction<GenericOutputPipe4, GenericOutputPipe5>): Extract<EitherRightPipeResult<GenericInput | GenericOutputPipe1 | GenericOutputPipe2 | GenericOutputPipe3 | GenericOutputPipe4 | GenericOutputPipe5, GenericOutputPipe5>, any>;
13
+ export declare function rightPipe<GenericInput extends AnyValue, GenericOutputPipe1 extends AnyValue, GenericOutputPipe2 extends AnyValue, GenericOutputPipe3 extends AnyValue, GenericOutputPipe4 extends AnyValue, GenericOutputPipe5 extends AnyValue, GenericOutputPipe6 extends AnyValue>(input: GenericInput, pipe1: EitherRightPipeFunction<GenericInput, GenericOutputPipe1>, pipe2: EitherRightPipeFunction<GenericOutputPipe1, GenericOutputPipe2>, pipe3: EitherRightPipeFunction<GenericOutputPipe2, GenericOutputPipe3>, pipe4: EitherRightPipeFunction<GenericOutputPipe3, GenericOutputPipe4>, pipe5: EitherRightPipeFunction<GenericOutputPipe4, GenericOutputPipe5>, pipe6: EitherRightPipeFunction<GenericOutputPipe5, GenericOutputPipe6>): Extract<EitherRightPipeResult<GenericInput | GenericOutputPipe1 | GenericOutputPipe2 | GenericOutputPipe3 | GenericOutputPipe4 | GenericOutputPipe5 | GenericOutputPipe6, GenericOutputPipe6>, any>;
14
+ export declare function rightPipe<GenericInput extends AnyValue, GenericOutputPipe1 extends AnyValue, GenericOutputPipe2 extends AnyValue, GenericOutputPipe3 extends AnyValue, GenericOutputPipe4 extends AnyValue, GenericOutputPipe5 extends AnyValue, GenericOutputPipe6 extends AnyValue, GenericOutputPipe7 extends AnyValue>(input: GenericInput, pipe1: EitherRightPipeFunction<GenericInput, GenericOutputPipe1>, pipe2: EitherRightPipeFunction<GenericOutputPipe1, GenericOutputPipe2>, pipe3: EitherRightPipeFunction<GenericOutputPipe2, GenericOutputPipe3>, pipe4: EitherRightPipeFunction<GenericOutputPipe3, GenericOutputPipe4>, pipe5: EitherRightPipeFunction<GenericOutputPipe4, GenericOutputPipe5>, pipe6: EitherRightPipeFunction<GenericOutputPipe5, GenericOutputPipe6>, pipe7: EitherRightPipeFunction<GenericOutputPipe6, GenericOutputPipe7>): Extract<EitherRightPipeResult<GenericInput | GenericOutputPipe1 | GenericOutputPipe2 | GenericOutputPipe3 | GenericOutputPipe4 | GenericOutputPipe5 | GenericOutputPipe6 | GenericOutputPipe7, GenericOutputPipe7>, any>;
15
+ export declare function rightPipe<GenericInput extends AnyValue, GenericOutputPipe1 extends AnyValue, GenericOutputPipe2 extends AnyValue, GenericOutputPipe3 extends AnyValue, GenericOutputPipe4 extends AnyValue, GenericOutputPipe5 extends AnyValue, GenericOutputPipe6 extends AnyValue, GenericOutputPipe7 extends AnyValue, GenericOutputPipe8 extends AnyValue>(input: GenericInput, pipe1: EitherRightPipeFunction<GenericInput, GenericOutputPipe1>, pipe2: EitherRightPipeFunction<GenericOutputPipe1, GenericOutputPipe2>, pipe3: EitherRightPipeFunction<GenericOutputPipe2, GenericOutputPipe3>, pipe4: EitherRightPipeFunction<GenericOutputPipe3, GenericOutputPipe4>, pipe5: EitherRightPipeFunction<GenericOutputPipe4, GenericOutputPipe5>, pipe6: EitherRightPipeFunction<GenericOutputPipe5, GenericOutputPipe6>, pipe7: EitherRightPipeFunction<GenericOutputPipe6, GenericOutputPipe7>, pipe8: EitherRightPipeFunction<GenericOutputPipe7, GenericOutputPipe8>): Extract<EitherRightPipeResult<GenericInput | GenericOutputPipe1 | GenericOutputPipe2 | GenericOutputPipe3 | GenericOutputPipe4 | GenericOutputPipe5 | GenericOutputPipe6 | GenericOutputPipe7 | GenericOutputPipe8, GenericOutputPipe8>, any>;
16
+ export declare function rightPipe<GenericInput extends AnyValue, GenericOutputPipe1 extends AnyValue, GenericOutputPipe2 extends AnyValue, GenericOutputPipe3 extends AnyValue, GenericOutputPipe4 extends AnyValue, GenericOutputPipe5 extends AnyValue, GenericOutputPipe6 extends AnyValue, GenericOutputPipe7 extends AnyValue, GenericOutputPipe8 extends AnyValue, GenericOutputPipe9 extends AnyValue>(input: GenericInput, pipe1: EitherRightPipeFunction<GenericInput, GenericOutputPipe1>, pipe2: EitherRightPipeFunction<GenericOutputPipe1, GenericOutputPipe2>, pipe3: EitherRightPipeFunction<GenericOutputPipe2, GenericOutputPipe3>, pipe4: EitherRightPipeFunction<GenericOutputPipe3, GenericOutputPipe4>, pipe5: EitherRightPipeFunction<GenericOutputPipe4, GenericOutputPipe5>, pipe6: EitherRightPipeFunction<GenericOutputPipe5, GenericOutputPipe6>, pipe7: EitherRightPipeFunction<GenericOutputPipe6, GenericOutputPipe7>, pipe8: EitherRightPipeFunction<GenericOutputPipe7, GenericOutputPipe8>, pipe9: EitherRightPipeFunction<GenericOutputPipe8, GenericOutputPipe9>): Extract<EitherRightPipeResult<GenericInput | GenericOutputPipe1 | GenericOutputPipe2 | GenericOutputPipe3 | GenericOutputPipe4 | GenericOutputPipe5 | GenericOutputPipe6 | GenericOutputPipe7 | GenericOutputPipe8 | GenericOutputPipe9, GenericOutputPipe9>, any>;
17
+ export declare function rightPipe<GenericInput extends AnyValue, GenericOutputPipe1 extends AnyValue, GenericOutputPipe2 extends AnyValue, GenericOutputPipe3 extends AnyValue, GenericOutputPipe4 extends AnyValue, GenericOutputPipe5 extends AnyValue, GenericOutputPipe6 extends AnyValue, GenericOutputPipe7 extends AnyValue, GenericOutputPipe8 extends AnyValue, GenericOutputPipe9 extends AnyValue, GenericOutputPipe10 extends AnyValue>(input: GenericInput, pipe1: EitherRightPipeFunction<GenericInput, GenericOutputPipe1>, pipe2: EitherRightPipeFunction<GenericOutputPipe1, GenericOutputPipe2>, pipe3: EitherRightPipeFunction<GenericOutputPipe2, GenericOutputPipe3>, pipe4: EitherRightPipeFunction<GenericOutputPipe3, GenericOutputPipe4>, pipe5: EitherRightPipeFunction<GenericOutputPipe4, GenericOutputPipe5>, pipe6: EitherRightPipeFunction<GenericOutputPipe5, GenericOutputPipe6>, pipe7: EitherRightPipeFunction<GenericOutputPipe6, GenericOutputPipe7>, pipe8: EitherRightPipeFunction<GenericOutputPipe7, GenericOutputPipe8>, pipe9: EitherRightPipeFunction<GenericOutputPipe8, GenericOutputPipe9>, pipe10: EitherRightPipeFunction<GenericOutputPipe9, GenericOutputPipe10>): Extract<EitherRightPipeResult<GenericInput | GenericOutputPipe1 | GenericOutputPipe2 | GenericOutputPipe3 | GenericOutputPipe4 | GenericOutputPipe5 | GenericOutputPipe6 | GenericOutputPipe7 | GenericOutputPipe8 | GenericOutputPipe9 | GenericOutputPipe10, GenericOutputPipe10>, any>;
19
18
  export {};
@@ -5,16 +5,23 @@ import { isRight } from './is.mjs';
5
5
 
6
6
  /* eslint-disable @typescript-eslint/max-params */
7
7
  function rightPipe(input, ...pipes) {
8
- let acc = isRight(input) || isLeft(input)
9
- ? input
10
- : success(input);
8
+ if (isLeft(input)) {
9
+ return input;
10
+ }
11
+ let acc = isRight(input)
12
+ ? unwrap(input)
13
+ : input;
11
14
  for (const pipe of pipes) {
12
- acc = pipe(unwrap(acc));
15
+ acc = pipe(isRight(acc)
16
+ ? unwrap(acc)
17
+ : acc);
13
18
  if (isLeft(acc)) {
14
19
  return acc;
15
20
  }
16
21
  }
17
- return acc;
22
+ return isRight(acc)
23
+ ? acc
24
+ : success(acc);
18
25
  }
19
26
 
20
27
  export { rightPipe };
@@ -1,23 +1,15 @@
1
1
  'use strict';
2
2
 
3
- var kind = require('../common/kind.cjs');
4
- var wrapValue = require('../common/wrapValue.cjs');
5
3
  var unwrap = require('../common/unwrap.cjs');
6
4
  var override = require('../object/override.cjs');
7
5
 
8
- const generatorAsyncReduceFromKind = kind.createKind("generator-async-reduce-from");
9
- const getStartValueParams = {
10
- from: (value) => generatorAsyncReduceFromKind.addTo(wrapValue.wrapValue(value), null),
11
- };
12
6
  function asyncReduce(...args) {
13
7
  if (args.length === 2) {
14
- const [getStartValue, theFunction] = args;
15
- return (iterator) => asyncReduce(iterator, getStartValue, theFunction);
8
+ const [fromValue, theFunction] = args;
9
+ return (iterator) => asyncReduce(iterator, fromValue, theFunction);
16
10
  }
17
- const [iterator, getStartValue, theFunction] = args;
18
- let lastValue = unwrap.unwrap(typeof getStartValue === "function"
19
- ? getStartValue(getStartValueParams)
20
- : getStartValue);
11
+ const [iterator, fromValue, theFunction] = args;
12
+ let lastValue = unwrap.unwrap(fromValue);
21
13
  return (async () => {
22
14
  let index = 0;
23
15
  for await (const element of iterator) {
@@ -1,30 +1,3 @@
1
- import { type Kind } from "../common/kind";
2
- import { type WrappedValue } from "../common/wrapValue";
3
- import { type Unwrap } from "../common/unwrap";
4
- import { type ToLargeEnsemble } from "../common";
5
- interface AsyncGeneratorReduceNext<GenericOutput extends unknown> {
6
- "-next": GenericOutput;
7
- }
8
- interface ArrayReduceExit<GenericOutput extends unknown> {
9
- "-exit": GenericOutput;
10
- }
11
- type ExitOrNext<GenericOutput extends unknown = unknown> = ArrayReduceExit<GenericOutput> | AsyncGeneratorReduceNext<GenericOutput>;
12
- export interface AsyncGeneratorReduceFunctionParams<GenericElement extends unknown = unknown, GenericOutput extends unknown = unknown> {
13
- element: GenericElement;
14
- index: number;
15
- lastValue: GenericOutput;
16
- nextWithObject: GenericOutput extends object ? (object1: GenericOutput, object2: Partial<GenericOutput>) => AsyncGeneratorReduceNext<GenericOutput> : undefined;
17
- next(output: GenericOutput): AsyncGeneratorReduceNext<GenericOutput>;
18
- exit(output: GenericOutput): ArrayReduceExit<GenericOutput>;
19
- }
20
- declare const generatorAsyncReduceFromKind: import("../common").KindHandler<import("../common").KindDefinition<"generator-async-reduce-from", unknown>>;
21
- export interface AsyncGeneratorReduceFromResult<GenericValue extends unknown = unknown> extends Kind<typeof generatorAsyncReduceFromKind.definition>, WrappedValue<GenericValue> {
22
- }
23
- interface GetStartValueParams {
24
- from<GenericValue extends unknown>(value: GenericValue): AsyncGeneratorReduceFromResult<GenericValue>;
25
- }
26
- export declare function asyncReduce<GenericElement extends unknown, GenericReduceFrom extends number | string | bigint | boolean>(startValue: GenericReduceFrom, theFunction: (params: AsyncGeneratorReduceFunctionParams<GenericElement, ToLargeEnsemble<GenericReduceFrom>>) => ExitOrNext<ToLargeEnsemble<GenericReduceFrom>>): (iterator: Iterable<GenericElement> | AsyncIterable<GenericElement>) => Promise<ToLargeEnsemble<GenericReduceFrom>>;
27
- export declare function asyncReduce<GenericElement extends unknown, GenericReduceFrom extends AsyncGeneratorReduceFromResult>(getStartValue: (params: GetStartValueParams) => GenericReduceFrom, theFunction: (params: AsyncGeneratorReduceFunctionParams<GenericElement, Unwrap<GenericReduceFrom>>) => ExitOrNext<Unwrap<GenericReduceFrom>>): (iterator: Iterable<GenericElement> | AsyncIterable<GenericElement>) => Promise<Unwrap<GenericReduceFrom>>;
28
- export declare function asyncReduce<GenericElement extends unknown, GenericReduceFrom extends number | string | bigint | boolean>(iterator: Iterable<GenericElement> | AsyncIterable<GenericElement>, startValue: GenericReduceFrom, theFunction: (params: AsyncGeneratorReduceFunctionParams<GenericElement, ToLargeEnsemble<GenericReduceFrom>>) => ExitOrNext<ToLargeEnsemble<GenericReduceFrom>>): Promise<ToLargeEnsemble<GenericReduceFrom>>;
29
- export declare function asyncReduce<GenericElement extends unknown, GenericReduceFrom extends AsyncGeneratorReduceFromResult>(iterator: Iterable<GenericElement> | AsyncIterable<GenericElement>, getStartValue: (params: GetStartValueParams) => GenericReduceFrom, theFunction: (params: AsyncGeneratorReduceFunctionParams<GenericElement, Unwrap<GenericReduceFrom>>) => ExitOrNext<Unwrap<GenericReduceFrom>>): Promise<Unwrap<GenericReduceFrom>>;
30
- export {};
1
+ import { type GeneratorReduceFromValue, type GeneratorEligibleReduceFromValue, type GeneratorReduceExitOrNext, type GeneratorReduceFunctionParams } from "./reduce";
2
+ export declare function asyncReduce<GenericElement extends unknown, GenericReduceFrom extends GeneratorEligibleReduceFromValue>(startValue: GenericReduceFrom, theFunction: (params: GeneratorReduceFunctionParams<GenericElement, GeneratorReduceFromValue<GenericReduceFrom>>) => GeneratorReduceExitOrNext<GeneratorReduceFromValue<GenericReduceFrom>>): (iterator: Iterable<GenericElement> | AsyncIterable<GenericElement>) => Promise<GeneratorReduceFromValue<GenericReduceFrom>>;
3
+ export declare function asyncReduce<GenericElement extends unknown, GenericReduceFrom extends GeneratorEligibleReduceFromValue>(iterator: Iterable<GenericElement> | AsyncIterable<GenericElement>, startValue: GenericReduceFrom, theFunction: (params: GeneratorReduceFunctionParams<GenericElement, GeneratorReduceFromValue<GenericReduceFrom>>) => GeneratorReduceExitOrNext<GeneratorReduceFromValue<GenericReduceFrom>>): Promise<GeneratorReduceFromValue<GenericReduceFrom>>;
@@ -1,21 +1,13 @@
1
- import { createKind } from '../common/kind.mjs';
2
- import { wrapValue } from '../common/wrapValue.mjs';
3
1
  import { unwrap } from '../common/unwrap.mjs';
4
2
  import { override } from '../object/override.mjs';
5
3
 
6
- const generatorAsyncReduceFromKind = createKind("generator-async-reduce-from");
7
- const getStartValueParams = {
8
- from: (value) => generatorAsyncReduceFromKind.addTo(wrapValue(value), null),
9
- };
10
4
  function asyncReduce(...args) {
11
5
  if (args.length === 2) {
12
- const [getStartValue, theFunction] = args;
13
- return (iterator) => asyncReduce(iterator, getStartValue, theFunction);
6
+ const [fromValue, theFunction] = args;
7
+ return (iterator) => asyncReduce(iterator, fromValue, theFunction);
14
8
  }
15
- const [iterator, getStartValue, theFunction] = args;
16
- let lastValue = unwrap(typeof getStartValue === "function"
17
- ? getStartValue(getStartValueParams)
18
- : getStartValue);
9
+ const [iterator, fromValue, theFunction] = args;
10
+ let lastValue = unwrap(fromValue);
19
11
  return (async () => {
20
12
  let index = 0;
21
13
  for await (const element of iterator) {
@@ -18,6 +18,7 @@ exports.asyncMap = asyncMap.asyncMap;
18
18
  exports.filter = filter.filter;
19
19
  exports.asyncFilter = asyncFilter.asyncFilter;
20
20
  exports.reduce = reduce.reduce;
21
+ exports.reduceFrom = reduce.reduceFrom;
21
22
  exports.asyncReduce = asyncReduce.asyncReduce;
22
23
  exports.loop = loop.loop;
23
24
  exports.asyncLoop = asyncLoop.asyncLoop;
@@ -3,7 +3,7 @@ export { execute } from './execute.mjs';
3
3
  export { asyncMap } from './asyncMap.mjs';
4
4
  export { filter } from './filter.mjs';
5
5
  export { asyncFilter } from './asyncFilter.mjs';
6
- export { reduce } from './reduce.mjs';
6
+ export { reduce, reduceFrom } from './reduce.mjs';
7
7
  export { asyncReduce } from './asyncReduce.mjs';
8
8
  export { loop } from './loop.mjs';
9
9
  export { asyncLoop } from './asyncLoop.mjs';
@@ -6,18 +6,16 @@ var unwrap = require('../common/unwrap.cjs');
6
6
  var override = require('../object/override.cjs');
7
7
 
8
8
  const generatorReduceFromKind = kind.createKind("generator-reduce-from");
9
- const getStartValueParams = {
10
- from: (value) => generatorReduceFromKind.addTo(wrapValue.wrapValue(value), null),
11
- };
9
+ function reduceFrom(value) {
10
+ return generatorReduceFromKind.addTo(wrapValue.wrapValue(value));
11
+ }
12
12
  function reduce(...args) {
13
13
  if (args.length === 2) {
14
- const [getStartValue, theFunction] = args;
15
- return (iterator) => reduce(iterator, getStartValue, theFunction);
14
+ const [fromValue, theFunction] = args;
15
+ return (iterator) => reduce(iterator, fromValue, theFunction);
16
16
  }
17
- const [iterator, getStartValue, theFunction] = args;
18
- let lastValue = unwrap.unwrap(typeof getStartValue === "function"
19
- ? getStartValue(getStartValueParams)
20
- : getStartValue);
17
+ const [iterator, fromValue, theFunction] = args;
18
+ let lastValue = unwrap.unwrap(fromValue);
21
19
  let index = 0;
22
20
  for (const element of iterator) {
23
21
  const result = theFunction({
@@ -40,3 +38,4 @@ function reduce(...args) {
40
38
  }
41
39
 
42
40
  exports.reduce = reduce;
41
+ exports.reduceFrom = reduceFrom;
@@ -5,26 +5,24 @@ import { type ToLargeEnsemble } from "../common";
5
5
  interface GeneratorReduceNext<GenericOutput extends unknown> {
6
6
  "-next": GenericOutput;
7
7
  }
8
- interface ArrayReduceExit<GenericOutput extends unknown> {
8
+ interface GeneratorReduceExit<GenericOutput extends unknown> {
9
9
  "-exit": GenericOutput;
10
10
  }
11
- type ExitOrNext<GenericOutput extends unknown = unknown> = ArrayReduceExit<GenericOutput> | GeneratorReduceNext<GenericOutput>;
11
+ export type GeneratorReduceExitOrNext<GenericOutput extends unknown = unknown> = GeneratorReduceExit<GenericOutput> | GeneratorReduceNext<GenericOutput>;
12
12
  export interface GeneratorReduceFunctionParams<GenericElement extends unknown = unknown, GenericOutput extends unknown = unknown> {
13
13
  element: GenericElement;
14
14
  index: number;
15
15
  lastValue: GenericOutput;
16
16
  nextWithObject: GenericOutput extends object ? (object1: GenericOutput, object2: Partial<GenericOutput>) => GeneratorReduceNext<GenericOutput> : undefined;
17
17
  next(output: GenericOutput): GeneratorReduceNext<GenericOutput>;
18
- exit(output: GenericOutput): ArrayReduceExit<GenericOutput>;
18
+ exit(output: GenericOutput): GeneratorReduceExit<GenericOutput>;
19
19
  }
20
20
  declare const generatorReduceFromKind: import("../common").KindHandler<import("../common").KindDefinition<"generator-reduce-from", unknown>>;
21
21
  export interface GeneratorReduceFromResult<GenericValue extends unknown = unknown> extends Kind<typeof generatorReduceFromKind.definition>, WrappedValue<GenericValue> {
22
22
  }
23
- interface GetStartValueParams {
24
- from<GenericValue extends unknown>(value: GenericValue): GeneratorReduceFromResult<GenericValue>;
25
- }
26
- export declare function reduce<GenericElement extends unknown, GenericReduceFrom extends number | string | bigint | boolean>(startValue: GenericReduceFrom, theFunction: (params: GeneratorReduceFunctionParams<GenericElement, ToLargeEnsemble<GenericReduceFrom>>) => ExitOrNext<ToLargeEnsemble<GenericReduceFrom>>): (iterator: Iterable<GenericElement>) => ToLargeEnsemble<GenericReduceFrom>;
27
- export declare function reduce<GenericElement extends unknown, GenericReduceFrom extends GeneratorReduceFromResult>(getStartValue: (params: GetStartValueParams) => GenericReduceFrom, theFunction: (params: GeneratorReduceFunctionParams<GenericElement, Unwrap<GenericReduceFrom>>) => ExitOrNext<Unwrap<GenericReduceFrom>>): (iterator: Iterable<GenericElement>) => Unwrap<GenericReduceFrom>;
28
- export declare function reduce<GenericElement extends unknown, GenericReduceFrom extends number | string | bigint | boolean>(iterator: Iterable<GenericElement>, startValue: GenericReduceFrom, theFunction: (params: GeneratorReduceFunctionParams<GenericElement, ToLargeEnsemble<GenericReduceFrom>>) => ExitOrNext<ToLargeEnsemble<GenericReduceFrom>>): ToLargeEnsemble<GenericReduceFrom>;
29
- export declare function reduce<GenericElement extends unknown, GenericReduceFrom extends GeneratorReduceFromResult>(iterator: Iterable<GenericElement>, getStartValue: (params: GetStartValueParams) => GenericReduceFrom, theFunction: (params: GeneratorReduceFunctionParams<GenericElement, Unwrap<GenericReduceFrom>>) => ExitOrNext<Unwrap<GenericReduceFrom>>): Unwrap<GenericReduceFrom>;
23
+ export declare function reduceFrom<GenericValue extends unknown>(value: GenericValue): GeneratorReduceFromResult<GenericValue>;
24
+ export type GeneratorEligibleReduceFromValue = number | string | bigint | boolean | GeneratorReduceFromResult;
25
+ export type GeneratorReduceFromValue<GenericValue extends GeneratorEligibleReduceFromValue> = GenericValue extends GeneratorReduceFromResult ? Unwrap<GenericValue> : ToLargeEnsemble<GenericValue>;
26
+ export declare function reduce<GenericElement extends unknown, GenericReduceFrom extends GeneratorEligibleReduceFromValue>(startValue: GenericReduceFrom, theFunction: (params: GeneratorReduceFunctionParams<GenericElement, GeneratorReduceFromValue<GenericReduceFrom>>) => GeneratorReduceExitOrNext<GeneratorReduceFromValue<GenericReduceFrom>>): (iterator: Iterable<GenericElement>) => GeneratorReduceFromValue<GenericReduceFrom>;
27
+ export declare function reduce<GenericElement extends unknown, GenericReduceFrom extends GeneratorEligibleReduceFromValue>(iterator: Iterable<GenericElement>, startValue: GenericReduceFrom, theFunction: (params: GeneratorReduceFunctionParams<GenericElement, GeneratorReduceFromValue<GenericReduceFrom>>) => GeneratorReduceExitOrNext<GeneratorReduceFromValue<GenericReduceFrom>>): GeneratorReduceFromValue<GenericReduceFrom>;
30
28
  export {};
@@ -4,18 +4,16 @@ import { unwrap } from '../common/unwrap.mjs';
4
4
  import { override } from '../object/override.mjs';
5
5
 
6
6
  const generatorReduceFromKind = createKind("generator-reduce-from");
7
- const getStartValueParams = {
8
- from: (value) => generatorReduceFromKind.addTo(wrapValue(value), null),
9
- };
7
+ function reduceFrom(value) {
8
+ return generatorReduceFromKind.addTo(wrapValue(value));
9
+ }
10
10
  function reduce(...args) {
11
11
  if (args.length === 2) {
12
- const [getStartValue, theFunction] = args;
13
- return (iterator) => reduce(iterator, getStartValue, theFunction);
12
+ const [fromValue, theFunction] = args;
13
+ return (iterator) => reduce(iterator, fromValue, theFunction);
14
14
  }
15
- const [iterator, getStartValue, theFunction] = args;
16
- let lastValue = unwrap(typeof getStartValue === "function"
17
- ? getStartValue(getStartValueParams)
18
- : getStartValue);
15
+ const [iterator, fromValue, theFunction] = args;
16
+ let lastValue = unwrap(fromValue);
19
17
  let index = 0;
20
18
  for (const element of iterator) {
21
19
  const result = theFunction({
@@ -37,4 +35,4 @@ function reduce(...args) {
37
35
  return lastValue;
38
36
  }
39
37
 
40
- export { reduce };
38
+ export { reduce, reduceFrom };
package/dist/index.cjs CHANGED
@@ -31,6 +31,8 @@ var whenNot = require('./common/whenNot.cjs');
31
31
  var equal = require('./common/equal.cjs');
32
32
  var not = require('./common/not.cjs');
33
33
  var isType = require('./common/isType.cjs');
34
+ var and = require('./common/and.cjs');
35
+ var or = require('./common/or.cjs');
34
36
  var index = require('./array/index.cjs');
35
37
  var index$1 = require('./number/index.cjs');
36
38
  var index$2 = require('./either/index.cjs');
@@ -78,6 +80,8 @@ exports.whenNot = whenNot.whenNot;
78
80
  exports.equal = equal.equal;
79
81
  exports.not = not.not;
80
82
  exports.isType = isType.isType;
83
+ exports.and = and.and;
84
+ exports.or = or.or;
81
85
  exports.A = index;
82
86
  exports.DArray = index;
83
87
  exports.DNumber = index$1;
package/dist/index.mjs CHANGED
@@ -29,6 +29,8 @@ export { whenNot } from './common/whenNot.mjs';
29
29
  export { equal } from './common/equal.mjs';
30
30
  export { not } from './common/not.mjs';
31
31
  export { isType } from './common/isType.mjs';
32
+ export { and } from './common/and.mjs';
33
+ export { or } from './common/or.mjs';
32
34
  import * as index from './array/index.mjs';
33
35
  export { index as A };
34
36
  export { index as DArray };
@@ -0,0 +1,15 @@
1
+ 'use strict';
2
+
3
+ var equal = require('../common/equal.cjs');
4
+ var getDeepProperty = require('./getDeepProperty.cjs');
5
+
6
+ function deepDiscriminate(...args) {
7
+ if (args.length === 2) {
8
+ const [path, value] = args;
9
+ return (input) => deepDiscriminate(input, path, value);
10
+ }
11
+ const [input, path, value] = args;
12
+ return equal.equal(getDeepProperty.getDeepProperty(input, path), value);
13
+ }
14
+
15
+ exports.deepDiscriminate = deepDiscriminate;
@@ -0,0 +1,11 @@
1
+ import { type EligibleEqual, type MaybeArray } from "../common";
2
+ import { type UnFlatObject, type FlatObject } from "./types";
3
+ import { type GetPropsWithValueExtends } from "./types/getPropsWithValueExtends";
4
+ type ObjectProjection<GenericInput extends object> = FlatObject<GenericInput> extends infer InferredResult extends object ? Omit<Pick<InferredResult, GetPropsWithValueExtends<InferredResult, EligibleEqual>>, `${string}[${string}]${string}`> : never;
5
+ export declare function deepDiscriminate<GenericInput extends object, GenericObjectProjection extends ObjectProjection<GenericInput>, GenericPath extends keyof GenericObjectProjection, GenericValue extends EligibleEqual>(path: GenericPath, value: (MaybeArray<(GenericValue & GenericObjectProjection[GenericPath])> | MaybeArray<GenericObjectProjection[GenericPath]>)): (input: GenericInput) => input is Extract<GenericInput, UnFlatObject<{
6
+ [Prop in GenericPath]: GenericValue;
7
+ }>>;
8
+ export declare function deepDiscriminate<GenericInput extends object, GenericObjectProjection extends ObjectProjection<GenericInput>, GenericPath extends keyof GenericObjectProjection, GenericValue extends EligibleEqual>(input: GenericInput, path: GenericPath, value: (MaybeArray<(GenericValue & GenericObjectProjection[GenericPath])> | MaybeArray<GenericObjectProjection[GenericPath]>)): input is Extract<GenericInput, UnFlatObject<{
9
+ [Prop in GenericPath]: GenericValue;
10
+ }>>;
11
+ export {};
@@ -0,0 +1,13 @@
1
+ import { equal } from '../common/equal.mjs';
2
+ import { getDeepProperty } from './getDeepProperty.mjs';
3
+
4
+ function deepDiscriminate(...args) {
5
+ if (args.length === 2) {
6
+ const [path, value] = args;
7
+ return (input) => deepDiscriminate(input, path, value);
8
+ }
9
+ const [input, path, value] = args;
10
+ return equal(getDeepProperty(input, path), value);
11
+ }
12
+
13
+ export { deepDiscriminate };
@@ -1,15 +1,14 @@
1
1
  'use strict';
2
2
 
3
3
  var equal = require('../common/equal.cjs');
4
- var getDeepProperty = require('./getDeepProperty.cjs');
5
4
 
6
5
  function discriminate(...args) {
7
6
  if (args.length === 2) {
8
- const [path, value] = args;
9
- return (input) => discriminate(input, path, value);
7
+ const [key, value] = args;
8
+ return (input) => discriminate(input, key, value);
10
9
  }
11
- const [input, path, value] = args;
12
- return equal.equal(getDeepProperty.getDeepProperty(input, path), value);
10
+ const [input, key, value] = args;
11
+ return equal.equal(input[key], value);
13
12
  }
14
13
 
15
14
  exports.discriminate = discriminate;
@@ -1,11 +1,7 @@
1
1
  import { type EligibleEqual, type MaybeArray } from "../common";
2
- import { type UnFlatObject, type FlatObject } from "./types";
3
- import { type GetPropsWithValueExtends } from "./types/getPropsWithValueExtends";
4
- type ObjectProjection<GenericInput extends object> = FlatObject<GenericInput> extends infer InferredResult extends object ? Omit<Pick<InferredResult, GetPropsWithValueExtends<InferredResult, EligibleEqual>>, `${string}[${string}]${string}`> : never;
5
- export declare function discriminate<GenericInput extends object, GenericObjectProjection extends ObjectProjection<GenericInput>, GenericPath extends keyof GenericObjectProjection, GenericValue extends EligibleEqual>(path: GenericPath, value: (MaybeArray<(GenericValue & GenericObjectProjection[GenericPath])> | MaybeArray<GenericObjectProjection[GenericPath]>)): (input: GenericInput) => input is Extract<GenericInput, UnFlatObject<{
6
- [Prop in GenericPath]: GenericValue;
7
- }>>;
8
- export declare function discriminate<GenericInput extends object, GenericObjectProjection extends ObjectProjection<GenericInput>, GenericPath extends keyof GenericObjectProjection, GenericValue extends EligibleEqual>(input: GenericInput, path: GenericPath, value: (MaybeArray<(GenericValue & GenericObjectProjection[GenericPath])> | MaybeArray<GenericObjectProjection[GenericPath]>)): input is Extract<GenericInput, UnFlatObject<{
9
- [Prop in GenericPath]: GenericValue;
10
- }>>;
11
- export {};
2
+ export declare function discriminate<GenericInput extends object, GenericKey extends keyof GenericInput, GenericValue extends EligibleEqual>(key: GenericKey, value: (MaybeArray<(GenericValue & Extract<GenericInput[GenericKey], EligibleEqual>)> | MaybeArray<Extract<GenericInput[GenericKey], EligibleEqual>>)): (input: GenericInput) => input is Extract<GenericInput, {
3
+ [Prop in GenericKey]: GenericValue;
4
+ }>;
5
+ export declare function discriminate<GenericInput extends object, GenericKey extends keyof GenericInput, GenericValue extends EligibleEqual>(input: GenericInput, key: GenericKey, value: (MaybeArray<(GenericValue & Extract<GenericInput[GenericKey], EligibleEqual>)> | MaybeArray<Extract<GenericInput[GenericKey], EligibleEqual>>)): input is Extract<GenericInput, {
6
+ [Prop in GenericKey]: GenericValue;
7
+ }>;
@@ -1,13 +1,12 @@
1
1
  import { equal } from '../common/equal.mjs';
2
- import { getDeepProperty } from './getDeepProperty.mjs';
3
2
 
4
3
  function discriminate(...args) {
5
4
  if (args.length === 2) {
6
- const [path, value] = args;
7
- return (input) => discriminate(input, path, value);
5
+ const [key, value] = args;
6
+ return (input) => discriminate(input, key, value);
8
7
  }
9
- const [input, path, value] = args;
10
- return equal(getDeepProperty(input, path), value);
8
+ const [input, key, value] = args;
9
+ return equal(input[key], value);
11
10
  }
12
11
 
13
12
  export { discriminate };
@@ -13,8 +13,9 @@ var assign = require('./assign.cjs');
13
13
  var override = require('./override.cjs');
14
14
  var omit = require('./omit.cjs');
15
15
  var pick = require('./pick.cjs');
16
- var discriminate = require('./discriminate.cjs');
16
+ var deepDiscriminate = require('./deepDiscriminate.cjs');
17
17
  var getDeepProperty = require('./getDeepProperty.cjs');
18
+ var discriminate = require('./discriminate.cjs');
18
19
 
19
20
 
20
21
 
@@ -31,5 +32,6 @@ exports.assign = assign.assign;
31
32
  exports.override = override.override;
32
33
  exports.omit = omit.omit;
33
34
  exports.pick = pick.pick;
34
- exports.discriminate = discriminate.discriminate;
35
+ exports.deepDiscriminate = deepDiscriminate.deepDiscriminate;
35
36
  exports.getDeepProperty = getDeepProperty.getDeepProperty;
37
+ exports.discriminate = discriminate.discriminate;
@@ -12,5 +12,6 @@ export * from "./assign";
12
12
  export * from "./override";
13
13
  export * from "./omit";
14
14
  export * from "./pick";
15
- export * from "./discriminate";
15
+ export * from "./deepDiscriminate";
16
16
  export * from "./getDeepProperty";
17
+ export * from "./discriminate";
@@ -11,5 +11,6 @@ export { assign } from './assign.mjs';
11
11
  export { override } from './override.mjs';
12
12
  export { omit } from './omit.mjs';
13
13
  export { pick } from './pick.mjs';
14
- export { discriminate } from './discriminate.mjs';
14
+ export { deepDiscriminate } from './deepDiscriminate.mjs';
15
15
  export { getDeepProperty } from './getDeepProperty.mjs';
16
+ export { discriminate } from './discriminate.mjs';
@@ -32,6 +32,7 @@ var repeat = require('./repeat.cjs');
32
32
  var normalize = require('./normalize.cjs');
33
33
  var test = require('./test.cjs');
34
34
  var isIn = require('./isIn.cjs');
35
+ var length = require('./length.cjs');
35
36
 
36
37
 
37
38
 
@@ -67,3 +68,4 @@ exports.repeat = repeat.repeat;
67
68
  exports.normalize = normalize.normalize;
68
69
  exports.test = test.test;
69
70
  exports.isIn = isIn.isIn;
71
+ exports.length = length.length;
@@ -27,3 +27,4 @@ export * from "./repeat";
27
27
  export * from "./normalize";
28
28
  export * from "./test";
29
29
  export * from "./isIn";
30
+ export * from "./length";
@@ -30,3 +30,4 @@ export { repeat } from './repeat.mjs';
30
30
  export { normalize } from './normalize.mjs';
31
31
  export { test } from './test.mjs';
32
32
  export { isIn } from './isIn.mjs';
33
+ export { length } from './length.mjs';
@@ -0,0 +1,7 @@
1
+ 'use strict';
2
+
3
+ function length(input) {
4
+ return input.length;
5
+ }
6
+
7
+ exports.length = length;
@@ -0,0 +1,2 @@
1
+ import { type StringLength } from "./types/stringLength";
2
+ export declare function length<GenericInput extends string>(input: GenericInput): StringLength<GenericInput>;
@@ -0,0 +1,5 @@
1
+ function length(input) {
2
+ return input.length;
3
+ }
4
+
5
+ export { length };
@@ -5,3 +5,4 @@ export * from "./endsWith";
5
5
  export * from "./startsWith";
6
6
  export * from "./normalizeForm";
7
7
  export * from "./split";
8
+ export * from "./stringLength";
@@ -0,0 +1,2 @@
1
+ import { type Split } from "./split";
2
+ export type StringLength<GenericString extends string> = Split<GenericString, "">["length"];
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@duplojs/utils",
3
- "version": "1.0.4",
3
+ "version": "1.0.6",
4
4
  "author": "mathcovax",
5
5
  "license": "MIT",
6
6
  "type": "module",