diff --git a/benchmarks/1-object.js b/benchmarks/1-object.js index 0b96610..6220702 100644 --- a/benchmarks/1-object.js +++ b/benchmarks/1-object.js @@ -1,28 +1,6 @@ -import process from "node:process"; +import { benchmark } from "./common.js"; const none = { _type: "none" }; const just = (value) => ({ _type: "just", value }); -const store = Array(10_000); -const base = process.memoryUsage().heapUsed; -let allocated = 0; - -for (let i = 0; i < store.length; i++) { - const random = Math.random(); - - store[i] = random > 0.5 ? just(random) : none; - allocated += store[i] !== none; -} - -const diff = process.memoryUsage().heapUsed - base; -const KB = 1024; - -const total = diff; -const perJust = total / allocated; - -console.log( - (total / KB).toFixed(2), - "KB -", - Math.ceil(perJust), - "bytes / Just" -); +benchmark({ name: "object", just, none }); diff --git a/benchmarks/2-frozen.js b/benchmarks/2-frozen.js index 4a2a56e..65cd597 100644 --- a/benchmarks/2-frozen.js +++ b/benchmarks/2-frozen.js @@ -1,28 +1,6 @@ -import process from "node:process"; +import { benchmark } from "./common.js"; const none = Object.freeze({ _type: "none" }); const just = (value) => Object.freeze({ _type: "just", value }); -const store = Array(10_000); -const base = process.memoryUsage().heapUsed; - -let allocated = 0; - -for (let i = 0; i < store.length; i++) { - const random = Math.random(); - - store[i] = random > 0.5 ? just(random) : none; - allocated += store[i] !== none; -} - -const diff = process.memoryUsage().heapUsed - base; -const KB = 1024; -const total = diff; -const perJust = total / allocated; - -console.log( - (total / KB).toFixed(2), - "KB -", - Math.ceil(perJust), - "bytes / Just" -); +benchmark({ name: "frozen", just, none }); diff --git a/benchmarks/3-class.js b/benchmarks/3-class.js index c8f23c8..719d0e9 100644 --- a/benchmarks/3-class.js +++ b/benchmarks/3-class.js @@ -1,4 +1,4 @@ -import process from "node:process"; +import { benchmark } from "./common.js"; class Just { static create(value) { @@ -25,26 +25,4 @@ class None { } } -const store = Array(10_000); -const base = process.memoryUsage().heapUsed; - -let allocated = 0; - -for (let i = 0; i < store.length; i++) { - const random = Math.random(); - - store[i] = random > 0.5 ? Just.create(random) : None.create(); - allocated += store[i] !== None.create(); -} - -const diff = process.memoryUsage().heapUsed - base; -const KB = 1024; -const total = diff; -const perJust = total / allocated; - -console.log( - (total / KB).toFixed(2), - "KB -", - Math.ceil(perJust), - "bytes / Just" -); +benchmark({ name: "class", just: Just.create, none: None.instance }); diff --git a/benchmarks/4-enum.js b/benchmarks/4-enum.js index 5e82856..5ed2fd5 100644 --- a/benchmarks/4-enum.js +++ b/benchmarks/4-enum.js @@ -1,4 +1,4 @@ -import process from "node:process"; +import { benchmark } from "./common.js"; const Type = Object.freeze({ None: 0, @@ -30,27 +30,4 @@ class None { } } -const store = Array(10_000); -const base = process.memoryUsage().heapUsed; - -let allocated = 0; - -for (let i = 0; i < store.length; i++) { - const random = Math.random(); - - store[i] = random > 0.5 ? Just.create(random) : None.create(); - allocated += store[i] !== None.create(); -} - -const diff = process.memoryUsage().heapUsed - base; -const KB = 1024; - -const total = diff; -const perJust = total / allocated; - -console.log( - (total / KB).toFixed(2), - "KB -", - Math.ceil(perJust), - "bytes / Just" -); +benchmark({ name: "enum", just: Just.create, none: None.instance }); diff --git a/benchmarks/5-enum-getter.js b/benchmarks/5-enum-getter.js new file mode 100644 index 0000000..13b01e5 --- /dev/null +++ b/benchmarks/5-enum-getter.js @@ -0,0 +1,38 @@ +import { benchmark } from "./common.js"; + +const Type = Object.freeze({ + None: 0, + Just: 1 +}); + +class Just { + static create(value) { + return new Just(value); + } + + get type() { + return Type.Just; + } + + constructor(value) { + this.value = value; + Object.freeze(this); + } +} + +class None { + static instance = new None(); + static create() { + return None.instance; + } + + get type() { + return Type.None; + } + + constructor() { + Object.freeze(this); + } +} + +benchmark({ name: "enum + getter", just: Just.create, none: None.instance }) \ No newline at end of file diff --git a/benchmarks/5-enum-pointer.js b/benchmarks/5-enum-pointer.js deleted file mode 100644 index 5e6998b..0000000 --- a/benchmarks/5-enum-pointer.js +++ /dev/null @@ -1,61 +0,0 @@ -import process from "node:process"; - -const Type = Object.freeze({ - None: 0, - Just: 1 -}); - -class Just { - static create(value) { - return new Just(value); - } - - get type() { - return Type.Just; - } - - constructor(value) { - this.value = value; - Object.freeze(this); - } -} - -class None { - static instance = new None(); - static create() { - return None.instance; - } - - get type() { - return Type.None; - } - - constructor() { - Object.freeze(this); - } -} - -const store = Array(10_000); -const base = process.memoryUsage().heapUsed; - -let allocated = 0; - -for (let i = 0; i < store.length; i++) { - const random = Math.random(); - - store[i] = random > 0.5 ? Just.create(random) : None.create(); - allocated += store[i] !== None.create(); -} - -const diff = process.memoryUsage().heapUsed - base; -const KB = 1024; - -const total = diff; -const perJust = total / allocated; - -console.log( - (total / KB).toFixed(2), - "KB -", - Math.ceil(perJust), - "bytes / Just" -); diff --git a/benchmarks/6-full-name-getter.js b/benchmarks/6-full-name-getter.js new file mode 100644 index 0000000..6d03da7 --- /dev/null +++ b/benchmarks/6-full-name-getter.js @@ -0,0 +1,42 @@ +import { benchmark } from "./common.js"; + +const Type = Object.freeze({ + None: "None", + Just: "Just" +}); + +class Just { + static create(value) { + return new Just(value); + } + + get type() { + return Type.Just; + } + + constructor(value) { + this.value = value; + Object.freeze(this); + } +} + +class None { + static instance = new None(); + static create() { + return None.instance; + } + + get type() { + return Type.None; + } + + constructor() { + Object.freeze(this); + } +} + +benchmark({ + name: "full type name + getter", + just: Just.create, + none: None.instance +}); diff --git a/benchmarks/common.js b/benchmarks/common.js new file mode 100644 index 0000000..28ca6fd --- /dev/null +++ b/benchmarks/common.js @@ -0,0 +1,43 @@ +export function benchmark({ + name, + just, + none, + count = 100_000, + iterations = 20 +}) { + console.log("Benchmarking implementation:", { name, count, iterations }); + const results = []; + + for (let i = 0; i < iterations; i++) { + const store = Array(count); + const base = process.memoryUsage().heapUsed; + let allocated = 0; + + for (let i = 0; i < store.length; i++) { + const random = Math.random(); + const isJust = random > 0.5; + + store[i] = random > 0.5 ? just(random) : none; + allocated += isJust; + } + + const diff = process.memoryUsage().heapUsed - base; + const KB = 1024; + + const total = diff; + const perJust = total / allocated; + + results.push(perJust); + + console.log( + (total / KB).toFixed(2), + "KB diff -", + Math.ceil(perJust), + "bytes / Just" + ); + } + + const average = results.reduce((a, b) => a + b, 0) / results.length; + + console.log("Benchmark done", { averageBytes: average }); +} diff --git a/docs/api/classes/internal_.EitherConstructor.md b/docs/api/classes/internal_.EitherConstructor.md index 3b94e37..694921b 100644 --- a/docs/api/classes/internal_.EitherConstructor.md +++ b/docs/api/classes/internal_.EitherConstructor.md @@ -24,6 +24,7 @@ - [`AsyncMonad`](../interfaces/AsyncMonad.md)\<`R`\> - [`Alternative`](../interfaces/Alternative.md)\<`R`\> - [`Container`](../interfaces/Container.md)\<`R`\> +- [`Pipe`](../interfaces/internal_.Pipe.md) ## Table of contents @@ -43,8 +44,6 @@ - [chain](internal_.EitherConstructor.md#chain) - [default](internal_.EitherConstructor.md#default) - [fold](internal_.EitherConstructor.md#fold) -- [getLeft](internal_.EitherConstructor.md#getleft) -- [getRight](internal_.EitherConstructor.md#getright) - [isLeft](internal_.EitherConstructor.md#isleft) - [isRight](internal_.EitherConstructor.md#isright) - [join](internal_.EitherConstructor.md#join) @@ -54,6 +53,7 @@ - [or](internal_.EitherConstructor.md#or) - [orAsync](internal_.EitherConstructor.md#orasync) - [orLazy](internal_.EitherConstructor.md#orlazy) +- [pipe](internal_.EitherConstructor.md#pipe) - [promise](internal_.EitherConstructor.md#promise) - [swap](internal_.EitherConstructor.md#swap) - [tap](internal_.EitherConstructor.md#tap) @@ -101,7 +101,7 @@ #### Defined in -dist/either.d.ts:41 +dist/either.d.ts:67 ___ @@ -121,7 +121,7 @@ ___ | Name | Type | | :------ | :------ | -| `this` | [`Either`](../modules/internal_.md#either)\<`L`, [`Pm`](../modules/internal_.md#pm)\<`A`, `B`, `P`\>\> | +| `this` | [`Either`](../modules/internal_.md#either)\<`L`, [`Mapper`](../modules/internal_.md#mapper)\<`A`, `B`, `P`\>\> | | `argument` | [`Either`](../modules/internal_.md#either)\<`L`, `A`\> | | `...parameters` | `P` | @@ -135,7 +135,7 @@ ___ #### Defined in -dist/either.d.ts:21 +dist/either.d.ts:20 ▸ **apply**\<`A`, `B`, `P`\>(`this`, `map`, `...parameters`): [`Either`](../modules/internal_.md#either)\<`L`, `B`\> @@ -152,7 +152,7 @@ dist/either.d.ts:21 | Name | Type | | :------ | :------ | | `this` | [`Either`](../modules/internal_.md#either)\<`L`, `A`\> | -| `map` | [`Either`](../modules/internal_.md#either)\<`L`, [`Pm`](../modules/internal_.md#pm)\<`A`, `B`, `P`\>\> | +| `map` | [`Either`](../modules/internal_.md#either)\<`L`, [`Mapper`](../modules/internal_.md#mapper)\<`A`, `B`, `P`\>\> | | `...parameters` | `P` | #### Returns @@ -165,7 +165,7 @@ dist/either.d.ts:21 #### Defined in -dist/either.d.ts:22 +dist/either.d.ts:21 ___ @@ -185,7 +185,7 @@ ___ | Name | Type | | :------ | :------ | -| `this` | [`Either`](../modules/internal_.md#either)\<`L`, [`Pm`](../modules/internal_.md#pm)\<`A`, [`MaybePromiseLike`](../modules.md#maybepromiselike)\<`B`\>, `P`\>\> | +| `this` | [`Either`](../modules/internal_.md#either)\<`L`, [`Mapper`](../modules/internal_.md#mapper)\<`A`, [`MaybePromiseLike`](../modules.md#maybepromiselike)\<`B`\>, `P`\>\> | | `argument` | [`Either`](../modules/internal_.md#either)\<`L`, `A`\> | | `...parameters` | `P` | @@ -195,7 +195,7 @@ ___ #### Defined in -dist/either.d.ts:23 +dist/either.d.ts:22 ▸ **asyncApply**\<`A`, `B`, `P`\>(`this`, `map`, `...parameters`): `Promise`\<[`Either`](../modules/internal_.md#either)\<`L`, `B`\>\> @@ -212,7 +212,7 @@ dist/either.d.ts:23 | Name | Type | | :------ | :------ | | `this` | [`Either`](../modules/internal_.md#either)\<`L`, `A`\> | -| `map` | [`Either`](../modules/internal_.md#either)\<`L`, [`Pm`](../modules/internal_.md#pm)\<`A`, [`MaybePromiseLike`](../modules.md#maybepromiselike)\<`B`\>, `P`\>\> | +| `map` | [`Either`](../modules/internal_.md#either)\<`L`, [`Mapper`](../modules/internal_.md#mapper)\<`A`, [`MaybePromiseLike`](../modules.md#maybepromiselike)\<`B`\>, `P`\>\> | | `...parameters` | `P` | #### Returns @@ -221,7 +221,7 @@ dist/either.d.ts:23 #### Defined in -dist/either.d.ts:24 +dist/either.d.ts:23 ___ @@ -241,7 +241,7 @@ ___ | Name | Type | | :------ | :------ | -| `map` | [`Pm`](../modules/internal_.md#pm)\<`R`, [`MaybePromiseLike`](../modules.md#maybepromiselike)\<[`Either`](../modules/internal_.md#either)\<`A`, `B`\>\>, `P`\> | +| `map` | [`Mapper`](../modules/internal_.md#mapper)\<`R`, [`MaybePromiseLike`](../modules.md#maybepromiselike)\<[`Either`](../modules/internal_.md#either)\<`A`, `B`\>\>, `P`\> | | `...parameters` | `P` | #### Returns @@ -254,7 +254,7 @@ ___ #### Defined in -dist/either.d.ts:28 +dist/either.d.ts:27 ___ @@ -274,7 +274,7 @@ ___ | Name | Type | | :------ | :------ | -| `map` | [`Pm`](../modules/internal_.md#pm)\<`R`, [`MaybePromiseLike`](../modules.md#maybepromiselike)\<`B`\>, `P`\> | +| `map` | [`Mapper`](../modules/internal_.md#mapper)\<`R`, [`MaybePromiseLike`](../modules.md#maybepromiselike)\<`B`\>, `P`\> | | `...parameters` | `P` | #### Returns @@ -283,7 +283,7 @@ ___ #### Defined in -dist/either.d.ts:29 +dist/either.d.ts:28 ___ @@ -313,7 +313,7 @@ ___ #### Defined in -dist/either.d.ts:30 +dist/either.d.ts:29 ___ @@ -332,8 +332,8 @@ ___ | Name | Type | | :------ | :------ | -| `mapLeft` | [`Pm`](../modules/internal_.md#pm)\<`L`, `A`\> | -| `mapRight` | [`Pm`](../modules/internal_.md#pm)\<`R`, `B`\> | +| `mapLeft` | [`Mapper`](../modules/internal_.md#mapper)\<`L`, `A`\> | +| `mapRight` | [`Mapper`](../modules/internal_.md#mapper)\<`R`, `B`\> | #### Returns @@ -341,7 +341,7 @@ ___ #### Defined in -dist/either.d.ts:27 +dist/either.d.ts:26 ___ @@ -361,7 +361,7 @@ ___ | Name | Type | | :------ | :------ | -| `map` | [`Pm`](../modules/internal_.md#pm)\<`R`, [`Either`](../modules/internal_.md#either)\<`A`, `B`\>, `P`\> | +| `map` | [`Mapper`](../modules/internal_.md#mapper)\<`R`, [`Either`](../modules/internal_.md#either)\<`A`, `B`\>, `P`\> | | `...parameters` | `P` | #### Returns @@ -374,7 +374,7 @@ ___ #### Defined in -dist/either.d.ts:26 +dist/either.d.ts:25 ___ @@ -398,7 +398,7 @@ ___ #### Defined in -dist/either.d.ts:32 +dist/either.d.ts:38 ___ @@ -417,44 +417,20 @@ ___ | Name | Type | | :------ | :------ | -| `mapLeft` | [`Pm`](../modules/internal_.md#pm)\<`L`, `A`\> | -| `mapRight` | [`Pm`](../modules/internal_.md#pm)\<`R`, `B`\> | +| `mapLeft` | [`Mapper`](../modules/internal_.md#mapper)\<`L`, `A`\> | +| `mapRight` | [`Mapper`](../modules/internal_.md#mapper)\<`R`, `B`\> | #### Returns `A` \| `B` -#### Defined in - -dist/either.d.ts:31 - -___ - -### getLeft - -▸ **getLeft**(): `undefined` \| `L` - -#### Returns - -`undefined` \| `L` +**`Throws`** -#### Defined in - -dist/either.d.ts:11 - -___ - -### getRight - -▸ **getRight**(): `undefined` \| `R` - -#### Returns - -`undefined` \| `R` +- [InvalidStateError](InvalidStateError.md) if Either state is neither Left neither Right, this probably should never happen #### Defined in -dist/either.d.ts:10 +dist/either.d.ts:37 ___ @@ -468,7 +444,7 @@ this is Left\ #### Defined in -dist/either.d.ts:13 +dist/either.d.ts:12 ___ @@ -482,7 +458,7 @@ this is Right\ #### Defined in -dist/either.d.ts:14 +dist/either.d.ts:13 ___ @@ -514,7 +490,7 @@ ___ #### Defined in -dist/either.d.ts:17 +dist/either.d.ts:16 ___ @@ -533,7 +509,7 @@ ___ | Name | Type | | :------ | :------ | -| `map` | [`Pm`](../modules/internal_.md#pm)\<`R`, `T`, `P`\> | +| `map` | [`Mapper`](../modules/internal_.md#mapper)\<`R`, `T`, `P`\> | | `...parameters` | `P` | #### Returns @@ -546,7 +522,7 @@ ___ #### Defined in -dist/either.d.ts:19 +dist/either.d.ts:18 ___ @@ -565,7 +541,7 @@ ___ | Name | Type | | :------ | :------ | -| `map` | [`Pm`](../modules/internal_.md#pm)\<`L`, `T`, `P`\> | +| `map` | [`Mapper`](../modules/internal_.md#mapper)\<`L`, `T`, `P`\> | | `...parameters` | `P` | #### Returns @@ -574,7 +550,7 @@ ___ #### Defined in -dist/either.d.ts:18 +dist/either.d.ts:17 ___ @@ -593,7 +569,7 @@ ___ | Name | Type | | :------ | :------ | -| `map` | [`Pm`](../modules/internal_.md#pm)\<`R`, `T`, `P`\> | +| `map` | [`Mapper`](../modules/internal_.md#mapper)\<`R`, `T`, `P`\> | | `...parameters` | `P` | #### Returns @@ -602,7 +578,7 @@ ___ #### Defined in -dist/either.d.ts:20 +dist/either.d.ts:19 ___ @@ -626,7 +602,7 @@ ___ #### Defined in -dist/either.d.ts:33 +dist/either.d.ts:39 ___ @@ -646,7 +622,7 @@ ___ #### Defined in -dist/either.d.ts:35 +dist/either.d.ts:41 ___ @@ -666,7 +642,39 @@ ___ #### Defined in -dist/either.d.ts:34 +dist/either.d.ts:40 + +___ + +### pipe + +▸ **pipe**\<`T`, `P`\>(`pipe`, `...parameters`): `T` + +#### Type parameters + +| Name | Type | +| :------ | :------ | +| `T` | `T` | +| `P` | extends [`AnyParameters`](../modules.md#anyparameters) | + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `pipe` | [`Mapper`](../modules/internal_.md#mapper)\<[`Either`](../modules/internal_.md#either)\<`L`, `R`\>, `T`, `P`\> | +| `...parameters` | `P` | + +#### Returns + +`T` + +#### Implementation of + +[Pipe](../interfaces/internal_.Pipe.md).[pipe](../interfaces/internal_.Pipe.md#pipe) + +#### Defined in + +dist/either.d.ts:11 ___ @@ -680,7 +688,7 @@ ___ #### Defined in -dist/either.d.ts:38 +dist/either.d.ts:52 ___ @@ -694,7 +702,7 @@ ___ #### Defined in -dist/either.d.ts:25 +dist/either.d.ts:24 ___ @@ -712,7 +720,7 @@ ___ | Name | Type | | :------ | :------ | -| `callback` | [`Pm`](../modules/internal_.md#pm)\<`R`, `void`, `P`\> | +| `callback` | [`Mapper`](../modules/internal_.md#mapper)\<`R`, `void`, `P`\> | | `...parameters` | `P` | #### Returns @@ -721,7 +729,7 @@ ___ #### Defined in -dist/either.d.ts:12 +dist/either.d.ts:10 ___ @@ -733,9 +741,15 @@ ___ `R` +- Right value if current state is Right, + +**`Throws`** + +- L if current state is Left + #### Defined in -dist/either.d.ts:39 +dist/either.d.ts:58 ___ @@ -745,43 +759,53 @@ ___ #### Parameters -| Name | Type | -| :------ | :------ | -| `message?` | `string` | +| Name | Type | Description | +| :------ | :------ | :------ | +| `message?` | `string` | Error message, if either is left. By default "Either state is Left" | #### Returns `R` +- Right value of Either, if right + +**`Deprecated`** + +- **If Left value is Error use [throw](internal_.Right.md#throw) instead** + +**`Throws`** + +- [UnwrapCustomError](UnwrapCustomError.md) is Left with provided message + #### Implementation of [Container](../interfaces/Container.md).[unwrap](../interfaces/Container.md#unwrap) #### Defined in -dist/either.d.ts:37 +dist/either.d.ts:51 ___ ### unwrapOr -▸ **unwrapOr**\<`X`\>(`value`): `R` \| `X` +▸ **unwrapOr**\<`T`\>(`value`): `R` \| `T` #### Type parameters | Name | | :------ | -| `X` | +| `T` | #### Parameters | Name | Type | | :------ | :------ | -| `value` | `X` | +| `value` | `T` | #### Returns -`R` \| `X` +`R` \| `T` #### Implementation of @@ -789,33 +813,33 @@ ___ #### Defined in -dist/either.d.ts:16 +dist/either.d.ts:15 ___ ### unwrapOrElse -▸ **unwrapOrElse**\<`X`\>(`fallback`): `R` \| `X` +▸ **unwrapOrElse**\<`T`\>(`fallback`): `R` \| `T` #### Type parameters | Name | | :------ | -| `X` | +| `T` | #### Parameters | Name | Type | | :------ | :------ | -| `fallback` | (`value`: `L`) => `X` | +| `fallback` | (`value`: `L`) => `T` | #### Returns -`R` \| `X` +`R` \| `T` #### Defined in -dist/either.d.ts:15 +dist/either.d.ts:14 ___ @@ -823,13 +847,23 @@ ___ ▸ **value**(): `L` \| `R` +Return value of Either independent if it is Right or Left + #### Returns `L` \| `R` +**`Deprecated`** + +- probably should not be used, please refactor code or use [fold](internal_.Right.md#fold) + +**`See`** + +[fold](internal_.Right.md#fold) + #### Defined in -dist/either.d.ts:40 +dist/either.d.ts:66 ___ @@ -856,4 +890,4 @@ ___ #### Defined in -dist/either.d.ts:36 +dist/either.d.ts:42 diff --git a/docs/api/classes/internal_.Identity.md b/docs/api/classes/internal_.Identity.md new file mode 100644 index 0000000..c5ee334 --- /dev/null +++ b/docs/api/classes/internal_.Identity.md @@ -0,0 +1,620 @@ +[Package](../README.md) / [Exports](../modules.md) / [\](../modules/internal_.md) / Identity + +# Class: Identity\ + +[\](../modules/internal_.md).Identity + +## Type parameters + +| Name | +| :------ | +| `T` | + +## Implements + +- [`AsyncMonad`](../interfaces/AsyncMonad.md)\<`T`\> +- [`Container`](../interfaces/Container.md)\<`T`\> +- [`Pipe`](../interfaces/internal_.Pipe.md) + +## Table of contents + +### Constructors + +- [constructor](internal_.Identity.md#constructor) + +### Properties + +- [value](internal_.Identity.md#value) + +### Accessors + +- [[toStringTag]](internal_.Identity.md#[tostringtag]) +- [name](internal_.Identity.md#name) + +### Methods + +- [apply](internal_.Identity.md#apply) +- [asyncApply](internal_.Identity.md#asyncapply) +- [asyncChain](internal_.Identity.md#asyncchain) +- [asyncMap](internal_.Identity.md#asyncmap) +- [await](internal_.Identity.md#await) +- [chain](internal_.Identity.md#chain) +- [fold](internal_.Identity.md#fold) +- [join](internal_.Identity.md#join) +- [map](internal_.Identity.md#map) +- [pipe](internal_.Identity.md#pipe) +- [tap](internal_.Identity.md#tap) +- [unwrap](internal_.Identity.md#unwrap) +- [unwrapOr](internal_.Identity.md#unwrapor) +- [unwrapOrElse](internal_.Identity.md#unwraporelse) +- [zip](internal_.Identity.md#zip) +- [from](internal_.Identity.md#from) + +## Constructors + +### constructor + +• `Private` **new Identity**\<`T`\>() + +#### Type parameters + +| Name | +| :------ | +| `T` | + +#### Defined in + +dist/identity.d.ts:8 + +## Properties + +### value + +• `Readonly` **value**: `T` + +#### Defined in + +dist/identity.d.ts:4 + +## Accessors + +### [toStringTag] + +• `get` **[toStringTag]**(): ``"Identity"`` + +#### Returns + +``"Identity"`` + +#### Defined in + +dist/identity.d.ts:6 + +___ + +### name + +• `get` **name**(): ``"Identity"`` + +#### Returns + +``"Identity"`` + +#### Defined in + +dist/identity.d.ts:7 + +## Methods + +### apply + +▸ **apply**\<`A`, `B`, `P`\>(`this`, `argument`, `...parameters`): [`Identity`](internal_.Identity.md)\<`B`\> + +#### Type parameters + +| Name | Type | +| :------ | :------ | +| `A` | `A` | +| `B` | `B` | +| `P` | extends [`AnyParameters`](../modules.md#anyparameters) | + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `this` | [`Identity`](internal_.Identity.md)\<[`Mapper`](../modules/internal_.md#mapper)\<`A`, `B`, `P`\>\> | +| `argument` | [`Identity`](internal_.Identity.md)\<`A`\> | +| `...parameters` | `P` | + +#### Returns + +[`Identity`](internal_.Identity.md)\<`B`\> + +#### Implementation of + +[AsyncMonad](../interfaces/AsyncMonad.md).[apply](../interfaces/AsyncMonad.md#apply) + +#### Defined in + +dist/identity.d.ts:15 + +▸ **apply**\<`A`, `B`, `P`\>(`this`, `map`, `...parameters`): [`Identity`](internal_.Identity.md)\<`B`\> + +#### Type parameters + +| Name | Type | +| :------ | :------ | +| `A` | `A` | +| `B` | `B` | +| `P` | extends [`AnyParameters`](../modules.md#anyparameters) | + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `this` | [`Identity`](internal_.Identity.md)\<`A`\> | +| `map` | [`Identity`](internal_.Identity.md)\<[`Mapper`](../modules/internal_.md#mapper)\<`A`, `B`, `P`\>\> | +| `...parameters` | `P` | + +#### Returns + +[`Identity`](internal_.Identity.md)\<`B`\> + +#### Implementation of + +[AsyncMonad](../interfaces/AsyncMonad.md).[apply](../interfaces/AsyncMonad.md#apply) + +#### Defined in + +dist/identity.d.ts:16 + +___ + +### asyncApply + +▸ **asyncApply**\<`A`, `B`, `P`\>(`this`, `argument`, `...parameters`): `Promise`\<[`Identity`](internal_.Identity.md)\<`B`\>\> + +#### Type parameters + +| Name | Type | +| :------ | :------ | +| `A` | `A` | +| `B` | `B` | +| `P` | extends [`AnyParameters`](../modules.md#anyparameters) | + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `this` | [`Identity`](internal_.Identity.md)\<[`Mapper`](../modules/internal_.md#mapper)\<`A`, [`MaybePromiseLike`](../modules.md#maybepromiselike)\<`B`\>, `P`\>\> | +| `argument` | [`Identity`](internal_.Identity.md)\<`A`\> | +| `...parameters` | `P` | + +#### Returns + +`Promise`\<[`Identity`](internal_.Identity.md)\<`B`\>\> + +#### Defined in + +dist/identity.d.ts:17 + +▸ **asyncApply**\<`A`, `B`, `P`\>(`this`, `map`, `...parameters`): `Promise`\<[`Identity`](internal_.Identity.md)\<`B`\>\> + +#### Type parameters + +| Name | Type | +| :------ | :------ | +| `A` | `A` | +| `B` | `B` | +| `P` | extends [`AnyParameters`](../modules.md#anyparameters) | + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `this` | [`Identity`](internal_.Identity.md)\<`A`\> | +| `map` | [`Identity`](internal_.Identity.md)\<[`Mapper`](../modules/internal_.md#mapper)\<`A`, [`MaybePromiseLike`](../modules.md#maybepromiselike)\<`B`\>, `P`\>\> | +| `...parameters` | `P` | + +#### Returns + +`Promise`\<[`Identity`](internal_.Identity.md)\<`B`\>\> + +#### Defined in + +dist/identity.d.ts:18 + +___ + +### asyncChain + +▸ **asyncChain**\<`B`, `P`\>(`map`, `...parameters`): `Promise`\<[`Identity`](internal_.Identity.md)\<`B`\>\> + +#### Type parameters + +| Name | Type | +| :------ | :------ | +| `B` | `B` | +| `P` | extends [`AnyParameters`](../modules.md#anyparameters) | + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `map` | [`Mapper`](../modules/internal_.md#mapper)\<`T`, [`MaybePromiseLike`](../modules.md#maybepromiselike)\<[`Identity`](internal_.Identity.md)\<`B`\>\>, `P`\> | +| `...parameters` | `P` | + +#### Returns + +`Promise`\<[`Identity`](internal_.Identity.md)\<`B`\>\> + +#### Implementation of + +[AsyncMonad](../interfaces/AsyncMonad.md).[asyncChain](../interfaces/AsyncMonad.md#asyncchain) + +#### Defined in + +dist/identity.d.ts:20 + +___ + +### asyncMap + +▸ **asyncMap**\<`B`, `P`\>(`map`, `...parameters`): `Promise`\<[`Identity`](internal_.Identity.md)\<`B`\>\> + +#### Type parameters + +| Name | Type | +| :------ | :------ | +| `B` | `B` | +| `P` | extends [`AnyParameters`](../modules.md#anyparameters) | + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `map` | [`Mapper`](../modules/internal_.md#mapper)\<`T`, [`MaybePromiseLike`](../modules.md#maybepromiselike)\<`B`\>, `P`\> | +| `...parameters` | `P` | + +#### Returns + +`Promise`\<[`Identity`](internal_.Identity.md)\<`B`\>\> + +#### Defined in + +dist/identity.d.ts:21 + +___ + +### await + +▸ **await**\<`X`\>(`this`): `Promise`\<[`Identity`](internal_.Identity.md)\<`X`\>\> + +#### Type parameters + +| Name | +| :------ | +| `X` | + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `this` | [`Identity`](internal_.Identity.md)\<[`MaybePromiseLike`](../modules.md#maybepromiselike)\<`X`\>\> | + +#### Returns + +`Promise`\<[`Identity`](internal_.Identity.md)\<`X`\>\> + +#### Implementation of + +[AsyncMonad](../interfaces/AsyncMonad.md).[await](../interfaces/AsyncMonad.md#await) + +#### Defined in + +dist/identity.d.ts:22 + +___ + +### chain + +▸ **chain**\<`B`, `P`\>(`map`, `...parameters`): [`Identity`](internal_.Identity.md)\<`B`\> + +#### Type parameters + +| Name | Type | +| :------ | :------ | +| `B` | `B` | +| `P` | extends [`AnyParameters`](../modules.md#anyparameters) | + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `map` | [`Mapper`](../modules/internal_.md#mapper)\<`T`, [`Identity`](internal_.Identity.md)\<`B`\>, `P`\> | +| `...parameters` | `P` | + +#### Returns + +[`Identity`](internal_.Identity.md)\<`B`\> + +#### Implementation of + +[AsyncMonad](../interfaces/AsyncMonad.md).[chain](../interfaces/AsyncMonad.md#chain) + +#### Defined in + +dist/identity.d.ts:19 + +___ + +### fold + +▸ **fold**\<`A`\>(`mapper`): `A` + +#### Type parameters + +| Name | +| :------ | +| `A` | + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `mapper` | [`Mapper`](../modules/internal_.md#mapper)\<`T`, `A`\> | + +#### Returns + +`A` + +#### Defined in + +dist/identity.d.ts:23 + +___ + +### join + +▸ **join**\<`A`\>(`this`): [`Identity`](internal_.Identity.md)\<`A`\> + +#### Type parameters + +| Name | +| :------ | +| `A` | + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `this` | [`Identity`](internal_.Identity.md)\<[`Identity`](internal_.Identity.md)\<`A`\>\> | + +#### Returns + +[`Identity`](internal_.Identity.md)\<`A`\> + +#### Implementation of + +[AsyncMonad](../interfaces/AsyncMonad.md).[join](../interfaces/AsyncMonad.md#join) + +#### Defined in + +dist/identity.d.ts:13 + +___ + +### map + +▸ **map**\<`A`, `P`\>(`map`, `...parameters`): [`Identity`](internal_.Identity.md)\<`A`\> + +#### Type parameters + +| Name | Type | +| :------ | :------ | +| `A` | `A` | +| `P` | extends [`AnyParameters`](../modules.md#anyparameters) | + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `map` | [`Mapper`](../modules/internal_.md#mapper)\<`T`, `A`, `P`\> | +| `...parameters` | `P` | + +#### Returns + +[`Identity`](internal_.Identity.md)\<`A`\> + +#### Implementation of + +[AsyncMonad](../interfaces/AsyncMonad.md).[map](../interfaces/AsyncMonad.md#map) + +#### Defined in + +dist/identity.d.ts:14 + +___ + +### pipe + +▸ **pipe**\<`A`, `P`\>(`pipe`, `...parameters`): `A` + +#### Type parameters + +| Name | Type | +| :------ | :------ | +| `A` | `A` | +| `P` | extends [`AnyParameters`](../modules.md#anyparameters) | + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `pipe` | [`Mapper`](../modules/internal_.md#mapper)\<[`Identity`](internal_.Identity.md)\<`T`\>, `A`, `P`\> | +| `...parameters` | `P` | + +#### Returns + +`A` + +#### Implementation of + +[Pipe](../interfaces/internal_.Pipe.md).[pipe](../interfaces/internal_.Pipe.md#pipe) + +#### Defined in + +dist/identity.d.ts:10 + +___ + +### tap + +▸ **tap**\<`P`\>(`callback`, `...parameters`): [`Identity`](internal_.Identity.md)\<`T`\> + +#### Type parameters + +| Name | Type | +| :------ | :------ | +| `P` | extends [`AnyParameters`](../modules.md#anyparameters) | + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `callback` | [`Mapper`](../modules/internal_.md#mapper)\<`T`, `void`, `P`\> | +| `...parameters` | `P` | + +#### Returns + +[`Identity`](internal_.Identity.md)\<`T`\> + +#### Defined in + +dist/identity.d.ts:9 + +___ + +### unwrap + +▸ **unwrap**(): `T` + +#### Returns + +`T` + +#### Implementation of + +[Container](../interfaces/Container.md).[unwrap](../interfaces/Container.md#unwrap) + +#### Defined in + +dist/identity.d.ts:25 + +___ + +### unwrapOr + +▸ **unwrapOr**\<`X`\>(`value`): `T` \| `X` + +#### Type parameters + +| Name | +| :------ | +| `X` | + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `value` | `X` | + +#### Returns + +`T` \| `X` + +#### Implementation of + +[Container](../interfaces/Container.md).[unwrapOr](../interfaces/Container.md#unwrapor) + +#### Defined in + +dist/identity.d.ts:12 + +___ + +### unwrapOrElse + +▸ **unwrapOrElse**\<`X`\>(`fallback`): `T` \| `X` + +#### Type parameters + +| Name | +| :------ | +| `X` | + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `fallback` | () => `X` | + +#### Returns + +`T` \| `X` + +#### Defined in + +dist/identity.d.ts:11 + +___ + +### zip + +▸ **zip**\<`A`\>(`either`): [`Identity`](internal_.Identity.md)\<[`T`, `A`]\> + +#### Type parameters + +| Name | +| :------ | +| `A` | + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `either` | [`Identity`](internal_.Identity.md)\<`A`\> | + +#### Returns + +[`Identity`](internal_.Identity.md)\<[`T`, `A`]\> + +#### Defined in + +dist/identity.d.ts:24 + +___ + +### from + +▸ `Static` **from**\<`T`\>(`value`): [`Identity`](internal_.Identity.md)\<`T`\> + +#### Type parameters + +| Name | Type | +| :------ | :------ | +| `T` | `never` | + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `value` | `T` | + +#### Returns + +[`Identity`](internal_.Identity.md)\<`T`\> + +#### Defined in + +dist/identity.d.ts:5 diff --git a/docs/api/classes/internal_.Just.md b/docs/api/classes/internal_.Just.md index 827f051..a67bc70 100644 --- a/docs/api/classes/internal_.Just.md +++ b/docs/api/classes/internal_.Just.md @@ -56,6 +56,7 @@ - [or](internal_.Just.md#or) - [orAsync](internal_.Just.md#orasync) - [orLazy](internal_.Just.md#orlazy) +- [pipe](internal_.Just.md#pipe) - [tap](internal_.Just.md#tap) - [toJSON](internal_.Just.md#tojson) - [unwrap](internal_.Just.md#unwrap) @@ -82,7 +83,7 @@ #### Defined in -dist/maybe.d.ts:49 +dist/maybe.d.ts:53 ## Properties @@ -96,21 +97,21 @@ SerializedJust.value #### Defined in -dist/maybe.d.ts:44 +dist/maybe.d.ts:48 ## Accessors ### [toStringTag] -• `get` **[toStringTag]**(): ``"Just"`` +• `get` **[toStringTag]**(): [`Just`](../modules/internal_.md#just) #### Returns -``"Just"`` +[`Just`](../modules/internal_.md#just) #### Defined in -dist/maybe.d.ts:46 +dist/maybe.d.ts:50 ___ @@ -128,7 +129,7 @@ SerializedJust.name #### Defined in -dist/maybe.d.ts:47 +dist/maybe.d.ts:51 ___ @@ -146,7 +147,7 @@ SerializedJust.type #### Defined in -dist/maybe.d.ts:48 +dist/maybe.d.ts:52 ## Methods @@ -166,7 +167,7 @@ dist/maybe.d.ts:48 | Name | Type | | :------ | :------ | -| `this` | [`Maybe`](../modules/internal_.md#maybe)\<[`Pm`](../modules/internal_.md#pm)\<`A`, `B`, `P`\>\> | +| `this` | [`Maybe`](../modules/internal_.md#maybe)\<[`Mapper`](../modules/internal_.md#mapper)\<`A`, `B`, `P`\>\> | | `argument` | [`Maybe`](../modules/internal_.md#maybe)\<`A`\> | | `...parameters` | `P` | @@ -180,7 +181,7 @@ dist/maybe.d.ts:48 #### Defined in -dist/maybe.d.ts:18 +dist/maybe.d.ts:22 ▸ **apply**\<`A`, `B`, `P`\>(`this`, `argument`, `...parameters`): [`Maybe`](../modules/internal_.md#maybe)\<`B`\> @@ -197,7 +198,7 @@ dist/maybe.d.ts:18 | Name | Type | | :------ | :------ | | `this` | [`Maybe`](../modules/internal_.md#maybe)\<`A`\> | -| `argument` | [`Maybe`](../modules/internal_.md#maybe)\<[`Pm`](../modules/internal_.md#pm)\<`A`, `B`, `P`\>\> | +| `argument` | [`Maybe`](../modules/internal_.md#maybe)\<[`Mapper`](../modules/internal_.md#mapper)\<`A`, `B`, `P`\>\> | | `...parameters` | `P` | #### Returns @@ -210,7 +211,7 @@ dist/maybe.d.ts:18 #### Defined in -dist/maybe.d.ts:19 +dist/maybe.d.ts:23 ___ @@ -230,7 +231,7 @@ ___ | Name | Type | | :------ | :------ | -| `this` | [`Maybe`](../modules/internal_.md#maybe)\<[`Pm`](../modules/internal_.md#pm)\<`A`, [`MaybePromiseLike`](../modules.md#maybepromiselike)\<`B`\>, `P`\>\> | +| `this` | [`Maybe`](../modules/internal_.md#maybe)\<[`Mapper`](../modules/internal_.md#mapper)\<`A`, [`MaybePromiseLike`](../modules.md#maybepromiselike)\<`B`\>, `P`\>\> | | `argument` | [`Maybe`](../modules/internal_.md#maybe)\<`A`\> | | `...parameters` | `P` | @@ -244,7 +245,7 @@ ___ #### Defined in -dist/maybe.d.ts:35 +dist/maybe.d.ts:39 ▸ **asyncApply**\<`A`, `B`, `P`\>(`this`, `map`, `...parameters`): `Promise`\<[`Maybe`](../modules/internal_.md#maybe)\<`B`\>\> @@ -261,7 +262,7 @@ dist/maybe.d.ts:35 | Name | Type | | :------ | :------ | | `this` | [`Maybe`](../modules/internal_.md#maybe)\<`A`\> | -| `map` | [`Maybe`](../modules/internal_.md#maybe)\<[`Pm`](../modules/internal_.md#pm)\<`A`, [`MaybePromiseLike`](../modules.md#maybepromiselike)\<`B`\>, `P`\>\> | +| `map` | [`Maybe`](../modules/internal_.md#maybe)\<[`Mapper`](../modules/internal_.md#mapper)\<`A`, [`MaybePromiseLike`](../modules.md#maybepromiselike)\<`B`\>, `P`\>\> | | `...parameters` | `P` | #### Returns @@ -274,31 +275,31 @@ dist/maybe.d.ts:35 #### Defined in -dist/maybe.d.ts:36 +dist/maybe.d.ts:40 ___ ### asyncChain -▸ **asyncChain**\<`V`, `P`\>(`map`, `...parameters`): `Promise`\<[`Maybe`](../modules/internal_.md#maybe)\<`V`\>\> +▸ **asyncChain**\<`T`, `P`\>(`map`, `...parameters`): `Promise`\<[`Maybe`](../modules/internal_.md#maybe)\<`T`\>\> #### Type parameters | Name | Type | | :------ | :------ | -| `V` | `V` | +| `T` | `T` | | `P` | extends [`AnyParameters`](../modules.md#anyparameters) | #### Parameters | Name | Type | | :------ | :------ | -| `map` | [`Pm`](../modules/internal_.md#pm)\<`T`, [`MaybePromiseLike`](../modules.md#maybepromiselike)\<[`Maybe`](../modules/internal_.md#maybe)\<`V`\>\>, `P`\> | +| `map` | [`Mapper`](../modules/internal_.md#mapper)\<`T`, [`MaybePromiseLike`](../modules.md#maybepromiselike)\<[`Maybe`](../modules/internal_.md#maybe)\<`T`\>\>, `P`\> | | `...parameters` | `P` | #### Returns -`Promise`\<[`Maybe`](../modules/internal_.md#maybe)\<`V`\>\> +`Promise`\<[`Maybe`](../modules/internal_.md#maybe)\<`T`\>\> #### Inherited from @@ -306,31 +307,31 @@ ___ #### Defined in -dist/maybe.d.ts:32 +dist/maybe.d.ts:36 ___ ### asyncMap -▸ **asyncMap**\<`A`, `P`\>(`map`, `...parameters`): `Promise`\<[`Maybe`](../modules/internal_.md#maybe)\<`A`\>\> +▸ **asyncMap**\<`T`, `P`\>(`map`, `...parameters`): `Promise`\<[`Maybe`](../modules/internal_.md#maybe)\<`T`\>\> #### Type parameters | Name | Type | | :------ | :------ | -| `A` | `A` | +| `T` | `T` | | `P` | extends [`AnyParameters`](../modules.md#anyparameters) | #### Parameters | Name | Type | | :------ | :------ | -| `map` | [`Pm`](../modules/internal_.md#pm)\<`T`, [`MaybePromiseLike`](../modules.md#maybepromiselike)\<`A`\>, `P`\> | +| `map` | [`Mapper`](../modules/internal_.md#mapper)\<`T`, [`MaybePromiseLike`](../modules.md#maybepromiselike)\<`T`\>, `P`\> | | `...parameters` | `P` | #### Returns -`Promise`\<[`Maybe`](../modules/internal_.md#maybe)\<`A`\>\> +`Promise`\<[`Maybe`](../modules/internal_.md#maybe)\<`T`\>\> #### Inherited from @@ -338,29 +339,29 @@ ___ #### Defined in -dist/maybe.d.ts:33 +dist/maybe.d.ts:37 ___ ### await -▸ **await**\<`X`\>(`this`): `Promise`\<[`Maybe`](../modules/internal_.md#maybe)\<`X`\>\> +▸ **await**\<`T`\>(`this`): `Promise`\<[`Maybe`](../modules/internal_.md#maybe)\<`T`\>\> #### Type parameters | Name | | :------ | -| `X` | +| `T` | #### Parameters | Name | Type | | :------ | :------ | -| `this` | [`Maybe`](../modules/internal_.md#maybe)\<[`MaybePromiseLike`](../modules.md#maybepromiselike)\<`X`\>\> | +| `this` | [`Maybe`](../modules/internal_.md#maybe)\<[`MaybePromiseLike`](../modules.md#maybepromiselike)\<`T`\>\> | #### Returns -`Promise`\<[`Maybe`](../modules/internal_.md#maybe)\<`X`\>\> +`Promise`\<[`Maybe`](../modules/internal_.md#maybe)\<`T`\>\> #### Inherited from @@ -368,27 +369,27 @@ ___ #### Defined in -dist/maybe.d.ts:34 +dist/maybe.d.ts:38 ___ ### chain -▸ **chain**\<`V`, `A`\>(`map`, `...parameters`): [`Maybe`](../modules/internal_.md#maybe)\<`V`\> +▸ **chain**\<`V`, `P`\>(`map`, `...parameters`): [`Maybe`](../modules/internal_.md#maybe)\<`V`\> #### Type parameters | Name | Type | | :------ | :------ | | `V` | `V` | -| `A` | extends [`AnyParameters`](../modules.md#anyparameters) | +| `P` | extends [`AnyParameters`](../modules.md#anyparameters) | #### Parameters | Name | Type | | :------ | :------ | -| `map` | [`Pm`](../modules/internal_.md#pm)\<`T`, [`Maybe`](../modules/internal_.md#maybe)\<`V`\>, `A`\> | -| `...parameters` | `A` | +| `map` | [`Mapper`](../modules/internal_.md#mapper)\<`T`, [`Maybe`](../modules/internal_.md#maybe)\<`V`\>, `P`\> | +| `...parameters` | `P` | #### Returns @@ -400,7 +401,7 @@ ___ #### Defined in -dist/maybe.d.ts:22 +dist/maybe.d.ts:26 ___ @@ -424,29 +425,29 @@ ___ #### Defined in -dist/maybe.d.ts:23 +dist/maybe.d.ts:27 ___ ### filter -▸ **filter**\<`X`\>(`filter`): [`Maybe`](../modules/internal_.md#maybe)\<`X`\> +▸ **filter**\<`T`\>(`filter`): [`Maybe`](../modules/internal_.md#maybe)\<`T`\> #### Type parameters | Name | | :------ | -| `X` | +| `T` | #### Parameters | Name | Type | | :------ | :------ | -| `filter` | (`input`: `T`) => input is X | +| `filter` | (`input`: `T`) => input is T | #### Returns -[`Maybe`](../modules/internal_.md#maybe)\<`X`\> +[`Maybe`](../modules/internal_.md#maybe)\<`T`\> #### Inherited from @@ -454,7 +455,7 @@ ___ #### Defined in -dist/maybe.d.ts:20 +dist/maybe.d.ts:24 ▸ **filter**(`filter`): [`Maybe`](../modules/internal_.md#maybe)\<`T`\> @@ -474,31 +475,31 @@ dist/maybe.d.ts:20 #### Defined in -dist/maybe.d.ts:21 +dist/maybe.d.ts:25 ___ ### flatMap -▸ **flatMap**\<`V`, `P`\>(`map`, `...parameters`): `undefined` \| `V` +▸ **flatMap**\<`T`, `P`\>(`map`, `...parameters`): `undefined` \| `T` #### Type parameters | Name | Type | | :------ | :------ | -| `V` | `V` | +| `T` | `T` | | `P` | extends [`AnyParameters`](../modules.md#anyparameters) | #### Parameters | Name | Type | | :------ | :------ | -| `map` | [`Pm`](../modules/internal_.md#pm)\<`T`, `V`, `P`\> | +| `map` | [`Mapper`](../modules/internal_.md#mapper)\<`T`, `T`, `P`\> | | `...parameters` | `P` | #### Returns -`undefined` \| `V` +`undefined` \| `T` #### Inherited from @@ -506,13 +507,13 @@ ___ #### Defined in -dist/maybe.d.ts:29 +dist/maybe.d.ts:33 ___ ### fold -▸ **fold**\<`A`, `B`\>(`mapJust`, `mapNone`): `A` \| `B` +▸ **fold**\<`A`, `B`\>(`mapNone`, `mapJust`): `A` \| `B` #### Type parameters @@ -525,8 +526,8 @@ ___ | Name | Type | | :------ | :------ | -| `mapJust` | [`Pm`](../modules/internal_.md#pm)\<`T`, `A`\> | -| `mapNone` | [`Pm`](../modules/internal_.md#pm)\<`void`, `B`\> | +| `mapNone` | [`Mapper`](../modules/internal_.md#mapper)\<`void`, `B`\> | +| `mapJust` | [`Mapper`](../modules/internal_.md#mapper)\<`T`, `A`\> | #### Returns @@ -538,7 +539,7 @@ ___ #### Defined in -dist/maybe.d.ts:31 +dist/maybe.d.ts:35 ___ @@ -556,7 +557,7 @@ this is Just\ #### Defined in -dist/maybe.d.ts:13 +dist/maybe.d.ts:16 ___ @@ -574,7 +575,7 @@ this is None\ #### Defined in -dist/maybe.d.ts:14 +dist/maybe.d.ts:17 ___ @@ -604,27 +605,27 @@ ___ #### Defined in -dist/maybe.d.ts:15 +dist/maybe.d.ts:18 ___ ### map -▸ **map**\<`V`, `A`\>(`map`, `...parameters`): [`Maybe`](../modules/internal_.md#maybe)\<`V`\> +▸ **map**\<`V`, `P`\>(`map`, `...parameters`): [`Maybe`](../modules/internal_.md#maybe)\<`V`\> #### Type parameters | Name | Type | | :------ | :------ | | `V` | `V` | -| `A` | extends [`AnyParameters`](../modules.md#anyparameters) | +| `P` | extends [`AnyParameters`](../modules.md#anyparameters) | #### Parameters | Name | Type | | :------ | :------ | -| `map` | [`Pm`](../modules/internal_.md#pm)\<`T`, `V`, `A`\> | -| `...parameters` | `A` | +| `map` | [`Mapper`](../modules/internal_.md#mapper)\<`T`, `V`, `P`\> | +| `...parameters` | `P` | #### Returns @@ -636,27 +637,27 @@ ___ #### Defined in -dist/maybe.d.ts:16 +dist/maybe.d.ts:20 ___ ### mapNullable -▸ **mapNullable**\<`V`, `A`\>(`map`, `...parameters`): [`Maybe`](../modules/internal_.md#maybe)\<`V`\> +▸ **mapNullable**\<`V`, `P`\>(`map`, `...parameters`): [`Maybe`](../modules/internal_.md#maybe)\<`V`\> #### Type parameters | Name | Type | | :------ | :------ | | `V` | `V` | -| `A` | extends [`AnyParameters`](../modules.md#anyparameters) | +| `P` | extends [`AnyParameters`](../modules.md#anyparameters) | #### Parameters | Name | Type | | :------ | :------ | -| `map` | [`Pm`](../modules/internal_.md#pm)\<`T`, `undefined` \| ``null`` \| `V`, `A`\> | -| `...parameters` | `A` | +| `map` | [`Mapper`](../modules/internal_.md#mapper)\<`T`, `undefined` \| ``null`` \| `V`, `P`\> | +| `...parameters` | `P` | #### Returns @@ -668,7 +669,7 @@ ___ #### Defined in -dist/maybe.d.ts:17 +dist/maybe.d.ts:21 ___ @@ -692,7 +693,7 @@ ___ #### Defined in -dist/maybe.d.ts:24 +dist/maybe.d.ts:28 ___ @@ -716,7 +717,7 @@ ___ #### Defined in -dist/maybe.d.ts:26 +dist/maybe.d.ts:30 ___ @@ -740,7 +741,39 @@ ___ #### Defined in -dist/maybe.d.ts:25 +dist/maybe.d.ts:29 + +___ + +### pipe + +▸ **pipe**\<`V`, `P`\>(`pipe`, `...parameters`): `V` + +#### Type parameters + +| Name | Type | +| :------ | :------ | +| `V` | `V` | +| `P` | extends [`AnyParameters`](../modules.md#anyparameters) | + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `pipe` | [`Mapper`](../modules/internal_.md#mapper)\<[`Maybe`](../modules/internal_.md#maybe)\<`T`\>, `V`, `P`\> | +| `...parameters` | `P` | + +#### Returns + +`V` + +#### Inherited from + +[MaybeConstructor](internal_.MaybeConstructor.md).[pipe](internal_.MaybeConstructor.md#pipe) + +#### Defined in + +dist/maybe.d.ts:19 ___ @@ -758,7 +791,7 @@ ___ | Name | Type | | :------ | :------ | -| `callback` | [`Pm`](../modules/internal_.md#pm)\<`T`, `void`, `P`\> | +| `callback` | [`Mapper`](../modules/internal_.md#mapper)\<`T`, `void`, `P`\> | | `...parameters` | `P` | #### Returns @@ -771,7 +804,7 @@ ___ #### Defined in -dist/maybe.d.ts:28 +dist/maybe.d.ts:32 ___ @@ -785,7 +818,7 @@ ___ #### Defined in -dist/maybe.d.ts:50 +dist/maybe.d.ts:54 ___ @@ -809,29 +842,29 @@ ___ #### Defined in -dist/maybe.d.ts:30 +dist/maybe.d.ts:34 ___ ### unwrapOr -▸ **unwrapOr**\<`X`\>(`value`): `T` \| `X` +▸ **unwrapOr**\<`T`\>(`value`): `T` \| `T` #### Type parameters | Name | | :------ | -| `X` | +| `T` | #### Parameters | Name | Type | | :------ | :------ | -| `value` | `X` | +| `value` | `T` | #### Returns -`T` \| `X` +`T` \| `T` #### Inherited from @@ -839,29 +872,29 @@ ___ #### Defined in -dist/maybe.d.ts:11 +dist/maybe.d.ts:14 ___ ### unwrapOrElse -▸ **unwrapOrElse**\<`X`\>(`value`): `T` \| `X` +▸ **unwrapOrElse**\<`T`\>(`value`): `T` \| `T` #### Type parameters | Name | | :------ | -| `X` | +| `T` | #### Parameters | Name | Type | | :------ | :------ | -| `value` | () => `X` | +| `value` | () => `T` | #### Returns -`T` \| `X` +`T` \| `T` #### Inherited from @@ -869,29 +902,29 @@ ___ #### Defined in -dist/maybe.d.ts:12 +dist/maybe.d.ts:15 ___ ### zip -▸ **zip**\<`A`\>(`maybe`): [`Maybe`](../modules/internal_.md#maybe)\<[`Pair`](../modules.md#pair)\<`T`, `A`\>\> +▸ **zip**\<`T`\>(`maybe`): [`Maybe`](../modules/internal_.md#maybe)\<[`Pair`](../modules.md#pair)\<`T`, `T`\>\> #### Type parameters | Name | | :------ | -| `A` | +| `T` | #### Parameters | Name | Type | | :------ | :------ | -| `maybe` | [`Maybe`](../modules/internal_.md#maybe)\<`A`\> | +| `maybe` | [`Maybe`](../modules/internal_.md#maybe)\<`T`\> | #### Returns -[`Maybe`](../modules/internal_.md#maybe)\<[`Pair`](../modules.md#pair)\<`T`, `A`\>\> +[`Maybe`](../modules/internal_.md#maybe)\<[`Pair`](../modules.md#pair)\<`T`, `T`\>\> #### Inherited from @@ -899,7 +932,7 @@ ___ #### Defined in -dist/maybe.d.ts:27 +dist/maybe.d.ts:31 ___ @@ -925,4 +958,4 @@ ___ #### Defined in -dist/maybe.d.ts:45 +dist/maybe.d.ts:49 diff --git a/docs/api/classes/internal_.Left.md b/docs/api/classes/internal_.Left.md index 6970f44..07497cc 100644 --- a/docs/api/classes/internal_.Left.md +++ b/docs/api/classes/internal_.Left.md @@ -60,6 +60,7 @@ - [or](internal_.Left.md#or) - [orAsync](internal_.Left.md#orasync) - [orLazy](internal_.Left.md#orlazy) +- [pipe](internal_.Left.md#pipe) - [promise](internal_.Left.md#promise) - [swap](internal_.Left.md#swap) - [tap](internal_.Left.md#tap) @@ -91,7 +92,7 @@ #### Defined in -dist/either.d.ts:56 +dist/either.d.ts:89 ## Properties @@ -99,27 +100,39 @@ dist/either.d.ts:56 • `Readonly` **left**: `L` +**`Deprecated`** + +Should not be used directly, public only for serialization & type check use [getLeft](internal_.Left.md#getleft) + +**`See`** + +[getLeft](internal_.Left.md#getleft) + +**`Memberof`** + +Left + #### Implementation of SerializedLeft.left #### Defined in -dist/either.d.ts:49 +dist/either.d.ts:83 ## Accessors ### [toStringTag] -• `get` **[toStringTag]**(): ``"Left"`` +• `get` **[toStringTag]**(): [`Left`](../modules/internal_.md#left) #### Returns -``"Left"`` +[`Left`](../modules/internal_.md#left) #### Defined in -dist/either.d.ts:51 +dist/either.d.ts:84 ___ @@ -137,7 +150,7 @@ SerializedLeft.name #### Defined in -dist/either.d.ts:52 +dist/either.d.ts:85 ___ @@ -155,7 +168,7 @@ SerializedLeft.type #### Defined in -dist/either.d.ts:55 +dist/either.d.ts:88 ## Methods @@ -185,7 +198,7 @@ dist/either.d.ts:55 #### Defined in -dist/either.d.ts:41 +dist/either.d.ts:67 ___ @@ -205,7 +218,7 @@ ___ | Name | Type | | :------ | :------ | -| `this` | [`Either`](../modules/internal_.md#either)\<`L`, [`Pm`](../modules/internal_.md#pm)\<`A`, `B`, `P`\>\> | +| `this` | [`Either`](../modules/internal_.md#either)\<`L`, [`Mapper`](../modules/internal_.md#mapper)\<`A`, `B`, `P`\>\> | | `argument` | [`Either`](../modules/internal_.md#either)\<`L`, `A`\> | | `...parameters` | `P` | @@ -219,7 +232,7 @@ ___ #### Defined in -dist/either.d.ts:21 +dist/either.d.ts:20 ▸ **apply**\<`A`, `B`, `P`\>(`this`, `map`, `...parameters`): [`Either`](../modules/internal_.md#either)\<`L`, `B`\> @@ -236,7 +249,7 @@ dist/either.d.ts:21 | Name | Type | | :------ | :------ | | `this` | [`Either`](../modules/internal_.md#either)\<`L`, `A`\> | -| `map` | [`Either`](../modules/internal_.md#either)\<`L`, [`Pm`](../modules/internal_.md#pm)\<`A`, `B`, `P`\>\> | +| `map` | [`Either`](../modules/internal_.md#either)\<`L`, [`Mapper`](../modules/internal_.md#mapper)\<`A`, `B`, `P`\>\> | | `...parameters` | `P` | #### Returns @@ -249,7 +262,7 @@ dist/either.d.ts:21 #### Defined in -dist/either.d.ts:22 +dist/either.d.ts:21 ___ @@ -269,7 +282,7 @@ ___ | Name | Type | | :------ | :------ | -| `this` | [`Either`](../modules/internal_.md#either)\<`L`, [`Pm`](../modules/internal_.md#pm)\<`A`, [`MaybePromiseLike`](../modules.md#maybepromiselike)\<`B`\>, `P`\>\> | +| `this` | [`Either`](../modules/internal_.md#either)\<`L`, [`Mapper`](../modules/internal_.md#mapper)\<`A`, [`MaybePromiseLike`](../modules.md#maybepromiselike)\<`B`\>, `P`\>\> | | `argument` | [`Either`](../modules/internal_.md#either)\<`L`, `A`\> | | `...parameters` | `P` | @@ -283,7 +296,7 @@ ___ #### Defined in -dist/either.d.ts:23 +dist/either.d.ts:22 ▸ **asyncApply**\<`A`, `B`, `P`\>(`this`, `map`, `...parameters`): `Promise`\<[`Either`](../modules/internal_.md#either)\<`L`, `B`\>\> @@ -300,7 +313,7 @@ dist/either.d.ts:23 | Name | Type | | :------ | :------ | | `this` | [`Either`](../modules/internal_.md#either)\<`L`, `A`\> | -| `map` | [`Either`](../modules/internal_.md#either)\<`L`, [`Pm`](../modules/internal_.md#pm)\<`A`, [`MaybePromiseLike`](../modules.md#maybepromiselike)\<`B`\>, `P`\>\> | +| `map` | [`Either`](../modules/internal_.md#either)\<`L`, [`Mapper`](../modules/internal_.md#mapper)\<`A`, [`MaybePromiseLike`](../modules.md#maybepromiselike)\<`B`\>, `P`\>\> | | `...parameters` | `P` | #### Returns @@ -313,7 +326,7 @@ dist/either.d.ts:23 #### Defined in -dist/either.d.ts:24 +dist/either.d.ts:23 ___ @@ -333,7 +346,7 @@ ___ | Name | Type | | :------ | :------ | -| `map` | [`Pm`](../modules/internal_.md#pm)\<`R`, [`MaybePromiseLike`](../modules.md#maybepromiselike)\<[`Either`](../modules/internal_.md#either)\<`A`, `B`\>\>, `P`\> | +| `map` | [`Mapper`](../modules/internal_.md#mapper)\<`R`, [`MaybePromiseLike`](../modules.md#maybepromiselike)\<[`Either`](../modules/internal_.md#either)\<`A`, `B`\>\>, `P`\> | | `...parameters` | `P` | #### Returns @@ -346,7 +359,7 @@ ___ #### Defined in -dist/either.d.ts:28 +dist/either.d.ts:27 ___ @@ -366,7 +379,7 @@ ___ | Name | Type | | :------ | :------ | -| `map` | [`Pm`](../modules/internal_.md#pm)\<`R`, [`MaybePromiseLike`](../modules.md#maybepromiselike)\<`B`\>, `P`\> | +| `map` | [`Mapper`](../modules/internal_.md#mapper)\<`R`, [`MaybePromiseLike`](../modules.md#maybepromiselike)\<`B`\>, `P`\> | | `...parameters` | `P` | #### Returns @@ -379,7 +392,7 @@ ___ #### Defined in -dist/either.d.ts:29 +dist/either.d.ts:28 ___ @@ -409,7 +422,7 @@ ___ #### Defined in -dist/either.d.ts:30 +dist/either.d.ts:29 ___ @@ -428,8 +441,8 @@ ___ | Name | Type | | :------ | :------ | -| `mapLeft` | [`Pm`](../modules/internal_.md#pm)\<`L`, `A`\> | -| `mapRight` | [`Pm`](../modules/internal_.md#pm)\<`R`, `B`\> | +| `mapLeft` | [`Mapper`](../modules/internal_.md#mapper)\<`L`, `A`\> | +| `mapRight` | [`Mapper`](../modules/internal_.md#mapper)\<`R`, `B`\> | #### Returns @@ -441,7 +454,7 @@ ___ #### Defined in -dist/either.d.ts:27 +dist/either.d.ts:26 ___ @@ -461,7 +474,7 @@ ___ | Name | Type | | :------ | :------ | -| `map` | [`Pm`](../modules/internal_.md#pm)\<`R`, [`Either`](../modules/internal_.md#either)\<`A`, `B`\>, `P`\> | +| `map` | [`Mapper`](../modules/internal_.md#mapper)\<`R`, [`Either`](../modules/internal_.md#either)\<`A`, `B`\>, `P`\> | | `...parameters` | `P` | #### Returns @@ -474,7 +487,7 @@ ___ #### Defined in -dist/either.d.ts:26 +dist/either.d.ts:25 ___ @@ -498,7 +511,7 @@ ___ #### Defined in -dist/either.d.ts:32 +dist/either.d.ts:38 ___ @@ -517,20 +530,24 @@ ___ | Name | Type | | :------ | :------ | -| `mapLeft` | [`Pm`](../modules/internal_.md#pm)\<`L`, `A`\> | -| `mapRight` | [`Pm`](../modules/internal_.md#pm)\<`R`, `B`\> | +| `mapLeft` | [`Mapper`](../modules/internal_.md#mapper)\<`L`, `A`\> | +| `mapRight` | [`Mapper`](../modules/internal_.md#mapper)\<`R`, `B`\> | #### Returns `A` \| `B` +**`Throws`** + +- [InvalidStateError](InvalidStateError.md) if Either state is neither Left neither Right, this probably should never happen + #### Inherited from [EitherConstructor](internal_.EitherConstructor.md).[fold](internal_.EitherConstructor.md#fold) #### Defined in -dist/either.d.ts:31 +dist/either.d.ts:37 ___ @@ -542,13 +559,9 @@ ___ `L` -#### Overrides - -[EitherConstructor](internal_.EitherConstructor.md).[getLeft](internal_.EitherConstructor.md#getleft) - #### Defined in -dist/either.d.ts:54 +dist/either.d.ts:87 ___ @@ -560,13 +573,9 @@ ___ `undefined` -#### Overrides - -[EitherConstructor](internal_.EitherConstructor.md).[getRight](internal_.EitherConstructor.md#getright) - #### Defined in -dist/either.d.ts:53 +dist/either.d.ts:86 ___ @@ -584,7 +593,7 @@ this is Left\ #### Defined in -dist/either.d.ts:13 +dist/either.d.ts:12 ___ @@ -602,7 +611,7 @@ this is Right\ #### Defined in -dist/either.d.ts:14 +dist/either.d.ts:13 ___ @@ -634,7 +643,7 @@ ___ #### Defined in -dist/either.d.ts:17 +dist/either.d.ts:16 ___ @@ -653,7 +662,7 @@ ___ | Name | Type | | :------ | :------ | -| `map` | [`Pm`](../modules/internal_.md#pm)\<`R`, `T`, `P`\> | +| `map` | [`Mapper`](../modules/internal_.md#mapper)\<`R`, `T`, `P`\> | | `...parameters` | `P` | #### Returns @@ -666,7 +675,7 @@ ___ #### Defined in -dist/either.d.ts:19 +dist/either.d.ts:18 ___ @@ -685,7 +694,7 @@ ___ | Name | Type | | :------ | :------ | -| `map` | [`Pm`](../modules/internal_.md#pm)\<`L`, `T`, `P`\> | +| `map` | [`Mapper`](../modules/internal_.md#mapper)\<`L`, `T`, `P`\> | | `...parameters` | `P` | #### Returns @@ -698,7 +707,7 @@ ___ #### Defined in -dist/either.d.ts:18 +dist/either.d.ts:17 ___ @@ -717,7 +726,7 @@ ___ | Name | Type | | :------ | :------ | -| `map` | [`Pm`](../modules/internal_.md#pm)\<`R`, `T`, `P`\> | +| `map` | [`Mapper`](../modules/internal_.md#mapper)\<`R`, `T`, `P`\> | | `...parameters` | `P` | #### Returns @@ -730,7 +739,7 @@ ___ #### Defined in -dist/either.d.ts:20 +dist/either.d.ts:19 ___ @@ -754,7 +763,7 @@ ___ #### Defined in -dist/either.d.ts:33 +dist/either.d.ts:39 ___ @@ -778,7 +787,7 @@ ___ #### Defined in -dist/either.d.ts:35 +dist/either.d.ts:41 ___ @@ -802,7 +811,39 @@ ___ #### Defined in -dist/either.d.ts:34 +dist/either.d.ts:40 + +___ + +### pipe + +▸ **pipe**\<`T`, `P`\>(`pipe`, `...parameters`): `T` + +#### Type parameters + +| Name | Type | +| :------ | :------ | +| `T` | `T` | +| `P` | extends [`AnyParameters`](../modules.md#anyparameters) | + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `pipe` | [`Mapper`](../modules/internal_.md#mapper)\<[`Either`](../modules/internal_.md#either)\<`L`, `R`\>, `T`, `P`\> | +| `...parameters` | `P` | + +#### Returns + +`T` + +#### Inherited from + +[EitherConstructor](internal_.EitherConstructor.md).[pipe](internal_.EitherConstructor.md#pipe) + +#### Defined in + +dist/either.d.ts:11 ___ @@ -820,7 +861,7 @@ ___ #### Defined in -dist/either.d.ts:38 +dist/either.d.ts:52 ___ @@ -838,7 +879,7 @@ ___ #### Defined in -dist/either.d.ts:25 +dist/either.d.ts:24 ___ @@ -856,7 +897,7 @@ ___ | Name | Type | | :------ | :------ | -| `callback` | [`Pm`](../modules/internal_.md#pm)\<`R`, `void`, `P`\> | +| `callback` | [`Mapper`](../modules/internal_.md#mapper)\<`R`, `void`, `P`\> | | `...parameters` | `P` | #### Returns @@ -869,7 +910,7 @@ ___ #### Defined in -dist/either.d.ts:12 +dist/either.d.ts:10 ___ @@ -881,13 +922,19 @@ ___ `R` +- Right value if current state is Right, + +**`Throws`** + +- L if current state is Left + #### Inherited from [EitherConstructor](internal_.EitherConstructor.md).[throw](internal_.EitherConstructor.md#throw) #### Defined in -dist/either.d.ts:39 +dist/either.d.ts:58 ___ @@ -901,7 +948,7 @@ ___ #### Defined in -dist/either.d.ts:57 +dist/either.d.ts:90 ___ @@ -911,43 +958,53 @@ ___ #### Parameters -| Name | Type | -| :------ | :------ | -| `message?` | `string` | +| Name | Type | Description | +| :------ | :------ | :------ | +| `message?` | `string` | Error message, if either is left. By default "Either state is Left" | #### Returns `R` +- Right value of Either, if right + +**`Deprecated`** + +- **If Left value is Error use [throw](internal_.Right.md#throw) instead** + +**`Throws`** + +- [UnwrapCustomError](UnwrapCustomError.md) is Left with provided message + #### Inherited from [EitherConstructor](internal_.EitherConstructor.md).[unwrap](internal_.EitherConstructor.md#unwrap) #### Defined in -dist/either.d.ts:37 +dist/either.d.ts:51 ___ ### unwrapOr -▸ **unwrapOr**\<`X`\>(`value`): `R` \| `X` +▸ **unwrapOr**\<`T`\>(`value`): `R` \| `T` #### Type parameters | Name | | :------ | -| `X` | +| `T` | #### Parameters | Name | Type | | :------ | :------ | -| `value` | `X` | +| `value` | `T` | #### Returns -`R` \| `X` +`R` \| `T` #### Inherited from @@ -955,29 +1012,29 @@ ___ #### Defined in -dist/either.d.ts:16 +dist/either.d.ts:15 ___ ### unwrapOrElse -▸ **unwrapOrElse**\<`X`\>(`fallback`): `R` \| `X` +▸ **unwrapOrElse**\<`T`\>(`fallback`): `R` \| `T` #### Type parameters | Name | | :------ | -| `X` | +| `T` | #### Parameters | Name | Type | | :------ | :------ | -| `fallback` | (`value`: `L`) => `X` | +| `fallback` | (`value`: `L`) => `T` | #### Returns -`R` \| `X` +`R` \| `T` #### Inherited from @@ -985,7 +1042,7 @@ ___ #### Defined in -dist/either.d.ts:15 +dist/either.d.ts:14 ___ @@ -993,17 +1050,27 @@ ___ ▸ **value**(): `L` \| `R` +Return value of Either independent if it is Right or Left + #### Returns `L` \| `R` +**`Deprecated`** + +- probably should not be used, please refactor code or use [fold](internal_.Right.md#fold) + +**`See`** + +[fold](internal_.Right.md#fold) + #### Inherited from [EitherConstructor](internal_.EitherConstructor.md).[value](internal_.EitherConstructor.md#value) #### Defined in -dist/either.d.ts:40 +dist/either.d.ts:66 ___ @@ -1034,7 +1101,7 @@ ___ #### Defined in -dist/either.d.ts:36 +dist/either.d.ts:42 ___ @@ -1061,4 +1128,4 @@ ___ #### Defined in -dist/either.d.ts:50 +dist/either.d.ts:75 diff --git a/docs/api/classes/internal_.MaybeConstructor.md b/docs/api/classes/internal_.MaybeConstructor.md index 13ee443..b1b9f2e 100644 --- a/docs/api/classes/internal_.MaybeConstructor.md +++ b/docs/api/classes/internal_.MaybeConstructor.md @@ -1,6 +1,6 @@ [Package](../README.md) / [Exports](../modules.md) / [\](../modules/internal_.md) / MaybeConstructor -# Class: MaybeConstructor\ +# Class: MaybeConstructor\ [\](../modules/internal_.md).MaybeConstructor @@ -8,7 +8,7 @@ | Name | | :------ | -| `T` | +| `Va` | ## Hierarchy @@ -20,9 +20,10 @@ ## Implements -- [`Monad`](../interfaces/Monad.md)\<`T`\> -- [`Alternative`](../interfaces/Alternative.md)\<`T`\> -- [`Container`](../interfaces/Container.md)\<`T`\> +- [`Monad`](../interfaces/Monad.md)\<`Va`\> +- [`Alternative`](../interfaces/Alternative.md)\<`Va`\> +- [`Container`](../interfaces/Container.md)\<`Va`\> +- [`Pipe`](../interfaces/internal_.Pipe.md) ## Table of contents @@ -50,6 +51,7 @@ - [or](internal_.MaybeConstructor.md#or) - [orAsync](internal_.MaybeConstructor.md#orasync) - [orLazy](internal_.MaybeConstructor.md#orlazy) +- [pipe](internal_.MaybeConstructor.md#pipe) - [tap](internal_.MaybeConstructor.md#tap) - [unwrap](internal_.MaybeConstructor.md#unwrap) - [unwrapOr](internal_.MaybeConstructor.md#unwrapor) @@ -60,13 +62,13 @@ ### constructor -• **new MaybeConstructor**\<`T`\>() +• **new MaybeConstructor**\<`Va`\>() #### Type parameters | Name | | :------ | -| `T` | +| `Va` | ## Methods @@ -86,7 +88,7 @@ | Name | Type | | :------ | :------ | -| `this` | [`Maybe`](../modules/internal_.md#maybe)\<[`Pm`](../modules/internal_.md#pm)\<`A`, `B`, `P`\>\> | +| `this` | [`Maybe`](../modules/internal_.md#maybe)\<[`Mapper`](../modules/internal_.md#mapper)\<`A`, `B`, `P`\>\> | | `argument` | [`Maybe`](../modules/internal_.md#maybe)\<`A`\> | | `...parameters` | `P` | @@ -100,7 +102,7 @@ #### Defined in -dist/maybe.d.ts:18 +dist/maybe.d.ts:22 ▸ **apply**\<`A`, `B`, `P`\>(`this`, `argument`, `...parameters`): [`Maybe`](../modules/internal_.md#maybe)\<`B`\> @@ -117,7 +119,7 @@ dist/maybe.d.ts:18 | Name | Type | | :------ | :------ | | `this` | [`Maybe`](../modules/internal_.md#maybe)\<`A`\> | -| `argument` | [`Maybe`](../modules/internal_.md#maybe)\<[`Pm`](../modules/internal_.md#pm)\<`A`, `B`, `P`\>\> | +| `argument` | [`Maybe`](../modules/internal_.md#maybe)\<[`Mapper`](../modules/internal_.md#mapper)\<`A`, `B`, `P`\>\> | | `...parameters` | `P` | #### Returns @@ -130,7 +132,7 @@ dist/maybe.d.ts:18 #### Defined in -dist/maybe.d.ts:19 +dist/maybe.d.ts:23 ___ @@ -150,7 +152,7 @@ ___ | Name | Type | | :------ | :------ | -| `this` | [`Maybe`](../modules/internal_.md#maybe)\<[`Pm`](../modules/internal_.md#pm)\<`A`, [`MaybePromiseLike`](../modules.md#maybepromiselike)\<`B`\>, `P`\>\> | +| `this` | [`Maybe`](../modules/internal_.md#maybe)\<[`Mapper`](../modules/internal_.md#mapper)\<`A`, [`MaybePromiseLike`](../modules.md#maybepromiselike)\<`B`\>, `P`\>\> | | `argument` | [`Maybe`](../modules/internal_.md#maybe)\<`A`\> | | `...parameters` | `P` | @@ -160,7 +162,7 @@ ___ #### Defined in -dist/maybe.d.ts:35 +dist/maybe.d.ts:39 ▸ **asyncApply**\<`A`, `B`, `P`\>(`this`, `map`, `...parameters`): `Promise`\<[`Maybe`](../modules/internal_.md#maybe)\<`B`\>\> @@ -177,7 +179,7 @@ dist/maybe.d.ts:35 | Name | Type | | :------ | :------ | | `this` | [`Maybe`](../modules/internal_.md#maybe)\<`A`\> | -| `map` | [`Maybe`](../modules/internal_.md#maybe)\<[`Pm`](../modules/internal_.md#pm)\<`A`, [`MaybePromiseLike`](../modules.md#maybepromiselike)\<`B`\>, `P`\>\> | +| `map` | [`Maybe`](../modules/internal_.md#maybe)\<[`Mapper`](../modules/internal_.md#mapper)\<`A`, [`MaybePromiseLike`](../modules.md#maybepromiselike)\<`B`\>, `P`\>\> | | `...parameters` | `P` | #### Returns @@ -186,109 +188,109 @@ dist/maybe.d.ts:35 #### Defined in -dist/maybe.d.ts:36 +dist/maybe.d.ts:40 ___ ### asyncChain -▸ **asyncChain**\<`V`, `P`\>(`map`, `...parameters`): `Promise`\<[`Maybe`](../modules/internal_.md#maybe)\<`V`\>\> +▸ **asyncChain**\<`T`, `P`\>(`map`, `...parameters`): `Promise`\<[`Maybe`](../modules/internal_.md#maybe)\<`T`\>\> #### Type parameters | Name | Type | | :------ | :------ | -| `V` | `V` | +| `T` | `T` | | `P` | extends [`AnyParameters`](../modules.md#anyparameters) | #### Parameters | Name | Type | | :------ | :------ | -| `map` | [`Pm`](../modules/internal_.md#pm)\<`T`, [`MaybePromiseLike`](../modules.md#maybepromiselike)\<[`Maybe`](../modules/internal_.md#maybe)\<`V`\>\>, `P`\> | +| `map` | [`Mapper`](../modules/internal_.md#mapper)\<`Va`, [`MaybePromiseLike`](../modules.md#maybepromiselike)\<[`Maybe`](../modules/internal_.md#maybe)\<`T`\>\>, `P`\> | | `...parameters` | `P` | #### Returns -`Promise`\<[`Maybe`](../modules/internal_.md#maybe)\<`V`\>\> +`Promise`\<[`Maybe`](../modules/internal_.md#maybe)\<`T`\>\> #### Defined in -dist/maybe.d.ts:32 +dist/maybe.d.ts:36 ___ ### asyncMap -▸ **asyncMap**\<`A`, `P`\>(`map`, `...parameters`): `Promise`\<[`Maybe`](../modules/internal_.md#maybe)\<`A`\>\> +▸ **asyncMap**\<`T`, `P`\>(`map`, `...parameters`): `Promise`\<[`Maybe`](../modules/internal_.md#maybe)\<`T`\>\> #### Type parameters | Name | Type | | :------ | :------ | -| `A` | `A` | +| `T` | `T` | | `P` | extends [`AnyParameters`](../modules.md#anyparameters) | #### Parameters | Name | Type | | :------ | :------ | -| `map` | [`Pm`](../modules/internal_.md#pm)\<`T`, [`MaybePromiseLike`](../modules.md#maybepromiselike)\<`A`\>, `P`\> | +| `map` | [`Mapper`](../modules/internal_.md#mapper)\<`Va`, [`MaybePromiseLike`](../modules.md#maybepromiselike)\<`T`\>, `P`\> | | `...parameters` | `P` | #### Returns -`Promise`\<[`Maybe`](../modules/internal_.md#maybe)\<`A`\>\> +`Promise`\<[`Maybe`](../modules/internal_.md#maybe)\<`T`\>\> #### Defined in -dist/maybe.d.ts:33 +dist/maybe.d.ts:37 ___ ### await -▸ **await**\<`X`\>(`this`): `Promise`\<[`Maybe`](../modules/internal_.md#maybe)\<`X`\>\> +▸ **await**\<`T`\>(`this`): `Promise`\<[`Maybe`](../modules/internal_.md#maybe)\<`T`\>\> #### Type parameters | Name | | :------ | -| `X` | +| `T` | #### Parameters | Name | Type | | :------ | :------ | -| `this` | [`Maybe`](../modules/internal_.md#maybe)\<[`MaybePromiseLike`](../modules.md#maybepromiselike)\<`X`\>\> | +| `this` | [`Maybe`](../modules/internal_.md#maybe)\<[`MaybePromiseLike`](../modules.md#maybepromiselike)\<`T`\>\> | #### Returns -`Promise`\<[`Maybe`](../modules/internal_.md#maybe)\<`X`\>\> +`Promise`\<[`Maybe`](../modules/internal_.md#maybe)\<`T`\>\> #### Defined in -dist/maybe.d.ts:34 +dist/maybe.d.ts:38 ___ ### chain -▸ **chain**\<`V`, `A`\>(`map`, `...parameters`): [`Maybe`](../modules/internal_.md#maybe)\<`V`\> +▸ **chain**\<`V`, `P`\>(`map`, `...parameters`): [`Maybe`](../modules/internal_.md#maybe)\<`V`\> #### Type parameters | Name | Type | | :------ | :------ | | `V` | `V` | -| `A` | extends [`AnyParameters`](../modules.md#anyparameters) | +| `P` | extends [`AnyParameters`](../modules.md#anyparameters) | #### Parameters | Name | Type | | :------ | :------ | -| `map` | [`Pm`](../modules/internal_.md#pm)\<`T`, [`Maybe`](../modules/internal_.md#maybe)\<`V`\>, `A`\> | -| `...parameters` | `A` | +| `map` | [`Mapper`](../modules/internal_.md#mapper)\<`Va`, [`Maybe`](../modules/internal_.md#maybe)\<`V`\>, `P`\> | +| `...parameters` | `P` | #### Returns @@ -300,23 +302,23 @@ ___ #### Defined in -dist/maybe.d.ts:22 +dist/maybe.d.ts:26 ___ ### default -▸ **default**(`value`): [`Maybe`](../modules/internal_.md#maybe)\<`T`\> +▸ **default**(`value`): [`Maybe`](../modules/internal_.md#maybe)\<`Va`\> #### Parameters | Name | Type | | :------ | :------ | -| `value` | `T` | +| `value` | `Va` | #### Returns -[`Maybe`](../modules/internal_.md#maybe)\<`T`\> +[`Maybe`](../modules/internal_.md#maybe)\<`Va`\> #### Implementation of @@ -324,83 +326,83 @@ ___ #### Defined in -dist/maybe.d.ts:23 +dist/maybe.d.ts:27 ___ ### filter -▸ **filter**\<`X`\>(`filter`): [`Maybe`](../modules/internal_.md#maybe)\<`X`\> +▸ **filter**\<`T`\>(`filter`): [`Maybe`](../modules/internal_.md#maybe)\<`T`\> #### Type parameters | Name | | :------ | -| `X` | +| `T` | #### Parameters | Name | Type | | :------ | :------ | -| `filter` | (`input`: `T`) => input is X | +| `filter` | (`input`: `Va`) => input is T | #### Returns -[`Maybe`](../modules/internal_.md#maybe)\<`X`\> +[`Maybe`](../modules/internal_.md#maybe)\<`T`\> #### Defined in -dist/maybe.d.ts:20 +dist/maybe.d.ts:24 -▸ **filter**(`filter`): [`Maybe`](../modules/internal_.md#maybe)\<`T`\> +▸ **filter**(`filter`): [`Maybe`](../modules/internal_.md#maybe)\<`Va`\> #### Parameters | Name | Type | | :------ | :------ | -| `filter` | (`input`: `T`) => `boolean` | +| `filter` | (`input`: `Va`) => `boolean` | #### Returns -[`Maybe`](../modules/internal_.md#maybe)\<`T`\> +[`Maybe`](../modules/internal_.md#maybe)\<`Va`\> #### Defined in -dist/maybe.d.ts:21 +dist/maybe.d.ts:25 ___ ### flatMap -▸ **flatMap**\<`V`, `P`\>(`map`, `...parameters`): `undefined` \| `V` +▸ **flatMap**\<`T`, `P`\>(`map`, `...parameters`): `undefined` \| `T` #### Type parameters | Name | Type | | :------ | :------ | -| `V` | `V` | +| `T` | `T` | | `P` | extends [`AnyParameters`](../modules.md#anyparameters) | #### Parameters | Name | Type | | :------ | :------ | -| `map` | [`Pm`](../modules/internal_.md#pm)\<`T`, `V`, `P`\> | +| `map` | [`Mapper`](../modules/internal_.md#mapper)\<`Va`, `T`, `P`\> | | `...parameters` | `P` | #### Returns -`undefined` \| `V` +`undefined` \| `T` #### Defined in -dist/maybe.d.ts:29 +dist/maybe.d.ts:33 ___ ### fold -▸ **fold**\<`A`, `B`\>(`mapJust`, `mapNone`): `A` \| `B` +▸ **fold**\<`A`, `B`\>(`mapNone`, `mapJust`): `A` \| `B` #### Type parameters @@ -413,8 +415,8 @@ ___ | Name | Type | | :------ | :------ | -| `mapJust` | [`Pm`](../modules/internal_.md#pm)\<`T`, `A`\> | -| `mapNone` | [`Pm`](../modules/internal_.md#pm)\<`void`, `B`\> | +| `mapNone` | [`Mapper`](../modules/internal_.md#mapper)\<`void`, `B`\> | +| `mapJust` | [`Mapper`](../modules/internal_.md#mapper)\<`Va`, `A`\> | #### Returns @@ -422,35 +424,35 @@ ___ #### Defined in -dist/maybe.d.ts:31 +dist/maybe.d.ts:35 ___ ### isJust -▸ **isJust**(): this is Just\ +▸ **isJust**(): this is Just\ #### Returns -this is Just\ +this is Just\ #### Defined in -dist/maybe.d.ts:13 +dist/maybe.d.ts:16 ___ ### isNone -▸ **isNone**(): this is None\ +▸ **isNone**(): this is None\ #### Returns -this is None\ +this is None\ #### Defined in -dist/maybe.d.ts:14 +dist/maybe.d.ts:17 ___ @@ -480,27 +482,27 @@ ___ #### Defined in -dist/maybe.d.ts:15 +dist/maybe.d.ts:18 ___ ### map -▸ **map**\<`V`, `A`\>(`map`, `...parameters`): [`Maybe`](../modules/internal_.md#maybe)\<`V`\> +▸ **map**\<`V`, `P`\>(`map`, `...parameters`): [`Maybe`](../modules/internal_.md#maybe)\<`V`\> #### Type parameters | Name | Type | | :------ | :------ | | `V` | `V` | -| `A` | extends [`AnyParameters`](../modules.md#anyparameters) | +| `P` | extends [`AnyParameters`](../modules.md#anyparameters) | #### Parameters | Name | Type | | :------ | :------ | -| `map` | [`Pm`](../modules/internal_.md#pm)\<`T`, `V`, `A`\> | -| `...parameters` | `A` | +| `map` | [`Mapper`](../modules/internal_.md#mapper)\<`Va`, `V`, `P`\> | +| `...parameters` | `P` | #### Returns @@ -512,27 +514,27 @@ ___ #### Defined in -dist/maybe.d.ts:16 +dist/maybe.d.ts:20 ___ ### mapNullable -▸ **mapNullable**\<`V`, `A`\>(`map`, `...parameters`): [`Maybe`](../modules/internal_.md#maybe)\<`V`\> +▸ **mapNullable**\<`V`, `P`\>(`map`, `...parameters`): [`Maybe`](../modules/internal_.md#maybe)\<`V`\> #### Type parameters | Name | Type | | :------ | :------ | | `V` | `V` | -| `A` | extends [`AnyParameters`](../modules.md#anyparameters) | +| `P` | extends [`AnyParameters`](../modules.md#anyparameters) | #### Parameters | Name | Type | | :------ | :------ | -| `map` | [`Pm`](../modules/internal_.md#pm)\<`T`, `undefined` \| ``null`` \| `V`, `A`\> | -| `...parameters` | `A` | +| `map` | [`Mapper`](../modules/internal_.md#mapper)\<`Va`, `undefined` \| ``null`` \| `V`, `P`\> | +| `...parameters` | `P` | #### Returns @@ -540,23 +542,23 @@ ___ #### Defined in -dist/maybe.d.ts:17 +dist/maybe.d.ts:21 ___ ### or -▸ **or**(`x`): [`Maybe`](../modules/internal_.md#maybe)\<`T`\> +▸ **or**(`x`): [`Maybe`](../modules/internal_.md#maybe)\<`Va`\> #### Parameters | Name | Type | | :------ | :------ | -| `x` | [`Maybe`](../modules/internal_.md#maybe)\<`T`\> | +| `x` | [`Maybe`](../modules/internal_.md#maybe)\<`Va`\> | #### Returns -[`Maybe`](../modules/internal_.md#maybe)\<`T`\> +[`Maybe`](../modules/internal_.md#maybe)\<`Va`\> #### Implementation of @@ -564,53 +566,85 @@ ___ #### Defined in -dist/maybe.d.ts:24 +dist/maybe.d.ts:28 ___ ### orAsync -▸ **orAsync**(`factory`): `Promise`\<[`Maybe`](../modules/internal_.md#maybe)\<`T`\>\> +▸ **orAsync**(`factory`): `Promise`\<[`Maybe`](../modules/internal_.md#maybe)\<`Va`\>\> #### Parameters | Name | Type | | :------ | :------ | -| `factory` | () => [`MaybePromiseLike`](../modules.md#maybepromiselike)\<[`Maybe`](../modules/internal_.md#maybe)\<`T`\>\> | +| `factory` | () => [`MaybePromiseLike`](../modules.md#maybepromiselike)\<[`Maybe`](../modules/internal_.md#maybe)\<`Va`\>\> | #### Returns -`Promise`\<[`Maybe`](../modules/internal_.md#maybe)\<`T`\>\> +`Promise`\<[`Maybe`](../modules/internal_.md#maybe)\<`Va`\>\> #### Defined in -dist/maybe.d.ts:26 +dist/maybe.d.ts:30 ___ ### orLazy -▸ **orLazy**(`factory`): [`Maybe`](../modules/internal_.md#maybe)\<`T`\> +▸ **orLazy**(`factory`): [`Maybe`](../modules/internal_.md#maybe)\<`Va`\> #### Parameters | Name | Type | | :------ | :------ | -| `factory` | () => [`Maybe`](../modules/internal_.md#maybe)\<`T`\> | +| `factory` | () => [`Maybe`](../modules/internal_.md#maybe)\<`Va`\> | #### Returns -[`Maybe`](../modules/internal_.md#maybe)\<`T`\> +[`Maybe`](../modules/internal_.md#maybe)\<`Va`\> #### Defined in -dist/maybe.d.ts:25 +dist/maybe.d.ts:29 + +___ + +### pipe + +▸ **pipe**\<`V`, `P`\>(`pipe`, `...parameters`): `V` + +#### Type parameters + +| Name | Type | +| :------ | :------ | +| `V` | `V` | +| `P` | extends [`AnyParameters`](../modules.md#anyparameters) | + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `pipe` | [`Mapper`](../modules/internal_.md#mapper)\<[`Maybe`](../modules/internal_.md#maybe)\<`Va`\>, `V`, `P`\> | +| `...parameters` | `P` | + +#### Returns + +`V` + +#### Implementation of + +[Pipe](../interfaces/internal_.Pipe.md).[pipe](../interfaces/internal_.Pipe.md#pipe) + +#### Defined in + +dist/maybe.d.ts:19 ___ ### tap -▸ **tap**\<`P`\>(`callback`, `...parameters`): [`Maybe`](../modules/internal_.md#maybe)\<`T`\> +▸ **tap**\<`P`\>(`callback`, `...parameters`): [`Maybe`](../modules/internal_.md#maybe)\<`Va`\> #### Type parameters @@ -622,22 +656,22 @@ ___ | Name | Type | | :------ | :------ | -| `callback` | [`Pm`](../modules/internal_.md#pm)\<`T`, `void`, `P`\> | +| `callback` | [`Mapper`](../modules/internal_.md#mapper)\<`Va`, `void`, `P`\> | | `...parameters` | `P` | #### Returns -[`Maybe`](../modules/internal_.md#maybe)\<`T`\> +[`Maybe`](../modules/internal_.md#maybe)\<`Va`\> #### Defined in -dist/maybe.d.ts:28 +dist/maybe.d.ts:32 ___ ### unwrap -▸ **unwrap**(`message?`): `T` +▸ **unwrap**(`message?`): `Va` #### Parameters @@ -647,7 +681,7 @@ ___ #### Returns -`T` +`Va` #### Implementation of @@ -655,29 +689,29 @@ ___ #### Defined in -dist/maybe.d.ts:30 +dist/maybe.d.ts:34 ___ ### unwrapOr -▸ **unwrapOr**\<`X`\>(`value`): `T` \| `X` +▸ **unwrapOr**\<`T`\>(`value`): `Va` \| `T` #### Type parameters | Name | | :------ | -| `X` | +| `T` | #### Parameters | Name | Type | | :------ | :------ | -| `value` | `X` | +| `value` | `T` | #### Returns -`T` \| `X` +`Va` \| `T` #### Implementation of @@ -685,56 +719,56 @@ ___ #### Defined in -dist/maybe.d.ts:11 +dist/maybe.d.ts:14 ___ ### unwrapOrElse -▸ **unwrapOrElse**\<`X`\>(`value`): `T` \| `X` +▸ **unwrapOrElse**\<`T`\>(`value`): `Va` \| `T` #### Type parameters | Name | | :------ | -| `X` | +| `T` | #### Parameters | Name | Type | | :------ | :------ | -| `value` | () => `X` | +| `value` | () => `T` | #### Returns -`T` \| `X` +`Va` \| `T` #### Defined in -dist/maybe.d.ts:12 +dist/maybe.d.ts:15 ___ ### zip -▸ **zip**\<`A`\>(`maybe`): [`Maybe`](../modules/internal_.md#maybe)\<[`Pair`](../modules.md#pair)\<`T`, `A`\>\> +▸ **zip**\<`T`\>(`maybe`): [`Maybe`](../modules/internal_.md#maybe)\<[`Pair`](../modules.md#pair)\<`Va`, `T`\>\> #### Type parameters | Name | | :------ | -| `A` | +| `T` | #### Parameters | Name | Type | | :------ | :------ | -| `maybe` | [`Maybe`](../modules/internal_.md#maybe)\<`A`\> | +| `maybe` | [`Maybe`](../modules/internal_.md#maybe)\<`T`\> | #### Returns -[`Maybe`](../modules/internal_.md#maybe)\<[`Pair`](../modules.md#pair)\<`T`, `A`\>\> +[`Maybe`](../modules/internal_.md#maybe)\<[`Pair`](../modules.md#pair)\<`Va`, `T`\>\> #### Defined in -dist/maybe.d.ts:27 +dist/maybe.d.ts:31 diff --git a/docs/api/classes/internal_.None.md b/docs/api/classes/internal_.None.md index 045b6b3..285289f 100644 --- a/docs/api/classes/internal_.None.md +++ b/docs/api/classes/internal_.None.md @@ -57,6 +57,7 @@ - [or](internal_.None.md#or) - [orAsync](internal_.None.md#orasync) - [orLazy](internal_.None.md#orlazy) +- [pipe](internal_.None.md#pipe) - [tap](internal_.None.md#tap) - [toJSON](internal_.None.md#tojson) - [unwrap](internal_.None.md#unwrap) @@ -83,7 +84,7 @@ #### Defined in -dist/maybe.d.ts:63 +dist/maybe.d.ts:67 ## Properties @@ -93,21 +94,21 @@ dist/maybe.d.ts:63 #### Defined in -dist/maybe.d.ts:57 +dist/maybe.d.ts:61 ## Accessors ### [toStringTag] -• `get` **[toStringTag]**(): ``"None"`` +• `get` **[toStringTag]**(): [`None`](../modules/internal_.md#none) #### Returns -``"None"`` +[`None`](../modules/internal_.md#none) #### Defined in -dist/maybe.d.ts:60 +dist/maybe.d.ts:64 ___ @@ -125,7 +126,7 @@ SerializedNone.name #### Defined in -dist/maybe.d.ts:61 +dist/maybe.d.ts:65 ___ @@ -143,7 +144,7 @@ SerializedNone.type #### Defined in -dist/maybe.d.ts:62 +dist/maybe.d.ts:66 ___ @@ -157,7 +158,7 @@ ___ #### Defined in -dist/maybe.d.ts:59 +dist/maybe.d.ts:63 ## Methods @@ -177,7 +178,7 @@ dist/maybe.d.ts:59 | Name | Type | | :------ | :------ | -| `this` | [`Maybe`](../modules/internal_.md#maybe)\<[`Pm`](../modules/internal_.md#pm)\<`A`, `B`, `P`\>\> | +| `this` | [`Maybe`](../modules/internal_.md#maybe)\<[`Mapper`](../modules/internal_.md#mapper)\<`A`, `B`, `P`\>\> | | `argument` | [`Maybe`](../modules/internal_.md#maybe)\<`A`\> | | `...parameters` | `P` | @@ -191,7 +192,7 @@ dist/maybe.d.ts:59 #### Defined in -dist/maybe.d.ts:18 +dist/maybe.d.ts:22 ▸ **apply**\<`A`, `B`, `P`\>(`this`, `argument`, `...parameters`): [`Maybe`](../modules/internal_.md#maybe)\<`B`\> @@ -208,7 +209,7 @@ dist/maybe.d.ts:18 | Name | Type | | :------ | :------ | | `this` | [`Maybe`](../modules/internal_.md#maybe)\<`A`\> | -| `argument` | [`Maybe`](../modules/internal_.md#maybe)\<[`Pm`](../modules/internal_.md#pm)\<`A`, `B`, `P`\>\> | +| `argument` | [`Maybe`](../modules/internal_.md#maybe)\<[`Mapper`](../modules/internal_.md#mapper)\<`A`, `B`, `P`\>\> | | `...parameters` | `P` | #### Returns @@ -221,7 +222,7 @@ dist/maybe.d.ts:18 #### Defined in -dist/maybe.d.ts:19 +dist/maybe.d.ts:23 ___ @@ -241,7 +242,7 @@ ___ | Name | Type | | :------ | :------ | -| `this` | [`Maybe`](../modules/internal_.md#maybe)\<[`Pm`](../modules/internal_.md#pm)\<`A`, [`MaybePromiseLike`](../modules.md#maybepromiselike)\<`B`\>, `P`\>\> | +| `this` | [`Maybe`](../modules/internal_.md#maybe)\<[`Mapper`](../modules/internal_.md#mapper)\<`A`, [`MaybePromiseLike`](../modules.md#maybepromiselike)\<`B`\>, `P`\>\> | | `argument` | [`Maybe`](../modules/internal_.md#maybe)\<`A`\> | | `...parameters` | `P` | @@ -255,7 +256,7 @@ ___ #### Defined in -dist/maybe.d.ts:35 +dist/maybe.d.ts:39 ▸ **asyncApply**\<`A`, `B`, `P`\>(`this`, `map`, `...parameters`): `Promise`\<[`Maybe`](../modules/internal_.md#maybe)\<`B`\>\> @@ -272,7 +273,7 @@ dist/maybe.d.ts:35 | Name | Type | | :------ | :------ | | `this` | [`Maybe`](../modules/internal_.md#maybe)\<`A`\> | -| `map` | [`Maybe`](../modules/internal_.md#maybe)\<[`Pm`](../modules/internal_.md#pm)\<`A`, [`MaybePromiseLike`](../modules.md#maybepromiselike)\<`B`\>, `P`\>\> | +| `map` | [`Maybe`](../modules/internal_.md#maybe)\<[`Mapper`](../modules/internal_.md#mapper)\<`A`, [`MaybePromiseLike`](../modules.md#maybepromiselike)\<`B`\>, `P`\>\> | | `...parameters` | `P` | #### Returns @@ -285,31 +286,31 @@ dist/maybe.d.ts:35 #### Defined in -dist/maybe.d.ts:36 +dist/maybe.d.ts:40 ___ ### asyncChain -▸ **asyncChain**\<`V`, `P`\>(`map`, `...parameters`): `Promise`\<[`Maybe`](../modules/internal_.md#maybe)\<`V`\>\> +▸ **asyncChain**\<`T`, `P`\>(`map`, `...parameters`): `Promise`\<[`Maybe`](../modules/internal_.md#maybe)\<`T`\>\> #### Type parameters | Name | Type | | :------ | :------ | -| `V` | `V` | +| `T` | `T` | | `P` | extends [`AnyParameters`](../modules.md#anyparameters) | #### Parameters | Name | Type | | :------ | :------ | -| `map` | [`Pm`](../modules/internal_.md#pm)\<`T`, [`MaybePromiseLike`](../modules.md#maybepromiselike)\<[`Maybe`](../modules/internal_.md#maybe)\<`V`\>\>, `P`\> | +| `map` | [`Mapper`](../modules/internal_.md#mapper)\<`T`, [`MaybePromiseLike`](../modules.md#maybepromiselike)\<[`Maybe`](../modules/internal_.md#maybe)\<`T`\>\>, `P`\> | | `...parameters` | `P` | #### Returns -`Promise`\<[`Maybe`](../modules/internal_.md#maybe)\<`V`\>\> +`Promise`\<[`Maybe`](../modules/internal_.md#maybe)\<`T`\>\> #### Inherited from @@ -317,31 +318,31 @@ ___ #### Defined in -dist/maybe.d.ts:32 +dist/maybe.d.ts:36 ___ ### asyncMap -▸ **asyncMap**\<`A`, `P`\>(`map`, `...parameters`): `Promise`\<[`Maybe`](../modules/internal_.md#maybe)\<`A`\>\> +▸ **asyncMap**\<`T`, `P`\>(`map`, `...parameters`): `Promise`\<[`Maybe`](../modules/internal_.md#maybe)\<`T`\>\> #### Type parameters | Name | Type | | :------ | :------ | -| `A` | `A` | +| `T` | `T` | | `P` | extends [`AnyParameters`](../modules.md#anyparameters) | #### Parameters | Name | Type | | :------ | :------ | -| `map` | [`Pm`](../modules/internal_.md#pm)\<`T`, [`MaybePromiseLike`](../modules.md#maybepromiselike)\<`A`\>, `P`\> | +| `map` | [`Mapper`](../modules/internal_.md#mapper)\<`T`, [`MaybePromiseLike`](../modules.md#maybepromiselike)\<`T`\>, `P`\> | | `...parameters` | `P` | #### Returns -`Promise`\<[`Maybe`](../modules/internal_.md#maybe)\<`A`\>\> +`Promise`\<[`Maybe`](../modules/internal_.md#maybe)\<`T`\>\> #### Inherited from @@ -349,29 +350,29 @@ ___ #### Defined in -dist/maybe.d.ts:33 +dist/maybe.d.ts:37 ___ ### await -▸ **await**\<`X`\>(`this`): `Promise`\<[`Maybe`](../modules/internal_.md#maybe)\<`X`\>\> +▸ **await**\<`T`\>(`this`): `Promise`\<[`Maybe`](../modules/internal_.md#maybe)\<`T`\>\> #### Type parameters | Name | | :------ | -| `X` | +| `T` | #### Parameters | Name | Type | | :------ | :------ | -| `this` | [`Maybe`](../modules/internal_.md#maybe)\<[`MaybePromiseLike`](../modules.md#maybepromiselike)\<`X`\>\> | +| `this` | [`Maybe`](../modules/internal_.md#maybe)\<[`MaybePromiseLike`](../modules.md#maybepromiselike)\<`T`\>\> | #### Returns -`Promise`\<[`Maybe`](../modules/internal_.md#maybe)\<`X`\>\> +`Promise`\<[`Maybe`](../modules/internal_.md#maybe)\<`T`\>\> #### Inherited from @@ -379,27 +380,27 @@ ___ #### Defined in -dist/maybe.d.ts:34 +dist/maybe.d.ts:38 ___ ### chain -▸ **chain**\<`V`, `A`\>(`map`, `...parameters`): [`Maybe`](../modules/internal_.md#maybe)\<`V`\> +▸ **chain**\<`V`, `P`\>(`map`, `...parameters`): [`Maybe`](../modules/internal_.md#maybe)\<`V`\> #### Type parameters | Name | Type | | :------ | :------ | | `V` | `V` | -| `A` | extends [`AnyParameters`](../modules.md#anyparameters) | +| `P` | extends [`AnyParameters`](../modules.md#anyparameters) | #### Parameters | Name | Type | | :------ | :------ | -| `map` | [`Pm`](../modules/internal_.md#pm)\<`T`, [`Maybe`](../modules/internal_.md#maybe)\<`V`\>, `A`\> | -| `...parameters` | `A` | +| `map` | [`Mapper`](../modules/internal_.md#mapper)\<`T`, [`Maybe`](../modules/internal_.md#maybe)\<`V`\>, `P`\> | +| `...parameters` | `P` | #### Returns @@ -411,7 +412,7 @@ ___ #### Defined in -dist/maybe.d.ts:22 +dist/maybe.d.ts:26 ___ @@ -435,29 +436,29 @@ ___ #### Defined in -dist/maybe.d.ts:23 +dist/maybe.d.ts:27 ___ ### filter -▸ **filter**\<`X`\>(`filter`): [`Maybe`](../modules/internal_.md#maybe)\<`X`\> +▸ **filter**\<`T`\>(`filter`): [`Maybe`](../modules/internal_.md#maybe)\<`T`\> #### Type parameters | Name | | :------ | -| `X` | +| `T` | #### Parameters | Name | Type | | :------ | :------ | -| `filter` | (`input`: `T`) => input is X | +| `filter` | (`input`: `T`) => input is T | #### Returns -[`Maybe`](../modules/internal_.md#maybe)\<`X`\> +[`Maybe`](../modules/internal_.md#maybe)\<`T`\> #### Inherited from @@ -465,7 +466,7 @@ ___ #### Defined in -dist/maybe.d.ts:20 +dist/maybe.d.ts:24 ▸ **filter**(`filter`): [`Maybe`](../modules/internal_.md#maybe)\<`T`\> @@ -485,31 +486,31 @@ dist/maybe.d.ts:20 #### Defined in -dist/maybe.d.ts:21 +dist/maybe.d.ts:25 ___ ### flatMap -▸ **flatMap**\<`V`, `P`\>(`map`, `...parameters`): `undefined` \| `V` +▸ **flatMap**\<`T`, `P`\>(`map`, `...parameters`): `undefined` \| `T` #### Type parameters | Name | Type | | :------ | :------ | -| `V` | `V` | +| `T` | `T` | | `P` | extends [`AnyParameters`](../modules.md#anyparameters) | #### Parameters | Name | Type | | :------ | :------ | -| `map` | [`Pm`](../modules/internal_.md#pm)\<`T`, `V`, `P`\> | +| `map` | [`Mapper`](../modules/internal_.md#mapper)\<`T`, `T`, `P`\> | | `...parameters` | `P` | #### Returns -`undefined` \| `V` +`undefined` \| `T` #### Inherited from @@ -517,13 +518,13 @@ ___ #### Defined in -dist/maybe.d.ts:29 +dist/maybe.d.ts:33 ___ ### fold -▸ **fold**\<`A`, `B`\>(`mapJust`, `mapNone`): `A` \| `B` +▸ **fold**\<`A`, `B`\>(`mapNone`, `mapJust`): `A` \| `B` #### Type parameters @@ -536,8 +537,8 @@ ___ | Name | Type | | :------ | :------ | -| `mapJust` | [`Pm`](../modules/internal_.md#pm)\<`T`, `A`\> | -| `mapNone` | [`Pm`](../modules/internal_.md#pm)\<`void`, `B`\> | +| `mapNone` | [`Mapper`](../modules/internal_.md#mapper)\<`void`, `B`\> | +| `mapJust` | [`Mapper`](../modules/internal_.md#mapper)\<`T`, `A`\> | #### Returns @@ -549,7 +550,7 @@ ___ #### Defined in -dist/maybe.d.ts:31 +dist/maybe.d.ts:35 ___ @@ -567,7 +568,7 @@ this is Just\ #### Defined in -dist/maybe.d.ts:13 +dist/maybe.d.ts:16 ___ @@ -585,7 +586,7 @@ this is None\ #### Defined in -dist/maybe.d.ts:14 +dist/maybe.d.ts:17 ___ @@ -615,27 +616,27 @@ ___ #### Defined in -dist/maybe.d.ts:15 +dist/maybe.d.ts:18 ___ ### map -▸ **map**\<`V`, `A`\>(`map`, `...parameters`): [`Maybe`](../modules/internal_.md#maybe)\<`V`\> +▸ **map**\<`V`, `P`\>(`map`, `...parameters`): [`Maybe`](../modules/internal_.md#maybe)\<`V`\> #### Type parameters | Name | Type | | :------ | :------ | | `V` | `V` | -| `A` | extends [`AnyParameters`](../modules.md#anyparameters) | +| `P` | extends [`AnyParameters`](../modules.md#anyparameters) | #### Parameters | Name | Type | | :------ | :------ | -| `map` | [`Pm`](../modules/internal_.md#pm)\<`T`, `V`, `A`\> | -| `...parameters` | `A` | +| `map` | [`Mapper`](../modules/internal_.md#mapper)\<`T`, `V`, `P`\> | +| `...parameters` | `P` | #### Returns @@ -647,27 +648,27 @@ ___ #### Defined in -dist/maybe.d.ts:16 +dist/maybe.d.ts:20 ___ ### mapNullable -▸ **mapNullable**\<`V`, `A`\>(`map`, `...parameters`): [`Maybe`](../modules/internal_.md#maybe)\<`V`\> +▸ **mapNullable**\<`V`, `P`\>(`map`, `...parameters`): [`Maybe`](../modules/internal_.md#maybe)\<`V`\> #### Type parameters | Name | Type | | :------ | :------ | | `V` | `V` | -| `A` | extends [`AnyParameters`](../modules.md#anyparameters) | +| `P` | extends [`AnyParameters`](../modules.md#anyparameters) | #### Parameters | Name | Type | | :------ | :------ | -| `map` | [`Pm`](../modules/internal_.md#pm)\<`T`, `undefined` \| ``null`` \| `V`, `A`\> | -| `...parameters` | `A` | +| `map` | [`Mapper`](../modules/internal_.md#mapper)\<`T`, `undefined` \| ``null`` \| `V`, `P`\> | +| `...parameters` | `P` | #### Returns @@ -679,7 +680,7 @@ ___ #### Defined in -dist/maybe.d.ts:17 +dist/maybe.d.ts:21 ___ @@ -703,7 +704,7 @@ ___ #### Defined in -dist/maybe.d.ts:24 +dist/maybe.d.ts:28 ___ @@ -727,7 +728,7 @@ ___ #### Defined in -dist/maybe.d.ts:26 +dist/maybe.d.ts:30 ___ @@ -751,7 +752,39 @@ ___ #### Defined in -dist/maybe.d.ts:25 +dist/maybe.d.ts:29 + +___ + +### pipe + +▸ **pipe**\<`V`, `P`\>(`pipe`, `...parameters`): `V` + +#### Type parameters + +| Name | Type | +| :------ | :------ | +| `V` | `V` | +| `P` | extends [`AnyParameters`](../modules.md#anyparameters) | + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `pipe` | [`Mapper`](../modules/internal_.md#mapper)\<[`Maybe`](../modules/internal_.md#maybe)\<`T`\>, `V`, `P`\> | +| `...parameters` | `P` | + +#### Returns + +`V` + +#### Inherited from + +[MaybeConstructor](internal_.MaybeConstructor.md).[pipe](internal_.MaybeConstructor.md#pipe) + +#### Defined in + +dist/maybe.d.ts:19 ___ @@ -769,7 +802,7 @@ ___ | Name | Type | | :------ | :------ | -| `callback` | [`Pm`](../modules/internal_.md#pm)\<`T`, `void`, `P`\> | +| `callback` | [`Mapper`](../modules/internal_.md#mapper)\<`T`, `void`, `P`\> | | `...parameters` | `P` | #### Returns @@ -782,7 +815,7 @@ ___ #### Defined in -dist/maybe.d.ts:28 +dist/maybe.d.ts:32 ___ @@ -796,7 +829,7 @@ ___ #### Defined in -dist/maybe.d.ts:64 +dist/maybe.d.ts:68 ___ @@ -820,29 +853,29 @@ ___ #### Defined in -dist/maybe.d.ts:30 +dist/maybe.d.ts:34 ___ ### unwrapOr -▸ **unwrapOr**\<`X`\>(`value`): `T` \| `X` +▸ **unwrapOr**\<`T`\>(`value`): `T` \| `T` #### Type parameters | Name | | :------ | -| `X` | +| `T` | #### Parameters | Name | Type | | :------ | :------ | -| `value` | `X` | +| `value` | `T` | #### Returns -`T` \| `X` +`T` \| `T` #### Inherited from @@ -850,29 +883,29 @@ ___ #### Defined in -dist/maybe.d.ts:11 +dist/maybe.d.ts:14 ___ ### unwrapOrElse -▸ **unwrapOrElse**\<`X`\>(`value`): `T` \| `X` +▸ **unwrapOrElse**\<`T`\>(`value`): `T` \| `T` #### Type parameters | Name | | :------ | -| `X` | +| `T` | #### Parameters | Name | Type | | :------ | :------ | -| `value` | () => `X` | +| `value` | () => `T` | #### Returns -`T` \| `X` +`T` \| `T` #### Inherited from @@ -880,29 +913,29 @@ ___ #### Defined in -dist/maybe.d.ts:12 +dist/maybe.d.ts:15 ___ ### zip -▸ **zip**\<`A`\>(`maybe`): [`Maybe`](../modules/internal_.md#maybe)\<[`Pair`](../modules.md#pair)\<`T`, `A`\>\> +▸ **zip**\<`T`\>(`maybe`): [`Maybe`](../modules/internal_.md#maybe)\<[`Pair`](../modules.md#pair)\<`T`, `T`\>\> #### Type parameters | Name | | :------ | -| `A` | +| `T` | #### Parameters | Name | Type | | :------ | :------ | -| `maybe` | [`Maybe`](../modules/internal_.md#maybe)\<`A`\> | +| `maybe` | [`Maybe`](../modules/internal_.md#maybe)\<`T`\> | #### Returns -[`Maybe`](../modules/internal_.md#maybe)\<[`Pair`](../modules.md#pair)\<`T`, `A`\>\> +[`Maybe`](../modules/internal_.md#maybe)\<[`Pair`](../modules.md#pair)\<`T`, `T`\>\> #### Inherited from @@ -910,7 +943,7 @@ ___ #### Defined in -dist/maybe.d.ts:27 +dist/maybe.d.ts:31 ___ @@ -930,4 +963,4 @@ ___ #### Defined in -dist/maybe.d.ts:58 +dist/maybe.d.ts:62 diff --git a/docs/api/classes/internal_.Right.md b/docs/api/classes/internal_.Right.md index 0cf2638..94e89a3 100644 --- a/docs/api/classes/internal_.Right.md +++ b/docs/api/classes/internal_.Right.md @@ -60,6 +60,7 @@ - [or](internal_.Right.md#or) - [orAsync](internal_.Right.md#orasync) - [orLazy](internal_.Right.md#orlazy) +- [pipe](internal_.Right.md#pipe) - [promise](internal_.Right.md#promise) - [swap](internal_.Right.md#swap) - [tap](internal_.Right.md#tap) @@ -91,7 +92,7 @@ #### Defined in -dist/either.d.ts:72 +dist/either.d.ts:112 ## Properties @@ -99,27 +100,39 @@ dist/either.d.ts:72 • `Readonly` **right**: `R` +**`Deprecated`** + +Should not be used directly, public only for serialization & type check use [getRight](internal_.Right.md#getright) + +**`See`** + +[getRight](internal_.Right.md#getright) + +**`Memberof`** + +Right + #### Implementation of SerializedRight.right #### Defined in -dist/either.d.ts:65 +dist/either.d.ts:106 ## Accessors ### [toStringTag] -• `get` **[toStringTag]**(): ``"Right"`` +• `get` **[toStringTag]**(): [`Right`](../modules/internal_.md#right) #### Returns -``"Right"`` +[`Right`](../modules/internal_.md#right) #### Defined in -dist/either.d.ts:67 +dist/either.d.ts:107 ___ @@ -137,7 +150,7 @@ SerializedRight.name #### Defined in -dist/either.d.ts:68 +dist/either.d.ts:108 ___ @@ -155,7 +168,7 @@ SerializedRight.type #### Defined in -dist/either.d.ts:69 +dist/either.d.ts:109 ## Methods @@ -185,7 +198,7 @@ dist/either.d.ts:69 #### Defined in -dist/either.d.ts:41 +dist/either.d.ts:67 ___ @@ -205,7 +218,7 @@ ___ | Name | Type | | :------ | :------ | -| `this` | [`Either`](../modules/internal_.md#either)\<`L`, [`Pm`](../modules/internal_.md#pm)\<`A`, `B`, `P`\>\> | +| `this` | [`Either`](../modules/internal_.md#either)\<`L`, [`Mapper`](../modules/internal_.md#mapper)\<`A`, `B`, `P`\>\> | | `argument` | [`Either`](../modules/internal_.md#either)\<`L`, `A`\> | | `...parameters` | `P` | @@ -219,7 +232,7 @@ ___ #### Defined in -dist/either.d.ts:21 +dist/either.d.ts:20 ▸ **apply**\<`A`, `B`, `P`\>(`this`, `map`, `...parameters`): [`Either`](../modules/internal_.md#either)\<`L`, `B`\> @@ -236,7 +249,7 @@ dist/either.d.ts:21 | Name | Type | | :------ | :------ | | `this` | [`Either`](../modules/internal_.md#either)\<`L`, `A`\> | -| `map` | [`Either`](../modules/internal_.md#either)\<`L`, [`Pm`](../modules/internal_.md#pm)\<`A`, `B`, `P`\>\> | +| `map` | [`Either`](../modules/internal_.md#either)\<`L`, [`Mapper`](../modules/internal_.md#mapper)\<`A`, `B`, `P`\>\> | | `...parameters` | `P` | #### Returns @@ -249,7 +262,7 @@ dist/either.d.ts:21 #### Defined in -dist/either.d.ts:22 +dist/either.d.ts:21 ___ @@ -269,7 +282,7 @@ ___ | Name | Type | | :------ | :------ | -| `this` | [`Either`](../modules/internal_.md#either)\<`L`, [`Pm`](../modules/internal_.md#pm)\<`A`, [`MaybePromiseLike`](../modules.md#maybepromiselike)\<`B`\>, `P`\>\> | +| `this` | [`Either`](../modules/internal_.md#either)\<`L`, [`Mapper`](../modules/internal_.md#mapper)\<`A`, [`MaybePromiseLike`](../modules.md#maybepromiselike)\<`B`\>, `P`\>\> | | `argument` | [`Either`](../modules/internal_.md#either)\<`L`, `A`\> | | `...parameters` | `P` | @@ -283,7 +296,7 @@ ___ #### Defined in -dist/either.d.ts:23 +dist/either.d.ts:22 ▸ **asyncApply**\<`A`, `B`, `P`\>(`this`, `map`, `...parameters`): `Promise`\<[`Either`](../modules/internal_.md#either)\<`L`, `B`\>\> @@ -300,7 +313,7 @@ dist/either.d.ts:23 | Name | Type | | :------ | :------ | | `this` | [`Either`](../modules/internal_.md#either)\<`L`, `A`\> | -| `map` | [`Either`](../modules/internal_.md#either)\<`L`, [`Pm`](../modules/internal_.md#pm)\<`A`, [`MaybePromiseLike`](../modules.md#maybepromiselike)\<`B`\>, `P`\>\> | +| `map` | [`Either`](../modules/internal_.md#either)\<`L`, [`Mapper`](../modules/internal_.md#mapper)\<`A`, [`MaybePromiseLike`](../modules.md#maybepromiselike)\<`B`\>, `P`\>\> | | `...parameters` | `P` | #### Returns @@ -313,7 +326,7 @@ dist/either.d.ts:23 #### Defined in -dist/either.d.ts:24 +dist/either.d.ts:23 ___ @@ -333,7 +346,7 @@ ___ | Name | Type | | :------ | :------ | -| `map` | [`Pm`](../modules/internal_.md#pm)\<`R`, [`MaybePromiseLike`](../modules.md#maybepromiselike)\<[`Either`](../modules/internal_.md#either)\<`A`, `B`\>\>, `P`\> | +| `map` | [`Mapper`](../modules/internal_.md#mapper)\<`R`, [`MaybePromiseLike`](../modules.md#maybepromiselike)\<[`Either`](../modules/internal_.md#either)\<`A`, `B`\>\>, `P`\> | | `...parameters` | `P` | #### Returns @@ -346,7 +359,7 @@ ___ #### Defined in -dist/either.d.ts:28 +dist/either.d.ts:27 ___ @@ -366,7 +379,7 @@ ___ | Name | Type | | :------ | :------ | -| `map` | [`Pm`](../modules/internal_.md#pm)\<`R`, [`MaybePromiseLike`](../modules.md#maybepromiselike)\<`B`\>, `P`\> | +| `map` | [`Mapper`](../modules/internal_.md#mapper)\<`R`, [`MaybePromiseLike`](../modules.md#maybepromiselike)\<`B`\>, `P`\> | | `...parameters` | `P` | #### Returns @@ -379,7 +392,7 @@ ___ #### Defined in -dist/either.d.ts:29 +dist/either.d.ts:28 ___ @@ -409,7 +422,7 @@ ___ #### Defined in -dist/either.d.ts:30 +dist/either.d.ts:29 ___ @@ -428,8 +441,8 @@ ___ | Name | Type | | :------ | :------ | -| `mapLeft` | [`Pm`](../modules/internal_.md#pm)\<`L`, `A`\> | -| `mapRight` | [`Pm`](../modules/internal_.md#pm)\<`R`, `B`\> | +| `mapLeft` | [`Mapper`](../modules/internal_.md#mapper)\<`L`, `A`\> | +| `mapRight` | [`Mapper`](../modules/internal_.md#mapper)\<`R`, `B`\> | #### Returns @@ -441,7 +454,7 @@ ___ #### Defined in -dist/either.d.ts:27 +dist/either.d.ts:26 ___ @@ -461,7 +474,7 @@ ___ | Name | Type | | :------ | :------ | -| `map` | [`Pm`](../modules/internal_.md#pm)\<`R`, [`Either`](../modules/internal_.md#either)\<`A`, `B`\>, `P`\> | +| `map` | [`Mapper`](../modules/internal_.md#mapper)\<`R`, [`Either`](../modules/internal_.md#either)\<`A`, `B`\>, `P`\> | | `...parameters` | `P` | #### Returns @@ -474,7 +487,7 @@ ___ #### Defined in -dist/either.d.ts:26 +dist/either.d.ts:25 ___ @@ -498,7 +511,7 @@ ___ #### Defined in -dist/either.d.ts:32 +dist/either.d.ts:38 ___ @@ -517,20 +530,24 @@ ___ | Name | Type | | :------ | :------ | -| `mapLeft` | [`Pm`](../modules/internal_.md#pm)\<`L`, `A`\> | -| `mapRight` | [`Pm`](../modules/internal_.md#pm)\<`R`, `B`\> | +| `mapLeft` | [`Mapper`](../modules/internal_.md#mapper)\<`L`, `A`\> | +| `mapRight` | [`Mapper`](../modules/internal_.md#mapper)\<`R`, `B`\> | #### Returns `A` \| `B` +**`Throws`** + +- [InvalidStateError](InvalidStateError.md) if Either state is neither Left neither Right, this probably should never happen + #### Inherited from [EitherConstructor](internal_.EitherConstructor.md).[fold](internal_.EitherConstructor.md#fold) #### Defined in -dist/either.d.ts:31 +dist/either.d.ts:37 ___ @@ -542,13 +559,9 @@ ___ `undefined` -#### Overrides - -[EitherConstructor](internal_.EitherConstructor.md).[getLeft](internal_.EitherConstructor.md#getleft) - #### Defined in -dist/either.d.ts:71 +dist/either.d.ts:111 ___ @@ -560,13 +573,9 @@ ___ `R` -#### Overrides - -[EitherConstructor](internal_.EitherConstructor.md).[getRight](internal_.EitherConstructor.md#getright) - #### Defined in -dist/either.d.ts:70 +dist/either.d.ts:110 ___ @@ -584,7 +593,7 @@ this is Left\ #### Defined in -dist/either.d.ts:13 +dist/either.d.ts:12 ___ @@ -602,7 +611,7 @@ this is Right\ #### Defined in -dist/either.d.ts:14 +dist/either.d.ts:13 ___ @@ -634,7 +643,7 @@ ___ #### Defined in -dist/either.d.ts:17 +dist/either.d.ts:16 ___ @@ -653,7 +662,7 @@ ___ | Name | Type | | :------ | :------ | -| `map` | [`Pm`](../modules/internal_.md#pm)\<`R`, `T`, `P`\> | +| `map` | [`Mapper`](../modules/internal_.md#mapper)\<`R`, `T`, `P`\> | | `...parameters` | `P` | #### Returns @@ -666,7 +675,7 @@ ___ #### Defined in -dist/either.d.ts:19 +dist/either.d.ts:18 ___ @@ -685,7 +694,7 @@ ___ | Name | Type | | :------ | :------ | -| `map` | [`Pm`](../modules/internal_.md#pm)\<`L`, `T`, `P`\> | +| `map` | [`Mapper`](../modules/internal_.md#mapper)\<`L`, `T`, `P`\> | | `...parameters` | `P` | #### Returns @@ -698,7 +707,7 @@ ___ #### Defined in -dist/either.d.ts:18 +dist/either.d.ts:17 ___ @@ -717,7 +726,7 @@ ___ | Name | Type | | :------ | :------ | -| `map` | [`Pm`](../modules/internal_.md#pm)\<`R`, `T`, `P`\> | +| `map` | [`Mapper`](../modules/internal_.md#mapper)\<`R`, `T`, `P`\> | | `...parameters` | `P` | #### Returns @@ -730,7 +739,7 @@ ___ #### Defined in -dist/either.d.ts:20 +dist/either.d.ts:19 ___ @@ -754,7 +763,7 @@ ___ #### Defined in -dist/either.d.ts:33 +dist/either.d.ts:39 ___ @@ -778,7 +787,7 @@ ___ #### Defined in -dist/either.d.ts:35 +dist/either.d.ts:41 ___ @@ -802,7 +811,39 @@ ___ #### Defined in -dist/either.d.ts:34 +dist/either.d.ts:40 + +___ + +### pipe + +▸ **pipe**\<`T`, `P`\>(`pipe`, `...parameters`): `T` + +#### Type parameters + +| Name | Type | +| :------ | :------ | +| `T` | `T` | +| `P` | extends [`AnyParameters`](../modules.md#anyparameters) | + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `pipe` | [`Mapper`](../modules/internal_.md#mapper)\<[`Either`](../modules/internal_.md#either)\<`L`, `R`\>, `T`, `P`\> | +| `...parameters` | `P` | + +#### Returns + +`T` + +#### Inherited from + +[EitherConstructor](internal_.EitherConstructor.md).[pipe](internal_.EitherConstructor.md#pipe) + +#### Defined in + +dist/either.d.ts:11 ___ @@ -820,7 +861,7 @@ ___ #### Defined in -dist/either.d.ts:38 +dist/either.d.ts:52 ___ @@ -838,7 +879,7 @@ ___ #### Defined in -dist/either.d.ts:25 +dist/either.d.ts:24 ___ @@ -856,7 +897,7 @@ ___ | Name | Type | | :------ | :------ | -| `callback` | [`Pm`](../modules/internal_.md#pm)\<`R`, `void`, `P`\> | +| `callback` | [`Mapper`](../modules/internal_.md#mapper)\<`R`, `void`, `P`\> | | `...parameters` | `P` | #### Returns @@ -869,7 +910,7 @@ ___ #### Defined in -dist/either.d.ts:12 +dist/either.d.ts:10 ___ @@ -881,13 +922,19 @@ ___ `R` +- Right value if current state is Right, + +**`Throws`** + +- L if current state is Left + #### Inherited from [EitherConstructor](internal_.EitherConstructor.md).[throw](internal_.EitherConstructor.md#throw) #### Defined in -dist/either.d.ts:39 +dist/either.d.ts:58 ___ @@ -901,7 +948,7 @@ ___ #### Defined in -dist/either.d.ts:73 +dist/either.d.ts:113 ___ @@ -911,43 +958,53 @@ ___ #### Parameters -| Name | Type | -| :------ | :------ | -| `message?` | `string` | +| Name | Type | Description | +| :------ | :------ | :------ | +| `message?` | `string` | Error message, if either is left. By default "Either state is Left" | #### Returns `R` +- Right value of Either, if right + +**`Deprecated`** + +- **If Left value is Error use [throw](internal_.Right.md#throw) instead** + +**`Throws`** + +- [UnwrapCustomError](UnwrapCustomError.md) is Left with provided message + #### Inherited from [EitherConstructor](internal_.EitherConstructor.md).[unwrap](internal_.EitherConstructor.md#unwrap) #### Defined in -dist/either.d.ts:37 +dist/either.d.ts:51 ___ ### unwrapOr -▸ **unwrapOr**\<`X`\>(`value`): `R` \| `X` +▸ **unwrapOr**\<`T`\>(`value`): `R` \| `T` #### Type parameters | Name | | :------ | -| `X` | +| `T` | #### Parameters | Name | Type | | :------ | :------ | -| `value` | `X` | +| `value` | `T` | #### Returns -`R` \| `X` +`R` \| `T` #### Inherited from @@ -955,29 +1012,29 @@ ___ #### Defined in -dist/either.d.ts:16 +dist/either.d.ts:15 ___ ### unwrapOrElse -▸ **unwrapOrElse**\<`X`\>(`fallback`): `R` \| `X` +▸ **unwrapOrElse**\<`T`\>(`fallback`): `R` \| `T` #### Type parameters | Name | | :------ | -| `X` | +| `T` | #### Parameters | Name | Type | | :------ | :------ | -| `fallback` | (`value`: `L`) => `X` | +| `fallback` | (`value`: `L`) => `T` | #### Returns -`R` \| `X` +`R` \| `T` #### Inherited from @@ -985,7 +1042,7 @@ ___ #### Defined in -dist/either.d.ts:15 +dist/either.d.ts:14 ___ @@ -993,17 +1050,27 @@ ___ ▸ **value**(): `L` \| `R` +Return value of Either independent if it is Right or Left + #### Returns `L` \| `R` +**`Deprecated`** + +- probably should not be used, please refactor code or use [fold](internal_.Right.md#fold) + +**`See`** + +[fold](internal_.Right.md#fold) + #### Inherited from [EitherConstructor](internal_.EitherConstructor.md).[value](internal_.EitherConstructor.md#value) #### Defined in -dist/either.d.ts:40 +dist/either.d.ts:66 ___ @@ -1034,7 +1101,7 @@ ___ #### Defined in -dist/either.d.ts:36 +dist/either.d.ts:42 ___ @@ -1061,4 +1128,4 @@ ___ #### Defined in -dist/either.d.ts:66 +dist/either.d.ts:98 diff --git a/docs/api/interfaces/Applicative.md b/docs/api/interfaces/Applicative.md index 8d66a0c..3b10764 100644 --- a/docs/api/interfaces/Applicative.md +++ b/docs/api/interfaces/Applicative.md @@ -41,7 +41,7 @@ | Name | Type | | :------ | :------ | -| `this` | [`Applicative`](Applicative.md)\<[`Pm`](../modules/internal_.md#pm)\<`A`, `B`, `P`\>\> | +| `this` | [`Applicative`](Applicative.md)\<[`Mapper`](../modules/internal_.md#mapper)\<`A`, `B`, `P`\>\> | | `argument` | [`Applicative`](Applicative.md)\<`A`\> | | `...parameters` | `P` | @@ -68,7 +68,7 @@ dist/types.d.ts:19 | Name | Type | | :------ | :------ | | `this` | [`Applicative`](Applicative.md)\<`A`\> | -| `argument` | [`Applicative`](Applicative.md)\<[`Pm`](../modules/internal_.md#pm)\<`A`, `B`, `P`\>\> | +| `argument` | [`Applicative`](Applicative.md)\<[`Mapper`](../modules/internal_.md#mapper)\<`A`, `B`, `P`\>\> | | `...parameters` | `P` | #### Returns @@ -96,7 +96,7 @@ ___ | Name | Type | | :------ | :------ | -| `map` | [`Pm`](../modules/internal_.md#pm)\<`A`, `B`, `P`\> | +| `map` | [`Mapper`](../modules/internal_.md#mapper)\<`A`, `B`, `P`\> | | `...parameters` | `P` | #### Returns diff --git a/docs/api/interfaces/AsyncMonad.md b/docs/api/interfaces/AsyncMonad.md index 7859d58..120be1c 100644 --- a/docs/api/interfaces/AsyncMonad.md +++ b/docs/api/interfaces/AsyncMonad.md @@ -17,6 +17,7 @@ ## Implemented by - [`EitherConstructor`](../classes/internal_.EitherConstructor.md) +- [`Identity`](../classes/internal_.Identity.md) ## Table of contents @@ -47,7 +48,7 @@ | Name | Type | | :------ | :------ | -| `this` | [`Applicative`](Applicative.md)\<[`Pm`](../modules/internal_.md#pm)\<`A`, `B`, `P`\>\> | +| `this` | [`Applicative`](Applicative.md)\<[`Mapper`](../modules/internal_.md#mapper)\<`A`, `B`, `P`\>\> | | `argument` | [`Applicative`](Applicative.md)\<`A`\> | | `...parameters` | `P` | @@ -78,7 +79,7 @@ dist/types.d.ts:19 | Name | Type | | :------ | :------ | | `this` | [`Applicative`](Applicative.md)\<`A`\> | -| `argument` | [`Applicative`](Applicative.md)\<[`Pm`](../modules/internal_.md#pm)\<`A`, `B`, `P`\>\> | +| `argument` | [`Applicative`](Applicative.md)\<[`Mapper`](../modules/internal_.md#mapper)\<`A`, `B`, `P`\>\> | | `...parameters` | `P` | #### Returns @@ -110,7 +111,7 @@ ___ | Name | Type | | :------ | :------ | -| `map` | [`Pm`](../modules/internal_.md#pm)\<`A`, [`MaybePromiseLike`](../modules.md#maybepromiselike)\<[`AsyncMonad`](AsyncMonad.md)\<`B`\>\>, `P`\> | +| `map` | [`Mapper`](../modules/internal_.md#mapper)\<`A`, [`MaybePromiseLike`](../modules.md#maybepromiselike)\<[`AsyncMonad`](AsyncMonad.md)\<`B`\>\>, `P`\> | | `...parameters` | `P` | #### Returns @@ -164,7 +165,7 @@ ___ | Name | Type | | :------ | :------ | -| `map` | [`Pm`](../modules/internal_.md#pm)\<`A`, [`Monad`](Monad.md)\<`B`\>, `P`\> | +| `map` | [`Mapper`](../modules/internal_.md#mapper)\<`A`, [`Monad`](Monad.md)\<`B`\>, `P`\> | | `...parameters` | `P` | #### Returns @@ -226,7 +227,7 @@ ___ | Name | Type | | :------ | :------ | -| `map` | [`Pm`](../modules/internal_.md#pm)\<`A`, `B`, `P`\> | +| `map` | [`Mapper`](../modules/internal_.md#mapper)\<`A`, `B`, `P`\> | | `...parameters` | `P` | #### Returns diff --git a/docs/api/interfaces/Container.md b/docs/api/interfaces/Container.md index 468c139..9fc2ca1 100644 --- a/docs/api/interfaces/Container.md +++ b/docs/api/interfaces/Container.md @@ -1,16 +1,17 @@ [Package](../README.md) / [Exports](../modules.md) / Container -# Interface: Container\ +# Interface: Container\ ## Type parameters | Name | | :------ | -| `T` | +| `A` | ## Implemented by - [`EitherConstructor`](../classes/internal_.EitherConstructor.md) +- [`Identity`](../classes/internal_.Identity.md) - [`MaybeConstructor`](../classes/internal_.MaybeConstructor.md) ## Table of contents @@ -24,11 +25,11 @@ ### unwrap -▸ **unwrap**(): `T` +▸ **unwrap**(): `A` #### Returns -`T` +`A` #### Defined in @@ -38,23 +39,23 @@ ___ ### unwrapOr -▸ **unwrapOr**\<`X`\>(`value`): `T` \| `X` +▸ **unwrapOr**\<`T`\>(`value`): `A` \| `T` #### Type parameters | Name | | :------ | -| `X` | +| `T` | #### Parameters | Name | Type | | :------ | :------ | -| `value` | `X` | +| `value` | `T` | #### Returns -`T` \| `X` +`A` \| `T` #### Defined in diff --git a/docs/api/interfaces/Functor.md b/docs/api/interfaces/Functor.md index 02e4de1..43a0c34 100644 --- a/docs/api/interfaces/Functor.md +++ b/docs/api/interfaces/Functor.md @@ -37,7 +37,7 @@ | Name | Type | | :------ | :------ | -| `map` | [`Pm`](../modules/internal_.md#pm)\<`A`, `B`, `P`\> | +| `map` | [`Mapper`](../modules/internal_.md#mapper)\<`A`, `B`, `P`\> | | `...parameters` | `P` | #### Returns diff --git a/docs/api/interfaces/Monad.md b/docs/api/interfaces/Monad.md index d4124fa..9d8a520 100644 --- a/docs/api/interfaces/Monad.md +++ b/docs/api/interfaces/Monad.md @@ -47,7 +47,7 @@ | Name | Type | | :------ | :------ | -| `this` | [`Applicative`](Applicative.md)\<[`Pm`](../modules/internal_.md#pm)\<`A`, `B`, `P`\>\> | +| `this` | [`Applicative`](Applicative.md)\<[`Mapper`](../modules/internal_.md#mapper)\<`A`, `B`, `P`\>\> | | `argument` | [`Applicative`](Applicative.md)\<`A`\> | | `...parameters` | `P` | @@ -78,7 +78,7 @@ dist/types.d.ts:19 | Name | Type | | :------ | :------ | | `this` | [`Applicative`](Applicative.md)\<`A`\> | -| `argument` | [`Applicative`](Applicative.md)\<[`Pm`](../modules/internal_.md#pm)\<`A`, `B`, `P`\>\> | +| `argument` | [`Applicative`](Applicative.md)\<[`Mapper`](../modules/internal_.md#mapper)\<`A`, `B`, `P`\>\> | | `...parameters` | `P` | #### Returns @@ -110,7 +110,7 @@ ___ | Name | Type | | :------ | :------ | -| `map` | [`Pm`](../modules/internal_.md#pm)\<`A`, [`Monad`](Monad.md)\<`B`\>, `P`\> | +| `map` | [`Mapper`](../modules/internal_.md#mapper)\<`A`, [`Monad`](Monad.md)\<`B`\>, `P`\> | | `...parameters` | `P` | #### Returns @@ -164,7 +164,7 @@ ___ | Name | Type | | :------ | :------ | -| `map` | [`Pm`](../modules/internal_.md#pm)\<`A`, `B`, `P`\> | +| `map` | [`Mapper`](../modules/internal_.md#mapper)\<`A`, `B`, `P`\> | | `...parameters` | `P` | #### Returns diff --git a/docs/api/interfaces/internal_.Pipe.md b/docs/api/interfaces/internal_.Pipe.md new file mode 100644 index 0000000..adadd1b --- /dev/null +++ b/docs/api/interfaces/internal_.Pipe.md @@ -0,0 +1,45 @@ +[Package](../README.md) / [Exports](../modules.md) / [\](../modules/internal_.md) / Pipe + +# Interface: Pipe + +[\](../modules/internal_.md).Pipe + +## Implemented by + +- [`EitherConstructor`](../classes/internal_.EitherConstructor.md) +- [`Identity`](../classes/internal_.Identity.md) +- [`MaybeConstructor`](../classes/internal_.MaybeConstructor.md) + +## Table of contents + +### Methods + +- [pipe](internal_.Pipe.md#pipe) + +## Methods + +### pipe + +▸ **pipe**\<`T`, `P`\>(`callback`, `...parameters`): `T` + +#### Type parameters + +| Name | Type | +| :------ | :------ | +| `T` | `T` | +| `P` | extends [`AnyParameters`](../modules.md#anyparameters) | + +#### Parameters + +| Name | Type | +| :------ | :------ | +| `callback` | [`Mapper`](../modules/internal_.md#mapper)\<[`Pipe`](internal_.Pipe.md), `T`, `P`\> | +| `...parameters` | `P` | + +#### Returns + +`T` + +#### Defined in + +dist/types.d.ts:35 diff --git a/docs/api/modules.md b/docs/api/modules.md index a0596a7..fef78e9 100644 --- a/docs/api/modules.md +++ b/docs/api/modules.md @@ -28,6 +28,7 @@ - [AnyParameters](modules.md#anyparameters) - [Either](modules.md#either) +- [Identity](modules.md#identity) - [Maybe](modules.md#maybe) - [MaybePromise](modules.md#maybepromise) - [MaybePromiseLike](modules.md#maybepromiselike) @@ -39,13 +40,14 @@ ### Variables - [Either](modules.md#either-1) +- [Identity](modules.md#identity-1) - [Maybe](modules.md#maybe-1) ### Functions - [bind](modules.md#bind) - [combine](modules.md#combine) -- [identity](modules.md#identity) +- [identity](modules.md#identity-2) - [noop](modules.md#noop) - [throwValue](modules.md#throwvalue) - [unwrap](modules.md#unwrap) @@ -81,6 +83,24 @@ dist/index.d.ts:7 ___ +### Identity + +Ƭ **Identity**\<`T`\>: [`Identity`](classes/internal_.Identity.md)\<`T`\> + +#### Type parameters + +| Name | +| :------ | +| `T` | + +#### Defined in + +dist/index.d.ts:380 + +dist/index.d.ts:381 + +___ + ### Maybe Ƭ **Maybe**\<`T`\>: [`Maybe`](modules/internal_.md#maybe)\<`T`\> @@ -93,9 +113,9 @@ ___ #### Defined in -dist/index.d.ts:28 +dist/index.d.ts:211 -dist/index.d.ts:33 +dist/index.d.ts:216 ___ @@ -193,13 +213,13 @@ ___ #### Defined in -dist/index.d.ts:29 +dist/index.d.ts:212 ## Variables ### Either -• **Either**: `Readonly`\<\{ `aggregateError`: \(`values`: [`Either`](modules/internal_.md#either)\<`T`, `unknown`\>[], `message`: `undefined` \| `string` \| (`lefts`: `T`[]) => `undefined` \| `string`) => `AggregateError` \| `undefined` ; `catch`: \(`method`: () => [`Either`](modules/internal_.md#either)\<`L`, `R`\>) => [`Either`](modules/internal_.md#either)\<`L`, `R`\> ; `catchAsync`: \(`method`: () => [`MaybePromiseLike`](modules.md#maybepromiselike)\<[`Either`](modules/internal_.md#either)\<`L`, `R`\>\>) => `Promise`\<[`Either`](modules/internal_.md#either)\<`L`, `R`\>\> ; `chain`: \(`map`: (`value`: `R`, ...`parameters`: `P`) => [`MaybePromiseLike`](modules.md#maybepromiselike)\<[`Either`](modules/internal_.md#either)\<`never`, `NR`\>\>, ...`parameters`: `P`) => (`either`: [`Either`](modules/internal_.md#either)\<`L`, `R`\>, ...`parameters`: `P`) => `Promise`\<[`Either`](modules/internal_.md#either)\<`L`, `NR`\>\>\(`map`: (`value`: `R`, ...`parameters`: `P`) => [`MaybePromiseLike`](modules.md#maybepromiselike)\<[`Either`](modules/internal_.md#either)\<`NL`, `never`\>\>, ...`parameters`: `P`) => (`either`: [`Either`](modules/internal_.md#either)\<`L`, `R`\>, ...`parameters`: `P`) => `Promise`\<[`Either`](modules/internal_.md#either)\<`NL` \| `L`, `R`\>\>\(`map`: (`value`: `R`, ...`parameters`: `P`) => [`MaybePromiseLike`](modules.md#maybepromiselike)\<[`Either`](modules/internal_.md#either)\<`NL`, `NR`\>\>, ...`parameters`: `P`) => (`either`: [`Either`](modules/internal_.md#either)\<`L`, `R`\>, ...`parameters`: `P`) => `Promise`\<[`Either`](modules/internal_.md#either)\<`NL` \| `L`, `NR`\>\> ; `fromJSON`: \(`serialized`: [`SerializedEither`](modules/internal_.md#serializedeither)\<`L`, `R`\>) => [`Either`](modules/internal_.md#either)\<`L`, `R`\> ; `fromMaybe`: \(`maybe`: [`Maybe`](modules/internal_.md#maybe)\<`R`\>, `leftValue`: `L`) => [`Either`](modules/internal_.md#either)\<`L`, `R`\> ; `fromPromise`: \(`promise`: [`MaybePromiseLike`](modules.md#maybepromiselike)\<`T`\>) => `Promise`\<[`Either`](modules/internal_.md#either)\<`L`, `T`\>\> ; `fromPromiseSettledResult`: \(`result`: `PromiseSettledResult`\<`T`\>) => [`Either`](modules/internal_.md#either)\<`L`, `T`\> ; `fromTry`: \(`callback`: () => `T`) => [`Either`](modules/internal_.md#either)\<`L`, `T`\> ; `fromTryAsync`: \(`callback`: () => [`MaybePromiseLike`](modules.md#maybepromiselike)\<`T`\>) => `Promise`\<[`Either`](modules/internal_.md#either)\<`L`, `T`\>\> ; `isEither`: \(`value`: `unknown`) => value is Either\ ; `left`: \(`value`: `T`) => [`Either`](modules/internal_.md#either)\<`T`, `R`\> ; `merge`: \(`values`: [[`Either`](modules/internal_.md#either)\<`L1`, `R1`\>]) => [`Either`](modules/internal_.md#either)\<`L1`, [`R1`]\>\(`values`: [[`Either`](modules/internal_.md#either)\<`L1`, `R1`\>, [`Either`](modules/internal_.md#either)\<`L2`, `R2`\>]) => [`Either`](modules/internal_.md#either)\<`L1` \| `L2`, [`R1`, `R2`]\>\(`values`: [[`Either`](modules/internal_.md#either)\<`L1`, `R1`\>, [`Either`](modules/internal_.md#either)\<`L2`, `R2`\>, [`Either`](modules/internal_.md#either)\<`L3`, `R3`\>]) => [`Either`](modules/internal_.md#either)\<`L1` \| `L2` \| `L3`, [`R1`, `R2`, `R3`]\>\(`values`: [[`Either`](modules/internal_.md#either)\<`L1`, `R1`\>, [`Either`](modules/internal_.md#either)\<`L2`, `R2`\>, [`Either`](modules/internal_.md#either)\<`L3`, `R3`\>, [`Either`](modules/internal_.md#either)\<`L4`, `R4`\>]) => [`Either`](modules/internal_.md#either)\<`L1` \| `L2` \| `L3` \| `L4`, [`R1`, `R2`, `R3`, `R4`]\>\(`values`: [[`Either`](modules/internal_.md#either)\<`L1`, `R1`\>, [`Either`](modules/internal_.md#either)\<`L2`, `R2`\>, [`Either`](modules/internal_.md#either)\<`L3`, `R3`\>, [`Either`](modules/internal_.md#either)\<`L4`, `R4`\>, [`Either`](modules/internal_.md#either)\<`L5`, `R5`\>]) => [`Either`](modules/internal_.md#either)\<`L1` \| `L2` \| `L3` \| `L4` \| `L5`, [`R1`, `R2`, `R3`, `R4`, `R5`]\>\(`values`: [[`Either`](modules/internal_.md#either)\<`L1`, `R1`\>, [`Either`](modules/internal_.md#either)\<`L2`, `R2`\>, [`Either`](modules/internal_.md#either)\<`L3`, `R3`\>, [`Either`](modules/internal_.md#either)\<`L4`, `R4`\>, [`Either`](modules/internal_.md#either)\<`L5`, `R5`\>, [`Either`](modules/internal_.md#either)\<`L6`, `R6`\>]) => [`Either`](modules/internal_.md#either)\<`L1` \| `L2` \| `L3` \| `L4` \| `L5` \| `L6`, [`R1`, `R2`, `R3`, `R4`, `R5`, `R6`]\>\(`values`: [`Either`](modules/internal_.md#either)\<`L`, `R`\>[]) => [`Either`](modules/internal_.md#either)\<`L`, `R`[]\> ; `mergeInMany`: \(`values`: [[`Either`](modules/internal_.md#either)\<`L1`, `R1`\>]) => [`Either`](modules/internal_.md#either)\<`L1`[], [`R1`]\>\(`values`: [[`Either`](modules/internal_.md#either)\<`L1`, `R1`\>, [`Either`](modules/internal_.md#either)\<`L2`, `R2`\>]) => [`Either`](modules/internal_.md#either)\<(`L1` \| `L2`)[], [`R1`, `R2`]\>\(`values`: [[`Either`](modules/internal_.md#either)\<`L1`, `R1`\>, [`Either`](modules/internal_.md#either)\<`L2`, `R2`\>, [`Either`](modules/internal_.md#either)\<`L3`, `R3`\>]) => [`Either`](modules/internal_.md#either)\<(`L1` \| `L2` \| `L3`)[], [`R1`, `R2`, `R3`]\>\(`values`: [[`Either`](modules/internal_.md#either)\<`L1`, `R1`\>, [`Either`](modules/internal_.md#either)\<`L2`, `R2`\>, [`Either`](modules/internal_.md#either)\<`L3`, `R3`\>, [`Either`](modules/internal_.md#either)\<`L4`, `R4`\>]) => [`Either`](modules/internal_.md#either)\<(`L1` \| `L2` \| `L3` \| `L4`)[], [`R1`, `R2`, `R3`, `R4`]\>\(`values`: [[`Either`](modules/internal_.md#either)\<`L1`, `R1`\>, [`Either`](modules/internal_.md#either)\<`L2`, `R2`\>, [`Either`](modules/internal_.md#either)\<`L3`, `R3`\>, [`Either`](modules/internal_.md#either)\<`L4`, `R4`\>, [`Either`](modules/internal_.md#either)\<`L5`, `R5`\>]) => [`Either`](modules/internal_.md#either)\<(`L1` \| `L2` \| `L3` \| `L4` \| `L5`)[], [`R1`, `R2`, `R3`, `R4`, `R5`]\>\(`values`: [[`Either`](modules/internal_.md#either)\<`L1`, `R1`\>, [`Either`](modules/internal_.md#either)\<`L2`, `R2`\>, [`Either`](modules/internal_.md#either)\<`L3`, `R3`\>, [`Either`](modules/internal_.md#either)\<`L4`, `R4`\>, [`Either`](modules/internal_.md#either)\<`L5`, `R5`\>, [`Either`](modules/internal_.md#either)\<`L6`, `R6`\>]) => [`Either`](modules/internal_.md#either)\<(`L1` \| `L2` \| `L3` \| `L4` \| `L5` \| `L6`)[], [`R1`, `R2`, `R3`, `R4`, `R5`, `R6`]\>\(`values`: [`Either`](modules/internal_.md#either)\<`L`, `R`\>[]) => [`Either`](modules/internal_.md#either)\<`L`[], `R`[]\> ; `mergeInOne`: \(`values`: [[`Either`](modules/internal_.md#either)\<`L1`, `R1`\>]) => [`Either`](modules/internal_.md#either)\<`L1`, [`R1`]\>\(`values`: [[`Either`](modules/internal_.md#either)\<`L1`, `R1`\>, [`Either`](modules/internal_.md#either)\<`L2`, `R2`\>]) => [`Either`](modules/internal_.md#either)\<`L1` \| `L2`, [`R1`, `R2`]\>\(`values`: [[`Either`](modules/internal_.md#either)\<`L1`, `R1`\>, [`Either`](modules/internal_.md#either)\<`L2`, `R2`\>, [`Either`](modules/internal_.md#either)\<`L3`, `R3`\>]) => [`Either`](modules/internal_.md#either)\<`L1` \| `L2` \| `L3`, [`R1`, `R2`, `R3`]\>\(`values`: [[`Either`](modules/internal_.md#either)\<`L1`, `R1`\>, [`Either`](modules/internal_.md#either)\<`L2`, `R2`\>, [`Either`](modules/internal_.md#either)\<`L3`, `R3`\>, [`Either`](modules/internal_.md#either)\<`L4`, `R4`\>]) => [`Either`](modules/internal_.md#either)\<`L1` \| `L2` \| `L3` \| `L4`, [`R1`, `R2`, `R3`, `R4`]\>\(`values`: [[`Either`](modules/internal_.md#either)\<`L1`, `R1`\>, [`Either`](modules/internal_.md#either)\<`L2`, `R2`\>, [`Either`](modules/internal_.md#either)\<`L3`, `R3`\>, [`Either`](modules/internal_.md#either)\<`L4`, `R4`\>, [`Either`](modules/internal_.md#either)\<`L5`, `R5`\>]) => [`Either`](modules/internal_.md#either)\<`L1` \| `L2` \| `L3` \| `L4` \| `L5`, [`R1`, `R2`, `R3`, `R4`, `R5`]\>\(`values`: [[`Either`](modules/internal_.md#either)\<`L1`, `R1`\>, [`Either`](modules/internal_.md#either)\<`L2`, `R2`\>, [`Either`](modules/internal_.md#either)\<`L3`, `R3`\>, [`Either`](modules/internal_.md#either)\<`L4`, `R4`\>, [`Either`](modules/internal_.md#either)\<`L5`, `R5`\>, [`Either`](modules/internal_.md#either)\<`L6`, `R6`\>]) => [`Either`](modules/internal_.md#either)\<`L1` \| `L2` \| `L3` \| `L4` \| `L5` \| `L6`, [`R1`, `R2`, `R3`, `R4`, `R5`, `R6`]\>\(`values`: [`Either`](modules/internal_.md#either)\<`L`, `R`\>[]) => [`Either`](modules/internal_.md#either)\<`L`, `R`[]\> ; `right`: \(`right`: `T`) => [`Either`](modules/internal_.md#either)\<`L`, `T`\> ; `wrap`: \(`method`: (...`parameters`: `P`) => [`Either`](modules/internal_.md#either)\<`L`, `R`\>) => (`this`: `any`, ...`parameters`: `P`) => [`Either`](modules/internal_.md#either)\<`L`, `R`\> ; `wrapAsync`: \(`method`: (...`parameters`: `P`) => [`MaybePromiseLike`](modules.md#maybepromiselike)\<[`Either`](modules/internal_.md#either)\<`L`, `R`\>\>) => (`this`: `any`, ...`parameters`: `P`) => `Promise`\<[`Either`](modules/internal_.md#either)\<`L`, `R`\>\> }\> +• **Either**: `Readonly`\<\{ `aggregateError`: \(`values`: [`Either`](modules/internal_.md#either)\<`T`, `unknown`\>[], `message`: `undefined` \| `string` \| (`lefts`: `T`[]) => `undefined` \| `string`) => `AggregateError` \| `undefined` ; `catch`: \(`method`: () => [`Either`](modules/internal_.md#either)\<`L`, `R`\>) => [`Either`](modules/internal_.md#either)\<`L`, `R`\> ; `catchAsync`: \(`method`: () => [`MaybePromiseLike`](modules.md#maybepromiselike)\<[`Either`](modules/internal_.md#either)\<`L`, `R`\>\>) => `Promise`\<[`Either`](modules/internal_.md#either)\<`L`, `R`\>\> ; `chain`: \(`map`: (`value`: `R`, ...`parameters`: `P`) => [`MaybePromiseLike`](modules.md#maybepromiselike)\<[`Either`](modules/internal_.md#either)\<`never`, `NR`\>\>, ...`parameters`: `P`) => (`either`: [`Either`](modules/internal_.md#either)\<`L`, `R`\>, ...`parameters`: `P`) => `Promise`\<[`Either`](modules/internal_.md#either)\<`L`, `NR`\>\>\(`map`: (`value`: `R`, ...`parameters`: `P`) => [`MaybePromiseLike`](modules.md#maybepromiselike)\<[`Either`](modules/internal_.md#either)\<`NL`, `never`\>\>, ...`parameters`: `P`) => (`either`: [`Either`](modules/internal_.md#either)\<`L`, `R`\>, ...`parameters`: `P`) => `Promise`\<[`Either`](modules/internal_.md#either)\<`NL` \| `L`, `R`\>\>\(`map`: (`value`: `R`, ...`parameters`: `P`) => [`MaybePromiseLike`](modules.md#maybepromiselike)\<[`Either`](modules/internal_.md#either)\<`NL`, `NR`\>\>, ...`parameters`: `P`) => (`either`: [`Either`](modules/internal_.md#either)\<`L`, `R`\>, ...`parameters`: `P`) => `Promise`\<[`Either`](modules/internal_.md#either)\<`NL` \| `L`, `NR`\>\> ; `from`: \(`right`: `R`) => [`Either`](modules/internal_.md#either)\<`L`, `R`\> ; `fromJSON`: \(`serialized`: [`SerializedEither`](modules/internal_.md#serializedeither)\<`L`, `R`\>) => [`Either`](modules/internal_.md#either)\<`L`, `R`\> ; `fromMaybe`: \(`maybe`: [`Maybe`](modules/internal_.md#maybe)\<`R`\>, `leftValue`: `L`) => [`Either`](modules/internal_.md#either)\<`L`, `R`\> ; `fromPromise`: \(`promise`: [`MaybePromiseLike`](modules.md#maybepromiselike)\<`T`\>) => `Promise`\<[`Either`](modules/internal_.md#either)\<`L`, `T`\>\> ; `fromPromiseSettledResult`: \(`result`: `PromiseSettledResult`\<`T`\>) => [`Either`](modules/internal_.md#either)\<`L`, `T`\> ; `fromTry`: \(`callback`: () => `T`) => [`Either`](modules/internal_.md#either)\<`L`, `T`\> ; `fromTryAsync`: \(`callback`: () => [`MaybePromiseLike`](modules.md#maybepromiselike)\<`T`\>) => `Promise`\<[`Either`](modules/internal_.md#either)\<`L`, `T`\>\> ; `isEither`: \(`value`: `unknown`) => value is Either\ ; `isLeft`: \(`value`: `unknown`) => value is Object ; `isRight`: \(`value`: `unknown`) => value is Object ; `left`: \(`value`: `L`) => [`Either`](modules/internal_.md#either)\<`L`, `R`\> ; `merge`: \(`values`: [[`Either`](modules/internal_.md#either)\<`L1`, `R1`\>]) => [`Either`](modules/internal_.md#either)\<`L1`, [`R1`]\>\(`values`: [[`Either`](modules/internal_.md#either)\<`L1`, `R1`\>, [`Either`](modules/internal_.md#either)\<`L2`, `R2`\>]) => [`Either`](modules/internal_.md#either)\<`L1` \| `L2`, [`R1`, `R2`]\>\(`values`: [[`Either`](modules/internal_.md#either)\<`L1`, `R1`\>, [`Either`](modules/internal_.md#either)\<`L2`, `R2`\>, [`Either`](modules/internal_.md#either)\<`L3`, `R3`\>]) => [`Either`](modules/internal_.md#either)\<`L1` \| `L2` \| `L3`, [`R1`, `R2`, `R3`]\>\(`values`: [[`Either`](modules/internal_.md#either)\<`L1`, `R1`\>, [`Either`](modules/internal_.md#either)\<`L2`, `R2`\>, [`Either`](modules/internal_.md#either)\<`L3`, `R3`\>, [`Either`](modules/internal_.md#either)\<`L4`, `R4`\>]) => [`Either`](modules/internal_.md#either)\<`L1` \| `L2` \| `L3` \| `L4`, [`R1`, `R2`, `R3`, `R4`]\>\(`values`: [[`Either`](modules/internal_.md#either)\<`L1`, `R1`\>, [`Either`](modules/internal_.md#either)\<`L2`, `R2`\>, [`Either`](modules/internal_.md#either)\<`L3`, `R3`\>, [`Either`](modules/internal_.md#either)\<`L4`, `R4`\>, [`Either`](modules/internal_.md#either)\<`L5`, `R5`\>]) => [`Either`](modules/internal_.md#either)\<`L1` \| `L2` \| `L3` \| `L4` \| `L5`, [`R1`, `R2`, `R3`, `R4`, `R5`]\>\(`values`: [[`Either`](modules/internal_.md#either)\<`L1`, `R1`\>, [`Either`](modules/internal_.md#either)\<`L2`, `R2`\>, [`Either`](modules/internal_.md#either)\<`L3`, `R3`\>, [`Either`](modules/internal_.md#either)\<`L4`, `R4`\>, [`Either`](modules/internal_.md#either)\<`L5`, `R5`\>, [`Either`](modules/internal_.md#either)\<`L6`, `R6`\>]) => [`Either`](modules/internal_.md#either)\<`L1` \| `L2` \| `L3` \| `L4` \| `L5` \| `L6`, [`R1`, `R2`, `R3`, `R4`, `R5`, `R6`]\>\(`values`: [`Either`](modules/internal_.md#either)\<`L`, `R`\>[]) => [`Either`](modules/internal_.md#either)\<`L`, `R`[]\> ; `mergeInMany`: \(`values`: [[`Either`](modules/internal_.md#either)\<`L1`, `R1`\>]) => [`Either`](modules/internal_.md#either)\<`L1`[], [`R1`]\>\(`values`: [[`Either`](modules/internal_.md#either)\<`L1`, `R1`\>, [`Either`](modules/internal_.md#either)\<`L2`, `R2`\>]) => [`Either`](modules/internal_.md#either)\<(`L1` \| `L2`)[], [`R1`, `R2`]\>\(`values`: [[`Either`](modules/internal_.md#either)\<`L1`, `R1`\>, [`Either`](modules/internal_.md#either)\<`L2`, `R2`\>, [`Either`](modules/internal_.md#either)\<`L3`, `R3`\>]) => [`Either`](modules/internal_.md#either)\<(`L1` \| `L2` \| `L3`)[], [`R1`, `R2`, `R3`]\>\(`values`: [[`Either`](modules/internal_.md#either)\<`L1`, `R1`\>, [`Either`](modules/internal_.md#either)\<`L2`, `R2`\>, [`Either`](modules/internal_.md#either)\<`L3`, `R3`\>, [`Either`](modules/internal_.md#either)\<`L4`, `R4`\>]) => [`Either`](modules/internal_.md#either)\<(`L1` \| `L2` \| `L3` \| `L4`)[], [`R1`, `R2`, `R3`, `R4`]\>\(`values`: [[`Either`](modules/internal_.md#either)\<`L1`, `R1`\>, [`Either`](modules/internal_.md#either)\<`L2`, `R2`\>, [`Either`](modules/internal_.md#either)\<`L3`, `R3`\>, [`Either`](modules/internal_.md#either)\<`L4`, `R4`\>, [`Either`](modules/internal_.md#either)\<`L5`, `R5`\>]) => [`Either`](modules/internal_.md#either)\<(`L1` \| `L2` \| `L3` \| `L4` \| `L5`)[], [`R1`, `R2`, `R3`, `R4`, `R5`]\>\(`values`: [[`Either`](modules/internal_.md#either)\<`L1`, `R1`\>, [`Either`](modules/internal_.md#either)\<`L2`, `R2`\>, [`Either`](modules/internal_.md#either)\<`L3`, `R3`\>, [`Either`](modules/internal_.md#either)\<`L4`, `R4`\>, [`Either`](modules/internal_.md#either)\<`L5`, `R5`\>, [`Either`](modules/internal_.md#either)\<`L6`, `R6`\>]) => [`Either`](modules/internal_.md#either)\<(`L1` \| `L2` \| `L3` \| `L4` \| `L5` \| `L6`)[], [`R1`, `R2`, `R3`, `R4`, `R5`, `R6`]\>\(`values`: [`Either`](modules/internal_.md#either)\<`L`, `R`\>[]) => [`Either`](modules/internal_.md#either)\<`L`[], `R`[]\> ; `mergeInOne`: \(`values`: [[`Either`](modules/internal_.md#either)\<`L1`, `R1`\>]) => [`Either`](modules/internal_.md#either)\<`L1`, [`R1`]\>\(`values`: [[`Either`](modules/internal_.md#either)\<`L1`, `R1`\>, [`Either`](modules/internal_.md#either)\<`L2`, `R2`\>]) => [`Either`](modules/internal_.md#either)\<`L1` \| `L2`, [`R1`, `R2`]\>\(`values`: [[`Either`](modules/internal_.md#either)\<`L1`, `R1`\>, [`Either`](modules/internal_.md#either)\<`L2`, `R2`\>, [`Either`](modules/internal_.md#either)\<`L3`, `R3`\>]) => [`Either`](modules/internal_.md#either)\<`L1` \| `L2` \| `L3`, [`R1`, `R2`, `R3`]\>\(`values`: [[`Either`](modules/internal_.md#either)\<`L1`, `R1`\>, [`Either`](modules/internal_.md#either)\<`L2`, `R2`\>, [`Either`](modules/internal_.md#either)\<`L3`, `R3`\>, [`Either`](modules/internal_.md#either)\<`L4`, `R4`\>]) => [`Either`](modules/internal_.md#either)\<`L1` \| `L2` \| `L3` \| `L4`, [`R1`, `R2`, `R3`, `R4`]\>\(`values`: [[`Either`](modules/internal_.md#either)\<`L1`, `R1`\>, [`Either`](modules/internal_.md#either)\<`L2`, `R2`\>, [`Either`](modules/internal_.md#either)\<`L3`, `R3`\>, [`Either`](modules/internal_.md#either)\<`L4`, `R4`\>, [`Either`](modules/internal_.md#either)\<`L5`, `R5`\>]) => [`Either`](modules/internal_.md#either)\<`L1` \| `L2` \| `L3` \| `L4` \| `L5`, [`R1`, `R2`, `R3`, `R4`, `R5`]\>\(`values`: [[`Either`](modules/internal_.md#either)\<`L1`, `R1`\>, [`Either`](modules/internal_.md#either)\<`L2`, `R2`\>, [`Either`](modules/internal_.md#either)\<`L3`, `R3`\>, [`Either`](modules/internal_.md#either)\<`L4`, `R4`\>, [`Either`](modules/internal_.md#either)\<`L5`, `R5`\>, [`Either`](modules/internal_.md#either)\<`L6`, `R6`\>]) => [`Either`](modules/internal_.md#either)\<`L1` \| `L2` \| `L3` \| `L4` \| `L5` \| `L6`, [`R1`, `R2`, `R3`, `R4`, `R5`, `R6`]\>\(`values`: [`Either`](modules/internal_.md#either)\<`L`, `R`\>[]) => [`Either`](modules/internal_.md#either)\<`L`, `R`[]\> ; `right`: \(`right`: `R`) => [`Either`](modules/internal_.md#either)\<`L`, `R`\> ; `wrap`: \(`method`: (...`parameters`: `P`) => [`Either`](modules/internal_.md#either)\<`L`, `R`\>) => (`this`: `any`, ...`parameters`: `P`) => [`Either`](modules/internal_.md#either)\<`L`, `R`\> ; `wrapAsync`: \(`method`: (...`parameters`: `P`) => [`MaybePromiseLike`](modules.md#maybepromiselike)\<[`Either`](modules/internal_.md#either)\<`L`, `R`\>\>) => (`this`: `any`, ...`parameters`: `P`) => `Promise`\<[`Either`](modules/internal_.md#either)\<`L`, `R`\>\> }\> **`Deprecated`** @@ -213,9 +233,21 @@ dist/index.d.ts:7 ___ +### Identity + +• **Identity**: `Readonly`\<\{ `chain`: \(`map`: (`value`: `A`, ...`parameters`: `P`) => [`MaybePromiseLike`](modules.md#maybepromiselike)\<[`Identity`](classes/internal_.Identity.md)\<`B`\>\>, ...`parameters`: `P`) => (`either`: [`Identity`](classes/internal_.Identity.md)\<`A`\>) => `Promise`\<[`Identity`](classes/internal_.Identity.md)\<`B`\>\> ; `from`: \(`value`: `T`) => [`Identity`](classes/internal_.Identity.md)\<`T`\> ; `isIdentity`: \(`value`: `unknown`) => value is Identity\ ; `merge`: \(`values`: [[`Identity`](classes/internal_.Identity.md)\<`V1`\>]) => [`Identity`](classes/internal_.Identity.md)\<[`V1`]\>\(`values`: [[`Identity`](classes/internal_.Identity.md)\<`V1`\>, [`Identity`](classes/internal_.Identity.md)\<`V2`\>]) => [`Identity`](classes/internal_.Identity.md)\<[`V1`, `V2`]\>\(`values`: [[`Identity`](classes/internal_.Identity.md)\<`V1`\>, [`Identity`](classes/internal_.Identity.md)\<`V2`\>, [`Identity`](classes/internal_.Identity.md)\<`V3`\>]) => [`Identity`](classes/internal_.Identity.md)\<[`V1`, `V2`, `V3`]\>\(`values`: [[`Identity`](classes/internal_.Identity.md)\<`V1`\>, [`Identity`](classes/internal_.Identity.md)\<`V2`\>, [`Identity`](classes/internal_.Identity.md)\<`V3`\>, [`Identity`](classes/internal_.Identity.md)\<`V4`\>]) => [`Identity`](classes/internal_.Identity.md)\<[`V1`, `V2`, `V3`, `V4`]\>\(`values`: [[`Identity`](classes/internal_.Identity.md)\<`V1`\>, [`Identity`](classes/internal_.Identity.md)\<`V2`\>, [`Identity`](classes/internal_.Identity.md)\<`V3`\>, [`Identity`](classes/internal_.Identity.md)\<`V4`\>, [`Identity`](classes/internal_.Identity.md)\<`V5`\>]) => [`Identity`](classes/internal_.Identity.md)\<[`V1`, `V2`, `V3`, `V4`, `V5`]\>\(`values`: [[`Identity`](classes/internal_.Identity.md)\<`V1`\>, [`Identity`](classes/internal_.Identity.md)\<`V2`\>, [`Identity`](classes/internal_.Identity.md)\<`V3`\>, [`Identity`](classes/internal_.Identity.md)\<`V4`\>, [`Identity`](classes/internal_.Identity.md)\<`V5`\>, [`Identity`](classes/internal_.Identity.md)\<`V6`\>]) => [`Identity`](classes/internal_.Identity.md)\<[`V1`, `V2`, `V3`, `V4`, `V5`, `V6`]\>\(`values`: [`Identity`](classes/internal_.Identity.md)\<`T`\>[]) => [`Identity`](classes/internal_.Identity.md)\<`T`[]\> }\> + +#### Defined in + +dist/index.d.ts:380 + +dist/index.d.ts:381 + +___ + ### Maybe -• **Maybe**: `Readonly`\<\{ `asyncIterator`: \(`callback`: () => [`MaybePromiseLike`](modules.md#maybepromiselike)\<[`Maybe`](modules/internal_.md#maybe)\<[`MaybePromiseLike`](modules.md#maybepromiselike)\<`T`\>\>\>) => `AsyncGenerator`\<`T`, `void`, `void`\> ; `chain`: \(`map`: (`v`: `A`, ...`parameters`: `P`) => [`MaybePromiseLike`](modules.md#maybepromiselike)\<[`Maybe`](modules/internal_.md#maybe)\<`B`\>\>, ...`parameters`: `P`) => (`maybe`: [`Maybe`](modules/internal_.md#maybe)\<`A`\>) => `Promise`\<[`Maybe`](modules/internal_.md#maybe)\<`B`\>\> ; `filterMap`: \(`iterable`: `Iterable`\<`T`\>, `filterMap`: (`value`: `T`, `index`: `number`) => [`Maybe`](modules/internal_.md#maybe)\<`X`\>) => `Generator`\<`X`, `void`, `void`\> ; `fromEitherLeft`: \(`either`: [`Either`](modules/internal_.md#either)\<`L`, `unknown`\>) => [`Maybe`](modules/internal_.md#maybe)\<`L`\> ; `fromEitherRight`: \(`either`: [`Either`](modules/internal_.md#either)\<`unknown`, `R`\>) => [`Maybe`](modules/internal_.md#maybe)\<`R`\> ; `fromJSON`: \(`serialized`: [`SerializedMaybe`](modules/internal_.md#serializedmaybe)\<`T`\>) => [`Maybe`](modules/internal_.md#maybe)\<`T`\> ; `fromNullable`: \(`value`: [`Nullable`](modules.md#nullable)\<`T`\>) => [`Maybe`](modules/internal_.md#maybe)\<`T`\> ; `isMaybe`: \(`value`: `unknown`) => value is Maybe\ ; `iterator`: \(`callback`: () => [`Maybe`](modules/internal_.md#maybe)\<`T`\>) => `Generator`\<`T`, `void`, `void`\> ; `just`: \(`value`: `T`) => [`Maybe`](modules/internal_.md#maybe)\<`T`\> ; `merge`: \(`values`: [[`Maybe`](modules/internal_.md#maybe)\<`V1`\>]) => [`Maybe`](modules/internal_.md#maybe)\<[`V1`]\>\(`values`: [[`Maybe`](modules/internal_.md#maybe)\<`V1`\>, [`Maybe`](modules/internal_.md#maybe)\<`V2`\>]) => [`Maybe`](modules/internal_.md#maybe)\<[`V1`, `V2`]\>\(`values`: [[`Maybe`](modules/internal_.md#maybe)\<`V1`\>, [`Maybe`](modules/internal_.md#maybe)\<`V2`\>, [`Maybe`](modules/internal_.md#maybe)\<`V3`\>]) => [`Maybe`](modules/internal_.md#maybe)\<[`V1`, `V2`, `V3`]\>\(`values`: [[`Maybe`](modules/internal_.md#maybe)\<`V1`\>, [`Maybe`](modules/internal_.md#maybe)\<`V2`\>, [`Maybe`](modules/internal_.md#maybe)\<`V3`\>, [`Maybe`](modules/internal_.md#maybe)\<`V4`\>]) => [`Maybe`](modules/internal_.md#maybe)\<[`V1`, `V2`, `V3`, `V4`]\>\(`values`: [[`Maybe`](modules/internal_.md#maybe)\<`V1`\>, [`Maybe`](modules/internal_.md#maybe)\<`V2`\>, [`Maybe`](modules/internal_.md#maybe)\<`V3`\>, [`Maybe`](modules/internal_.md#maybe)\<`V4`\>, [`Maybe`](modules/internal_.md#maybe)\<`V5`\>]) => [`Maybe`](modules/internal_.md#maybe)\<[`V1`, `V2`, `V3`, `V4`, `V5`]\>\(`values`: [[`Maybe`](modules/internal_.md#maybe)\<`V1`\>, [`Maybe`](modules/internal_.md#maybe)\<`V2`\>, [`Maybe`](modules/internal_.md#maybe)\<`V3`\>, [`Maybe`](modules/internal_.md#maybe)\<`V4`\>, [`Maybe`](modules/internal_.md#maybe)\<`V5`\>, [`Maybe`](modules/internal_.md#maybe)\<`V6`\>]) => [`Maybe`](modules/internal_.md#maybe)\<[`V1`, `V2`, `V3`, `V4`, `V5`, `V6`]\>\(`values`: [`Maybe`](modules/internal_.md#maybe)\<`T`\>[]) => [`Maybe`](modules/internal_.md#maybe)\<`T`[]\> ; `none`: \() => [`Maybe`](modules/internal_.md#maybe)\<`T`\> }\> +• **Maybe**: `Readonly`\<\{ `asyncIterator`: \(`callback`: () => [`MaybePromiseLike`](modules.md#maybepromiselike)\<[`Maybe`](modules/internal_.md#maybe)\<[`MaybePromiseLike`](modules.md#maybepromiselike)\<`T`\>\>\>) => `AsyncGenerator`\<`T`, `void`, `void`\> ; `chain`: \(`map`: (`v`: `A`, ...`parameters`: `P`) => [`MaybePromiseLike`](modules.md#maybepromiselike)\<[`Maybe`](modules/internal_.md#maybe)\<`B`\>\>, ...`parameters`: `P`) => (`maybe`: [`Maybe`](modules/internal_.md#maybe)\<`A`\>) => `Promise`\<[`Maybe`](modules/internal_.md#maybe)\<`B`\>\> ; `filterMap`: \(`iterable`: `Iterable`\<`A`\>, `filterMap`: (`value`: `A`, `index`: `number`) => [`Maybe`](modules/internal_.md#maybe)\<`B`\>) => `Generator`\<`B`, `void`, `void`\> ; `from`: \(`value`: `T`) => [`Maybe`](modules/internal_.md#maybe)\<`T`\> ; `fromEitherLeft`: \(`either`: [`Either`](modules/internal_.md#either)\<`L`, `unknown`\>) => [`Maybe`](modules/internal_.md#maybe)\<`L`\> ; `fromEitherRight`: \(`either`: [`Either`](modules/internal_.md#either)\<`unknown`, `R`\>) => [`Maybe`](modules/internal_.md#maybe)\<`R`\> ; `fromJSON`: \(`serialized`: [`SerializedMaybe`](modules/internal_.md#serializedmaybe)\<`T`\>) => [`Maybe`](modules/internal_.md#maybe)\<`T`\> ; `fromNullable`: \(`value`: [`Nullable`](modules.md#nullable)\<`T`\>) => [`Maybe`](modules/internal_.md#maybe)\<`T`\> ; `isJust`: \(`value`: `unknown`) => value is Object ; `isMaybe`: \(`value`: `unknown`) => value is Maybe\ ; `isNone`: \(`value`: `unknown`) => value is Object ; `iterator`: \(`callback`: () => [`Maybe`](modules/internal_.md#maybe)\<`T`\>) => `Generator`\<`T`, `void`, `void`\> ; `just`: \(`value`: `T`) => [`Maybe`](modules/internal_.md#maybe)\<`T`\> ; `merge`: \(`values`: [[`Maybe`](modules/internal_.md#maybe)\<`V1`\>]) => [`Maybe`](modules/internal_.md#maybe)\<[`V1`]\>\(`values`: [[`Maybe`](modules/internal_.md#maybe)\<`V1`\>, [`Maybe`](modules/internal_.md#maybe)\<`V2`\>]) => [`Maybe`](modules/internal_.md#maybe)\<[`V1`, `V2`]\>\(`values`: [[`Maybe`](modules/internal_.md#maybe)\<`V1`\>, [`Maybe`](modules/internal_.md#maybe)\<`V2`\>, [`Maybe`](modules/internal_.md#maybe)\<`V3`\>]) => [`Maybe`](modules/internal_.md#maybe)\<[`V1`, `V2`, `V3`]\>\(`values`: [[`Maybe`](modules/internal_.md#maybe)\<`V1`\>, [`Maybe`](modules/internal_.md#maybe)\<`V2`\>, [`Maybe`](modules/internal_.md#maybe)\<`V3`\>, [`Maybe`](modules/internal_.md#maybe)\<`V4`\>]) => [`Maybe`](modules/internal_.md#maybe)\<[`V1`, `V2`, `V3`, `V4`]\>\(`values`: [[`Maybe`](modules/internal_.md#maybe)\<`V1`\>, [`Maybe`](modules/internal_.md#maybe)\<`V2`\>, [`Maybe`](modules/internal_.md#maybe)\<`V3`\>, [`Maybe`](modules/internal_.md#maybe)\<`V4`\>, [`Maybe`](modules/internal_.md#maybe)\<`V5`\>]) => [`Maybe`](modules/internal_.md#maybe)\<[`V1`, `V2`, `V3`, `V4`, `V5`]\>\(`values`: [[`Maybe`](modules/internal_.md#maybe)\<`V1`\>, [`Maybe`](modules/internal_.md#maybe)\<`V2`\>, [`Maybe`](modules/internal_.md#maybe)\<`V3`\>, [`Maybe`](modules/internal_.md#maybe)\<`V4`\>, [`Maybe`](modules/internal_.md#maybe)\<`V5`\>, [`Maybe`](modules/internal_.md#maybe)\<`V6`\>]) => [`Maybe`](modules/internal_.md#maybe)\<[`V1`, `V2`, `V3`, `V4`, `V5`, `V6`]\>\(`values`: [`Maybe`](modules/internal_.md#maybe)\<`T`\>[]) => [`Maybe`](modules/internal_.md#maybe)\<`T`[]\> ; `none`: \() => [`Maybe`](modules/internal_.md#maybe)\<`T`\> }\> **`Deprecated`** @@ -223,9 +255,9 @@ This is created only for compatibility with old nodejs. This is not tree-shakabl #### Defined in -dist/index.d.ts:28 +dist/index.d.ts:211 -dist/index.d.ts:33 +dist/index.d.ts:216 ## Functions diff --git a/docs/api/modules/internal_.md b/docs/api/modules/internal_.md index ae5d085..81fcd63 100644 --- a/docs/api/modules/internal_.md +++ b/docs/api/modules/internal_.md @@ -22,17 +22,22 @@ ### Classes - [EitherConstructor](../classes/internal_.EitherConstructor.md) +- [Identity](../classes/internal_.Identity.md) - [Just](../classes/internal_.Just.md) - [Left](../classes/internal_.Left.md) - [MaybeConstructor](../classes/internal_.MaybeConstructor.md) - [None](../classes/internal_.None.md) - [Right](../classes/internal_.Right.md) +### Interfaces + +- [Pipe](../interfaces/internal_.Pipe.md) + ### Type Aliases - [Either](internal_.md#either) +- [Mapper](internal_.md#mapper) - [Maybe](internal_.md#maybe) -- [Pm](internal_.md#pm) - [SerializedEither](internal_.md#serializedeither) - [SerializedJust](internal_.md#serializedjust) - [SerializedLeft](internal_.md#serializedleft) @@ -59,7 +64,7 @@ ___ ### Just -• **Just**: ``1`` +• **Just**: ``"Just"`` #### Defined in @@ -69,7 +74,7 @@ ___ ### Left -• **Left**: ``0`` +• **Left**: ``"Left"`` #### Defined in @@ -79,7 +84,7 @@ ___ ### None -• **None**: ``0`` +• **None**: ``"None"`` #### Defined in @@ -89,7 +94,7 @@ ___ ### Right -• **Right**: ``1`` +• **Right**: ``"Right"`` #### Defined in @@ -110,29 +115,13 @@ dist/either.d.ts:4 #### Defined in -dist/either.d.ts:75 - -___ - -### Maybe - -Ƭ **Maybe**\<`T`\>: [`Just`](../classes/internal_.Just.md)\<`T`\> \| [`None`](../classes/internal_.None.md)\<`T`\> - -#### Type parameters - -| Name | -| :------ | -| `T` | - -#### Defined in - -dist/maybe.d.ts:66 +dist/either.d.ts:115 ___ -### Pm +### Mapper -Ƭ **Pm**\<`A`, `B`, `P`\>: (`value`: `A`, ...`parameters`: `P`) => `B` +Ƭ **Mapper**\<`A`, `B`, `P`\>: (`value`: `A`, ...`parameters`: `P`) => `B` #### Type parameters @@ -166,6 +155,22 @@ dist/types.d.ts:10 ___ +### Maybe + +Ƭ **Maybe**\<`T`\>: [`Just`](../classes/internal_.Just.md)\<`T`\> \| [`None`](../classes/internal_.None.md)\<`T`\> + +#### Type parameters + +| Name | +| :------ | +| `T` | + +#### Defined in + +dist/maybe.d.ts:70 + +___ + ### SerializedEither Ƭ **SerializedEither**\<`L`, `R`\>: [`SerializedRight`](internal_.md#serializedright)\<`R`\> \| [`SerializedLeft`](internal_.md#serializedleft)\<`L`\> @@ -179,7 +184,7 @@ ___ #### Defined in -dist/either.d.ts:76 +dist/either.d.ts:116 ___ @@ -195,7 +200,7 @@ ___ #### Defined in -dist/maybe.d.ts:38 +dist/maybe.d.ts:42 ___ @@ -211,7 +216,7 @@ ___ #### Defined in -dist/either.d.ts:43 +dist/either.d.ts:69 ___ @@ -227,7 +232,7 @@ ___ #### Defined in -dist/maybe.d.ts:67 +dist/maybe.d.ts:71 ___ @@ -244,7 +249,7 @@ ___ #### Defined in -dist/maybe.d.ts:52 +dist/maybe.d.ts:56 ___ @@ -260,7 +265,7 @@ ___ #### Defined in -dist/either.d.ts:59 +dist/either.d.ts:92 ## Variables diff --git a/package.json b/package.json index 42fbf69..1b79e55 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "monads-io", - "version": "3.0.1", - "description": "🚀 Efficient Monads for JS: Maybe (Option) and Either (Result)", + "version": "4.0.0", + "description": "🚀 Efficient Monads for JS: Maybe (Option) and Either (Result), Identity", "scripts": { "test": "jest", "build:dist": "rimraf dist && rollup -c", @@ -35,6 +35,11 @@ "import": "./dist/maybe.exports.mjs", "types": "./dist/maybe.exports.d.ts" }, + "./identity": { + "require": "./dist/identity.exports.js", + "import": "./dist/identity.exports.mjs", + "types": "./dist/identity.exports.d.ts" + }, "./types": { "types": "./dist/types.d.ts" } diff --git a/rollup.config.mjs b/rollup.config.mjs index 123d881..72ff0ea 100644 --- a/rollup.config.mjs +++ b/rollup.config.mjs @@ -9,9 +9,7 @@ import prettierConfig from "./.prettierrc.json" assert { type: "json" }; /** @type {import('rollup').RollupOptions} */ const config = { - input: [ - ...glob.sync("./src/{index,runtime,maybe.exports,either.exports}.ts") - ], + input: [...glob.sync("./src/{index,runtime,*.exports}.ts")], external: [ ...builtinModules, ...Object.keys({ diff --git a/src/__tests__/either.test.ts b/src/__tests__/either.test.ts index 2615853..48587be 100644 --- a/src/__tests__/either.test.ts +++ b/src/__tests__/either.test.ts @@ -248,11 +248,6 @@ describe("Either", () => { expect(either).toEqual($right); }); - test("any", () => { - const either = $left.mapLeft(() => 10); - expect(either.any()).toBe(10); - }); - test("asyncApply", async () => { expect(await $right.asyncApply(right((a: number) => a + 1))).toEqual( right(11) @@ -282,4 +277,15 @@ describe("Either", () => { ); } }); + + test("pipe", () => { + expect($left.pipe(() => 10)).toBe(10); + }); + + test("value/any", () => { + expect($left.value()).toBe($left.getLeft()); + expect($right.value()).toBe($right.getRight()); + + expect(left(10).any()).toBe(10); + }); }); diff --git a/src/__tests__/identity.test.ts b/src/__tests__/identity.test.ts new file mode 100644 index 0000000..4cbc117 --- /dev/null +++ b/src/__tests__/identity.test.ts @@ -0,0 +1,97 @@ +import { InvalidStateError } from "../errors"; +import { chain, from, isIdentity, merge } from "../identity"; + +describe("Identity", () => { + const $value = from(10); + + test("map", () => { + expect($value.map((value) => value + 1)).toEqual(from(11)); + }); + + test("chain", () => { + expect($value.chain((value) => from(value + 1))).toEqual(from(11)); + }); + + test("join", () => { + expect(from(from(10)).join()).toEqual(from(10)); + }); + + test("await", async () => { + expect(await from(Promise.resolve(10)).await()).toEqual(from(10)); + }); + + test("merge", async () => { + expect(merge([$value, $value])).toEqual(from([10, 10])); + }); + + test("unwrap", () => { + expect($value.unwrap()).toBe(10); + }); + + test("apply", () => { + expect($value.apply(from((a: number) => a + 1))).toEqual(from(11)); + expect(from((a: number) => a + 1).apply(from(10))).toEqual(from(11)); + + expect(() => + $value.apply(from<(a: number) => number>(undefined as any)) + ).toThrowError( + new InvalidStateError(InvalidStateError.Messages.APPLY_SHOULD_BE_FUNCTION) + ); + }); + + test("meta", () => { + expect($value[Symbol.toStringTag]).toBe("Identity"); + expect($value.name).toBe("Identity"); + expect(isIdentity($value)).toBe(true); + expect(isIdentity({ ...$value })).toBe(false); + }); + + test("unwrap", () => { + expect($value.unwrap()).toBe(10); + expect($value.unwrapOr(11)).toBe(10); + }); + + test("tap", () => { + const callback = jest.fn(); + + expect($value.tap(callback)).toEqual($value); + expect(callback).toBeCalledTimes(1); + }); + + test("asyncChain", async () => { + expect(await $value.asyncChain(() => from(11))).toEqual(from(11)); + }); + + test("#chain", async () => { + const promise = Promise.resolve($value).then( + chain((value: number) => from(value + 1)) + ); + + expect(await promise).toEqual(from(11)); + }); + + test("asyncApply", async () => { + expect(await $value.asyncApply(from((a: number) => a + 1))).toEqual( + from(11) + ); + expect(await from((a: number) => a + 1).asyncApply(from(10))).toEqual( + from(11) + ); + + try { + await $value.asyncApply(from<(a: number) => number>(undefined as any)); + + fail("Didn't throw"); + } catch (error) { + expect(error).toEqual( + new InvalidStateError( + InvalidStateError.Messages.APPLY_SHOULD_BE_FUNCTION + ) + ); + } + }); + + test("pipe", () => { + expect($value.pipe(() => 10)).toBe(10); + }); +}); diff --git a/src/__tests__/maybe.test.ts b/src/__tests__/maybe.test.ts index 40b2567..ffcdf36 100644 --- a/src/__tests__/maybe.test.ts +++ b/src/__tests__/maybe.test.ts @@ -216,4 +216,8 @@ describe("Maybe", () => { expect($just.value).toBe(10); expect($none.value).toBe(undefined); }); + + test("pipe", () => { + expect($just.pipe(() => 10)).toBe(10); + }); }); diff --git a/src/convert.ts b/src/convert.ts index 22427d6..1c5e5e7 100644 --- a/src/convert.ts +++ b/src/convert.ts @@ -1,17 +1,17 @@ import { Either, left, right } from "./either"; -import { Maybe, fromNullable } from "./maybe"; +import { Maybe, just, none } from "./maybe"; export function maybeToEither( maybe: Maybe, leftValue: L ): Either { - return maybe.fold(right, () => left(leftValue)); + return maybe.fold(() => left(leftValue), right); } export function eitherRight(either: Either): Maybe { - return fromNullable(either.getRight()); + return either.fold(none, just); } export function eitherLeft(either: Either): Maybe { - return fromNullable(either.getLeft()); + return either.fold(just, none); } diff --git a/src/either.ts b/src/either.ts index 34a0a0e..7b3a9fe 100644 --- a/src/either.ts +++ b/src/either.ts @@ -20,61 +20,65 @@ import type { AnyParameters, AsyncMonad, Alternative, - Container + Container, + Pipe } from "./types"; -const enum EitherType { - Left = 0, - Right = 1 +export const enum EitherType { + Left = "Left", + Right = "Right" } const name = "Either"; -const rightName = "Right"; -const leftName = "Left"; -export function right(right: T): Either { +export function right(right: R): Either { return Right.create(right); } -export function left(value: T): Either { +export function left(value: L): Either { return Left.create(value); } -class EitherConstructor - implements AsyncMonad, Alternative, Container -{ - /* istanbul ignore next */ - getRight(): R | undefined { - return this.fold(noop, identity); +function cast(constructor: EitherConstructor): Either { + if (isEither(constructor)) { + return constructor; } /* istanbul ignore next */ - getLeft(): L | undefined { - return this.fold(identity, noop); - } + throw new InvalidStateError(); +} +class EitherConstructor + implements AsyncMonad, Alternative, Container, Pipe +{ tap

( callback: Mapper, ...parameters: P ): Either { this.map(callback, ...parameters); + return cast(this); + } - return this as unknown as Either; + pipe( + pipe: Mapper, T, P>, + ...parameters: P + ): T { + return bind(pipe, parameters)(cast(this)); } isLeft(): this is Left { - return this instanceof Left; + return isLeft(this); } isRight(): this is Right { - return this instanceof Right; + return isRight(this); } - unwrapOrElse(fallback: (value: L) => X): X | R { + unwrapOrElse(fallback: (value: L) => T): T | R { return this.fold(fallback, identity); } - unwrapOr(value: X): X | R { + unwrapOr(value: T): T | R { return this.unwrapOrElse(() => value); } @@ -201,6 +205,13 @@ class EitherConstructor ); } + /** + * + * @param {Mapper} mapLeft + * @param {Mapper} mapRight + * @return {A|B} + * @throws {InvalidStateError} - {@link InvalidStateError} if Either state is neither Left neither Right, this probably should never happen + */ fold(mapLeft: Mapper, mapRight: Mapper): A | B { if (this.isLeft()) { return mapLeft(this.left); @@ -223,19 +234,27 @@ class EitherConstructor } orLazy(factory: () => Either): Either { - return this.fold(factory, () => this as unknown as Either); + return this.fold(factory, () => cast(this)); } async orAsync( factory: () => MaybePromiseLike> ): Promise> { - return await this.fold(factory, () => this as unknown as Either); + return await this.fold(factory, () => cast(this)); } zip(either: Either): Either> { return this.chain((value) => either.map((right) => [value, right])); } + /** + * @deprecated - **If Left value is Error use {@link throw} instead** + * + * + * @param {string} [message] - Error message, if either is left. By default "Either state is Left" + * @return {R} - Right value of Either, if right + * @throws {UnwrapCustomError} - {@link UnwrapCustomError} is Left with provided {@link message} + */ unwrap(message: string = UnwrapCustomError.Messages.EITHER_IS_LEFT): R { return this.fold(() => UnwrapCustomError.inlineThrow(message), identity); } @@ -244,10 +263,22 @@ class EitherConstructor return this.throw(); } + /** + * + * @return {R} - Right value if current state is Right, + * @throws {L} - {@link L} if current state is Left + */ throw(): R { return this.fold(throwValue, identity); } + /** + * Return value of Either independent if it is Right or Left + * + * @deprecated - probably should not be used, please refactor code or use {@link fold} + * @see {@link fold} + * @return {L|R} + */ value(): L | R { return this.fold(identity, identity); } @@ -271,19 +302,28 @@ class Left extends EitherConstructor implements SerializedLeft { return new Left(left); } - get [Symbol.toStringTag](): typeof leftName { - return leftName; + /** + * @deprecated Should not be used directly, public only for serialization & type check use {@link getLeft} + * @see {@link getLeft} + * + * @type {L} + * @memberof Left + */ + public readonly left: L; + + get [Symbol.toStringTag](): EitherType.Left { + return EitherType.Left; } get name(): typeof name { return name; } - override getRight(): undefined { + getRight(): undefined { return; } - override getLeft(): L { + getLeft(): L { return this.left; } @@ -291,8 +331,9 @@ class Left extends EitherConstructor implements SerializedLeft { return EitherType.Left; } - private constructor(public readonly left: L) { + private constructor(left: L) { super(); + this.left = left; Object.freeze(this); } @@ -318,8 +359,17 @@ class Right return new Right(right); } - get [Symbol.toStringTag](): typeof rightName { - return rightName; + /** + * @deprecated Should not be used directly, public only for serialization & type check use {@link getRight} + * @see {@link getRight} + * + * @type {R} + * @memberof Right + */ + public readonly right: R; + + get [Symbol.toStringTag](): EitherType.Right { + return EitherType.Right; } get name(): typeof name { @@ -330,16 +380,17 @@ class Right return EitherType.Right; } - override getRight(): R { + getRight(): R { return this.right; } - override getLeft(): undefined { + getLeft(): undefined { return; } - private constructor(public readonly right: R) { + private constructor(right: R) { super(); + this.right = right; Object.freeze(this); } @@ -378,7 +429,13 @@ export function chain( map: (value: R, ...parameters: P) => MaybePromiseLike>, ...parameters: P ): (either: Either, ...parameters: P) => Promise>; -export function chain( +export function chain< + L = never, + R = never, + NL = never, + NR = never, + P extends AnyParameters = [] +>( map: (value: R, ...parameters: P) => MaybePromiseLike>, ...parameters: P ): (either: Either) => Promise> { @@ -437,12 +494,13 @@ export function mergeInOne( ] ): Either; -export function mergeInOne(values: Array>): Either; -export function mergeInOne(values: Array>) { +export function mergeInOne(values: Either[]): Either; +export function mergeInOne(values: Either[]) { return mergeInMany(values).mapLeft((errors) => errors[0]); } export const merge = mergeInOne; +export const from = right; export function mergeInMany( values: [Either] @@ -481,19 +539,23 @@ export function mergeInMany( export function mergeInMany( values: Array> ): Either { - const hasLefts = values.some((value) => value.isLeft()); + if (allRights(values)) { + return right(values.map((either) => either.getRight())); + } + const results: unknown[] = []; - for (const either of values) { - if (hasLefts && !either.isLeft()) { - continue; + for (const value of values) { + if (value.isLeft()) { + results.push(value.getLeft()); } - - results.push(either.value()); } - const factory = hasLefts ? left : right; - return factory(results); + return left(results); +} + +function allRights(array: Either[]): array is Right[] { + return !array.some((value) => value.isLeft()); } export function aggregateError( @@ -546,6 +608,7 @@ export function DecorateAsyncLegacy(): LegacyMethodDecorator { function requireDecorationMethod( context: ClassMemberDecoratorContext ): asserts context is ClassMethodDecoratorContext { + /* istanbul ignore next */ if (context.kind !== "method") { throw new DecorationError(); } diff --git a/src/identity.exports.ts b/src/identity.exports.ts new file mode 100644 index 0000000..41e0663 --- /dev/null +++ b/src/identity.exports.ts @@ -0,0 +1 @@ +export * from "./identity"; diff --git a/src/identity.ts b/src/identity.ts new file mode 100644 index 0000000..070e5f8 --- /dev/null +++ b/src/identity.ts @@ -0,0 +1,211 @@ +import { InvalidStateError } from "./errors"; +import { bind, combine, identity, isWrappedFunction } from "./runtime"; +import { + AnyParameters, + AsyncMonad, + Container, + Mapper, + MaybePromiseLike, + Pipe +} from "./types"; + +const name = "Identity"; + +class Identity implements AsyncMonad, Container, Pipe { + static from(value: T): Identity { + return new Identity(value); + } + + get [Symbol.toStringTag](): typeof name { + return name; + } + + get name(): typeof name { + return name; + } + + private constructor(public readonly value: T) {} + + tap

( + callback: Mapper, + ...parameters: P + ): Identity { + this.map(callback, ...parameters); + return this; + } + + pipe( + pipe: Mapper, A, P>, + ...parameters: P + ): A { + return bind(pipe, parameters)(this); + } + + unwrapOrElse(fallback: () => X): X | T { + return this.fold((value) => value || fallback()); + } + + unwrapOr(value: X): X | T { + return this.unwrapOrElse(() => value); + } + + join(this: Identity>): Identity { + return this.chain(identity); + } + + map( + map: Mapper, + ...parameters: P + ): Identity { + return this.fold(combine(bind(map, parameters), from)); + } + + apply( + this: Identity>, + argument: Identity, + ...parameters: P + ): Identity; + apply( + this: Identity, + map: Identity>, + ...parameters: P + ): Identity; + apply( + this: Identity>, + argument: Identity>, + ...parameters: P + ): Identity { + return this.zip(argument).map(([current, argument]): B => { + if (isWrappedFunction(current)) { + return current(argument as A, ...parameters); + } + + if (isWrappedFunction(argument)) { + return argument(current as A, ...parameters); + } + + throw new InvalidStateError( + InvalidStateError.Messages.APPLY_SHOULD_BE_FUNCTION + ); + }); + } + + asyncApply( + this: Identity, P>>, + argument: Identity, + ...parameters: P + ): Promise>; + asyncApply( + this: Identity, + map: Identity, P>>, + ...parameters: P + ): Promise>; + async asyncApply( + this: Identity, P>>, + argument: Identity, P>>, + ...parameters: P + ): Promise> { + return await this.zip(argument) + .map(([current, argument]): B => { + if (isWrappedFunction(current)) { + return current(argument as A, ...parameters); + } + + if (isWrappedFunction(argument)) { + return argument(current as A, ...parameters); + } + + throw new InvalidStateError( + InvalidStateError.Messages.APPLY_SHOULD_BE_FUNCTION + ); + }) + .await(); + } + + chain( + map: Mapper, P>, + ...parameters: P + ): Identity { + return this.fold(bind(map, parameters)); + } + + async asyncChain( + map: Mapper>, P>, + ...parameters: P + ): Promise> { + const result = await this.asyncMap, P>(map, ...parameters); + result.join(); + + return result.join(); + } + + async asyncMap( + map: Mapper, P>, + ...parameters: P + ): Promise> { + return await this.map(map, ...parameters).await(); + } + async await(this: Identity>): Promise> { + return await this.fold>>(async (value) => + from(await value) + ); + } + + fold(mapper: Mapper): A { + return mapper(this.value); + } + + zip(either: Identity): Identity<[T, A]> { + return this.chain((value) => either.map((right) => [value, right])); + } + + unwrap(): T { + return this.value; + } +} + +Object.freeze(Identity); +Object.freeze(Identity.prototype); + +export { type Identity }; + +export const from = Identity.from; + +export const isIdentity = ( + value: unknown | Identity +): value is Identity => value instanceof Identity; + +export function chain( + map: (value: A, ...parameters: P) => MaybePromiseLike>, + ...parameters: P +): (either: Identity) => Promise> { + return (either) => either.asyncChain(bind(map, parameters)); +} + +export function merge(values: [Identity]): Identity<[V1]>; +export function merge( + values: [Identity, Identity] +): Identity<[V1, V2]>; +export function merge( + values: [Identity, Identity, Identity] +): Identity<[V1, V2, V3]>; +export function merge( + values: [Identity, Identity, Identity, Identity] +): Identity<[V1, V2, V3, V4]>; +export function merge( + values: [Identity, Identity, Identity, Identity, Identity] +): Identity<[V1, V2, V3, V4, V5]>; +export function merge( + values: [ + Identity, + Identity, + Identity, + Identity, + Identity, + Identity + ] +): Identity<[V1, V2, V3, V4, V5, V6]>; +export function merge(values: Array>): Identity; +export function merge(values: Array>): Identity { + return from(values.map((value) => value.unwrap())); +} diff --git a/src/index.ts b/src/index.ts index 892e49f..7a13a57 100644 --- a/src/index.ts +++ b/src/index.ts @@ -9,22 +9,28 @@ export const Either = Object.freeze({ merge: either.merge, mergeInOne: either.mergeInOne, mergeInMany: either.mergeInMany, + left: either.left, right: either.right, chain: either.chain, + fromPromise: either.fromPromise, fromTry: either.fromTry, fromTryAsync: either.fromTryAsync, + fromJSON: either.fromJSON, + from: either.from, + fromMaybe: either.fromMaybe, + fromPromiseSettledResult: either.fromPromiseSettledResult, + aggregateError: either.aggregateError, isEither: either.isEither, - fromJSON: either.fromJSON, + isRight: either.isRight, + isLeft: either.isLeft, catch: either.catchSync, catchAsync: either.catchAsync, wrap: either.wrap, - wrapAsync: either.wrapAsync, - fromMaybe: either.fromMaybe, - fromPromiseSettledResult: either.fromPromiseSettledResult + wrapAsync: either.wrapAsync }); import * as maybe from "./maybe.exports"; @@ -37,18 +43,36 @@ export type SerializedMaybe = maybe.SerializedMaybe; export const Maybe = Object.freeze({ just: maybe.just, none: maybe.none, + from: maybe.from, + chain: maybe.chain, + merge: maybe.merge, + fromNullable: maybe.fromNullable, fromJSON: maybe.fromJSON, isMaybe: maybe.isMaybe, fromEitherRight: maybe.fromEitherRight, fromEitherLeft: maybe.fromEitherLeft, + + isJust: maybe.isJust, + isNone: maybe.isNone, + iterator: maybe.iterator, asyncIterator: maybe.asyncIterator, filterMap: maybe.filterMap }); +import * as identity from "./identity.exports"; +export type Identity = identity.Identity; + +export const Identity = Object.freeze({ + from: identity.from, + chain: identity.chain, + isIdentity: identity.isIdentity, + merge: identity.merge +}); + export type { MaybePromise, MaybePromiseLike, diff --git a/src/maybe.ts b/src/maybe.ts index 49330fb..5a1406c 100644 --- a/src/maybe.ts +++ b/src/maybe.ts @@ -12,17 +12,16 @@ import type { Pair, Alternative, Monad, - Container + Container, + Pipe } from "./types"; export const enum MaybeState { - None = 0, - Just = 1 + None = "None", + Just = "Just" } const name = "Maybe"; -const justName = "Just"; -const noneName = "None"; export function none(): Maybe { return None.create(); @@ -34,37 +33,59 @@ export function just(value: T): Maybe { export { just as from }; -class MaybeConstructor implements Monad, Alternative, Container { - unwrapOr(value: X): T | X { +export interface MaybeOperation { + maybe(maybe: Maybe): T; +} + +function cast(constructor: MaybeConstructor): Maybe { + if (isMaybe(constructor)) { + return constructor; + } + + /* istanbul ignore next */ + throw new InvalidStateError(); +} + +class MaybeConstructor + implements Monad, Alternative, Container, Pipe +{ + unwrapOr(value: T): Va | T { return this.unwrapOrElse(() => value); } - unwrapOrElse(value: () => X): T | X { - return this.fold(identity, value); + unwrapOrElse(value: () => T): Va | T { + return this.fold(value, identity); } - isJust(): this is Just { - return this instanceof Just; + isJust(): this is Just { + return isJust(this); } - isNone(): this is None { - return this instanceof None; + isNone(): this is None { + return isNone(this); } join(this: Maybe>): Maybe { return this.chain(identity); } - map( - map: Mapper, - ...parameters: A + pipe( + pipe: Mapper, V, P>, + ...parameters: P + ): V { + return bind(pipe, parameters)(cast(this)); + } + + map( + map: Mapper, + ...parameters: P ): Maybe { return this.chain(combine(bind(map, parameters), just)); } - mapNullable( - map: Mapper, - ...parameters: A + mapNullable( + map: Mapper, + ...parameters: P ): Maybe { return this.chain(combine(bind(map, parameters), fromNullable)); } @@ -99,60 +120,61 @@ class MaybeConstructor implements Monad, Alternative, Container { }); } - filter(filter: (input: T) => input is X): Maybe; - filter(filter: (input: T) => boolean): Maybe; - filter(filter: (input: T) => boolean): Maybe { + filter(filter: (input: Va) => input is T): Maybe; + filter(filter: (input: Va) => boolean): Maybe; + filter(filter: (input: Va) => boolean): Maybe { return this.chain((value) => (filter(value) ? just(value) : none())); } - chain( - map: Mapper, A>, - ...parameters: A + chain( + map: Mapper, P>, + ...parameters: P ): Maybe { - return this.fold>(bind(map, parameters), none); + return this.fold>(none, bind(map, parameters)); } - default(value: T): Maybe { + default(value: Va): Maybe { return this.or(just(value)); } - or(x: Maybe): Maybe { + or(x: Maybe): Maybe { return this.orLazy(() => x); } - orLazy(factory: () => Maybe): Maybe { - return this.fold(() => this as unknown as Maybe, factory); + orLazy(factory: () => Maybe): Maybe { + return this.fold(factory, () => cast(this)); } - async orAsync(factory: () => MaybePromiseLike>): Promise> { - return await this.fold(() => this as unknown as Maybe, factory); + async orAsync( + factory: () => MaybePromiseLike> + ): Promise> { + return await this.fold(factory, () => cast(this)); } - zip(maybe: Maybe): Maybe> { + zip(maybe: Maybe): Maybe> { return this.chain((value) => maybe.map((right) => [value, right])); } tap

( - callback: Mapper, + callback: Mapper, ...parameters: P - ): Maybe { + ): Maybe { this.map(callback, ...parameters); - - return this as unknown as Maybe; + return cast(this); } - flatMap( - map: Mapper, + flatMap( + map: Mapper, ...parameters: P - ): V | undefined { - return this.fold(bind(map, parameters), noop); + ): T | undefined { + return this.fold(noop, bind(map, parameters)); } - unwrap(message: string = UnwrapCustomError.Messages.MAYBE_IS_NONE): T { - return this.fold(identity, () => UnwrapCustomError.inlineThrow(message)); + unwrap(message: string = UnwrapCustomError.Messages.MAYBE_IS_NONE): Va { + return this.fold(() => UnwrapCustomError.inlineThrow(message), identity); } - fold(mapJust: Mapper, mapNone: Mapper): A | B { + fold(mapNone: Mapper, mapJust: Mapper): A | B { if (this.isJust()) { return mapJust(this.value); } @@ -165,25 +187,24 @@ class MaybeConstructor implements Monad, Alternative, Container { throw new InvalidStateError(); } - async asyncChain( - map: Mapper>, P>, + async asyncChain( + map: Mapper>, P>, ...parameters: P - ): Promise> { + ): Promise> { const result = await this.map(map, ...parameters).await(); return result.join(); } - async asyncMap( - map: Mapper, P>, + async asyncMap( + map: Mapper, P>, ...parameters: P - ): Promise> { + ): Promise> { return await this.map(map, ...parameters).await(); } - async await(this: Maybe>): Promise> { - return await this.fold>>( - async (value) => just(await value), - none + async await(this: Maybe>): Promise> { + return await this.fold>>(none, async (value) => + just(await value) ); } @@ -234,8 +255,8 @@ class Just extends MaybeConstructor implements SerializedJust { return new Just(value); } - get [Symbol.toStringTag](): typeof justName { - return justName; + get [Symbol.toStringTag](): MaybeState.Just { + return MaybeState.Just; } get name(): typeof name { @@ -271,8 +292,8 @@ class None extends MaybeConstructor implements SerializedNone { return undefined; } - get [Symbol.toStringTag](): typeof noneName { - return noneName; + get [Symbol.toStringTag](): MaybeState.None { + return MaybeState.None; } get name(): typeof name { @@ -346,19 +367,11 @@ export function merge( ): Maybe<[V1, V2, V3, V4, V5, V6]>; export function merge(values: Array>): Maybe; export function merge(values: Array>): Maybe { - const array: unknown[] = []; - - for (const value of values) { - if (value.isJust()) { - value.tap((value) => array.push(value)); - - continue; - } - + if (values.some((maybe) => maybe.isNone())) { return none(); } - return just(array); + return just([...filterMap(values, identity)]); } export function fromNullable(value: Nullable): Maybe { @@ -385,10 +398,10 @@ export async function* asyncIterator( } } -export function* filterMap( - iterable: Iterable, - filterMap: (value: T, index: number) => Maybe -): Generator { +export function* filterMap( + iterable: Iterable, + filterMap: (value: A, index: number) => Maybe +): Generator { let index = 0; for (const value of iterable) { const processed = filterMap(value, index++); diff --git a/src/types.ts b/src/types.ts index 5e4edfb..31cf32f 100644 --- a/src/types.ts +++ b/src/types.ts @@ -64,7 +64,14 @@ export interface AsyncMonad extends Monad { await(this: AsyncMonad>): Promise>; } -export interface Container { - unwrap(): T; - unwrapOr(value: X): X | T; +export interface Container { + unwrap(): A; + unwrapOr(value: T): T | A; +} + +export interface Pipe { + pipe( + callback: Mapper, + ...parameters: P + ): T; }