Skip to content

Either ​

Monade Either pour la gestion d'erreurs fonctionnelle et type-safe. Permet de représenter une valeur qui peut être soit un succès (Right), soit une erreur (Left), évitant ainsi l'utilisation d'exceptions.

Comment faire les imports ? ​

La bibliothèque expose les namespaces DEither et E depuis l'entrée principale ou en import direct (tree-shaking friendly), ce qui permet de ne charger que ce dont vous avez besoin.

typescript
import { DEither, E } from "@duplojs/utils";
import * as DEither from "@duplojs/utils/either";
import * as E from "@duplojs/utils/either";

Guide ​

Une explication complète (concept, info obligatoire, pattern matching, pipelines et variantes) est disponible ici :

Constructeurs Right ​

Construit un Right typé avec une information métier obligatoire (payload optionnel).

result ​

Construit un Right de résultat neutre, ni positif ni négatif, avec une information métier et un payload. Il peut être currifié pour pipe.

success ​

Raccourci pour retourner un succès right("success", value) de manière expressive.

ok ​

Retourne un Right sans valeur (void) taggé avec l'information littérale "ok".

Constructeurs Left ​

left ​

Construit un Left en fournissant l'information métier et éventuellement une valeur.

error ​

Raccourci pour signaler une erreur typée left("error", value).

fail ​

Retourne un Left sans payload taggé "fail" pour les cas d'échec génériques.

Contrôles Right ​

isRight ​

Type guard qui vérifie si une valeur est un Right.

whenIsRight ​

Exécute une fonction uniquement quand l'entrée est Right, sinon relaie la valeur originale.

whenIsRightOtherwise ​

Exécute un callback sur Right (avec valeur unwrap) et un callback sur toutes les autres entrées.

unwrapRight ​

Unwrap le payload d'un Right et renvoie l'entrée inchangée si l'entrée n'est pas Right.

unwrapRightOrThrow ​

Unwrap immédiatement le payload d'un Right et lève une erreur si l'entrée n'est pas Right.

Contrôles Left ​

isLeft ​

Type guard qui détecte un Left.

whenIsLeft ​

Permet d'appliquer une fonction lorsqu'on reçoit un Left puis de continuer le flux.

whenIsLeftOtherwise ​

Exécute un callback sur Left (avec valeur unwrap) et un callback sur toutes les autres entrées.

unwrapLeft ​

Unwrap le payload d'un Left et renvoie l'entrée inchangée si l'entrée n'est pas Left.

unwrapLeftOrThrow ​

Unwrap immédiatement le payload d'un Left et lève une erreur si l'entrée n'est pas Left.

Pipelines orientés Right ​

rightPipe ​

Chaîne des transformations synchrones tant que les résultats restent Right, s'interrompt sur le premier Left.

rightAsyncPipe ​

Version asynchrone acceptant promesses ou Either et s'arrêtant automatiquement sur un Left.

group ​

Agrège plusieurs Either synchrones et renvoie le premier Left ou un objet des valeurs Right.

asyncGroup ​

Version asynchrone de group acceptant promesses et Future.

Autre ​

hasInformation ​

Type guard basé sur l'information littérale pour cibler précisément un cas métier.

whenHasInformation ​

Pattern matching qui déclenche une fonction quand l'information (ou une liste d'infos) correspond.

whenHasInformationOtherwise ​

Exécute le callback correspondant ou un callback otherwise recevant l'entrée brute restante.

whenIsSelected ​

Exécute un callback pour les informations sélectionnées avec true dans un sélecteur exhaustif et relaie les autres entrées inchangées.

whenIsSelectedOtherwise ​

Exécute le callback sélectionné ou un callback otherwise recevant l'entrée brute non sélectionnée.

matchInformation ​

Pattern matching exhaustif par information où chaque cas Either doit être traité.

matchInformationOtherwise ​

Pattern matching non exhaustif par information avec callback de fallback obligatoire.

keepAsRightByInformation ​

Conserve les informations Either correspondantes côté Right et convertit chaque Right non correspondant en Left.

keepAsRightSelection ​

Conserve les informations Either sélectionnées côté Right via un sélecteur exhaustif.

unwrapByInformation ​

