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.