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.
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
right
Construit un EitherRight typé avec une information métier obligatoire (payload optionnel).
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 EitherLeft 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 EitherRight.
whenIsRight
Exécute une fonction uniquement quand l'entrée est Right, sinon relaie la valeur originale.
Contrôles Left
isLeft
Type guard qui détecte un EitherLeft.
whenIsLeft
Permet d'appliquer une fonction lorsqu'on reçoit un Left puis de continuer le flux.
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, Future 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.
safeCallback
Exécute un callback en capturant les exceptions dans un Left<"callback">.
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.
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.
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.
isNullishFilled
Type guard pour détecter un nullishFilled.
whenIsNullishFilled
Applique une fonction lorsque la valeur nullish est effectivement définie (Right).
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.
isNullableFilled
Type guard pour les nullableFilled.
whenIsNullableFilled
Callback déclenché lorsque la valeur nullable est présente (Right).
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.
isOptionalFilled
Type guard pour les optionalFilled.
whenIsOptionalFilled
Callback déclenché lorsqu'un optionnel contient une valeur.
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 EitherRight<"future"> pour signaler explicitement une résolution réussie.
futureError
Construit un EitherLeft<"future"> pour représenter une erreur asynchrone standardisée.