Unwrap un Either quand une information (ou l'une de plusieurs informations) correspond, sinon renvoie l'entrée inchangée.

unwrapByInformationOrThrow ​

Unwrap un Either uniquement lorsqu'une information littérale précise correspond, sinon lève une erreur.

unwrapSelection ​

Unwrap les payloads Either sélectionnés par un sélecteur exhaustif d'informations, sinon renvoie l'entrée inchangée.

unwrapSelectionOrThrow ​

Unwrap les payloads Either sélectionnés par un sélecteur exhaustif d'informations, sinon lève une erreur.

forwardAssertsSelection ​

Transmet sans modification les Either sélectionnés par un sélecteur exhaustif d'informations et lève une erreur pour les autres.

expect ​

Helper de typage qui renvoie le même Either en conservant strictement les types Left/Right.

safeCallback ​

Exécute un callback en capturant les exceptions et rejets de promesse dans, ou en résolvant vers, un Left<"safe-callback-error">.

asyncSafeCallback ​

Exécute un callback ou une promesse en capturant les exceptions et rejets dans un Promise<Left<"safe-callback-error">>.

Helpers booléens ​

bool ​

Convertit n'importe quelle valeur en Either booléen (Right si truthy, Left si falsy) tout en conservant le typage.

boolTruthy ​

Force la création d'un Right<"bool"> en marquant explicitement une valeur truthy.

boolFalsy ​

Construit un Left<"bool"> à partir d'une valeur falsy (undefined, null, "", 0, false).

isBoolTruthy ​

Type guard spécialisé pour les boolTruthy.

whenIsBoolTruthy ​

Déclenche une fonction uniquement lorsqu'une valeur (ou le résultat de bool) est truthy.

whenIsBoolTruthyOtherwise ​

Traite les valeurs truthy et toutes les entrées brutes restantes avec deux callbacks explicites.

isBoolFalsy ​

Type guard spécialisé pour les boolFalsy.

whenIsBoolFalsy ​

Déclenche une fonction uniquement lorsqu'une valeur (ou le résultat de bool) est falsy.

whenIsBoolFalsyOtherwise ​

Traite les valeurs falsy et toutes les entrées brutes restantes avec deux callbacks explicites.

Gestion des valeurs nullish ​

nullish ​

Transforme une valeur potentiellement null/undefined en Either, remplie à droite si la valeur existe.

nullishEmpty ​

Construit explicitement un Left<"nullish"> avec une valeur null ou undefined.

nullishFilled ​

Construit un Right<"nullish"> à partir d'une valeur définie.

isNullishEmpty ​

Type guard pour détecter un nullishEmpty.

whenIsNullishEmpty ​

Applique une fonction uniquement pour le cas nullishEmpty.

whenIsNullishEmptyOtherwise ​

Traite les valeurs nullish vides et toutes les entrées brutes restantes avec deux callbacks.

isNullishFilled ​

Type guard pour détecter un nullishFilled.

whenIsNullishFilled ​

Applique une fonction lorsque la valeur nullish est effectivement définie (Right).

whenIsNullishFilledOtherwise ​

Traite les valeurs nullish remplies et toutes les entrées brutes restantes avec deux callbacks.

Gestion des valeurs nullables ​

nullable ​

Encapsule un null possible en Either, ce qui impose de gérer l'absence de valeur.

nullableEmpty ​

Construit un Left<"nullable"> contenant null.

nullableFilled ​

Construit un Right<"nullable"> avec une valeur non nulle.

isNullableEmpty ​

Type guard pour les nullableEmpty.

whenIsNullableEmpty ​

Callback déclenché uniquement lorsque la valeur est null.

whenIsNullableEmptyOtherwise ​

Traite les valeurs nullable vides et toutes les entrées brutes restantes avec deux callbacks.

isNullableFilled ​

Type guard pour les nullableFilled.

whenIsNullableFilled ​

Callback déclenché lorsque la valeur nullable est présente (Right).

whenIsNullableFilledOtherwise ​

Traite les valeurs nullable remplies et toutes les entrées brutes restantes avec deux callbacks.

Gestion des optionnels ​

optional ​

Wrappe une valeur possiblement undefined en Either, utile pour les champs optionnels.

optionalEmpty ​

Construit un Left<"optional"> contenant undefined.

optionalFilled ​

Construit un Right<"optional"> avec une valeur définie.

isOptionalEmpty ​

Type guard pour les optionalEmpty.

whenIsOptionalEmpty ​

Callback déclenché uniquement lorsqu'un optionnel est vide.

whenIsOptionalEmptyOtherwise ​

Traite les valeurs optionnelles vides et toutes les entrées brutes restantes avec deux callbacks.

isOptionalFilled ​

Type guard pour les optionalFilled.

whenIsOptionalFilled ​

Callback déclenché lorsqu'un optionnel contient une valeur.

whenIsOptionalFilledOtherwise ​

Traite les valeurs optionnelles remplies et toutes les entrées brutes restantes avec deux callbacks.

Futures et asynchronisme ​

future ​

Convertit une valeur (ou un Either) en Future, classe dérivée de Promise avec support de Future.all.

futureSuccess ​

Construit un Right<"future"> pour signaler explicitement une résolution réussie.

futureError ​

Construit un Left<"future"> pour représenter une erreur asynchrone standardisée.

Diffusé sous licence MIT.