Common
Utilitaires transversaux pour composer des fonctions, gérer les promesses, manipuler des wrappers/kinds et appliquer des conversions runtime partagées par toute la librairie.
Comment faire les imports ?
Toutes les fonctions sont exportées depuis l'entrée principale ou via l'import direct (tree-shaking friendly).
import { pipe, when, clone } from "@duplojs/utils";
import * as DCommon from "@duplojs/utils/common";
import * as C from "@duplojs/utils/common";
import { pipe, when, clone } from "@duplojs/utils/common";Composition et piping
pipe
Compose des fonctions synchrones en chaînant un même input.
pipeCall
Neutralise l'inférence du premier argument d'une fonction dans un pipe.
innerPipe
Prépare un pipe réutilisable qui retourne une fonction à appliquer plus tard.
asyncPipe
Compose des promesses ou des FutureEither de façon séquentielle en renvoyant un Promise.
asyncInnerPipe
Version curried d'asyncPipe qui renvoie une fonction prête à accepter une valeur (sync ou async).
forward
Fonction identité pratique dans un chainage pour passer la valeur telle quelle.
forwardLog
Log la valeur (tap) puis la renvoie pour continuer le flux.
justReturn
Construit une fonction constante qui renvoie toujours la même valeur.
Contrôle conditionnel et prédicats
when
Applique une transformation si le prédicat est vrai (ou si le type guard passe), sinon renvoie l'entrée.
whenNot
Inverse la condition et exécute une fonction uniquement quand le prédicat échoue.
whenElse
Deux branches typées (if/else) qui renvoient des sorties distinctes sans perdre le type d'entrée.
and
Combine plusieurs type guards / prédicats en une intersection.
or
Combine plusieurs prédicats en une union, pratique pour filtrer des unions discriminées.
equal
Compare à une ou plusieurs valeurs littérales avec support des type guards sur les primitives.
isType
Type guard basé sur typeof, Array.isArray, itérables, etc.
instanceOf
Type guard basé sur un ou plusieurs constructeurs (instanceof typé).
hasKinds
Type guard qui vérifie qu'une valeur possède tous les kinds attendus.
hasSomeKinds
Type guard qui vérifie qu'une valeur possède au moins un des kinds attendus.
truthy
Type guard qui conserve uniquement les valeurs truthy.
falsy
Type guard qui conserve uniquement les valeurs falsy.
Boucles
loop
Boucle contrôlée par callbacks next / exit avec accès au compteur et à la sortie précédente.
asyncLoop
Version asynchrone de loop qui accepte des itérations retournant des promesses.
Promesses
externalPromise
Crée une promesse avec ses méthodes resolve/reject exposées pour être contrôlée de l'extérieur.
promiseObject
Transforme un objet de promesses en promesse d'objet avec des valeurs résolues et typées.
Autres
asyncRetry
Relance une fonction asynchrone jusqu'à ce qu'une condition soit remplie (max retry, délai, log optionnel).
sleep
Pause asynchrone pour attendre un certain temps.
memo
Évalue une fonction une seule fois et réutilise le résultat (memoization lazy).
toJSON
Prépare une valeur pour la sérialisation JSON.
toTransform
Applique récursivement les méthodes toTransform présentes pour obtenir un modèle prêt à être transporté.
toString
Convertit un littéral (number, boolean, bigint, etc.) en template string typée.
stringToMillisecond
Parse des durées ("10s", "2h", "1.5d", etc.) en millisecondes, avec erreurs typées.
stringToBytes
Convertit des tailles ("10mb", "2gb", …) en nombre d'octets.
escapeRegExp
Échappe les caractères spéciaux pour créer une regex depuis une chaîne sûre.
interpolation
Génère des templates typés avec des placeholders {id} et un mapping strict des remplacements.
wrapValue
Enveloppe une valeur dans un conteneur marqué pour l'identifier ou éviter les collisions.
isWrappedValue
Type guard pour vérifier si une valeur est un WrappedValue.
isRuntimeWrappedValueKey
Vérifie si une clé de chaîne correspond au marqueur runtime d'un WrappedValue.
toWrappedValue
Assure qu'une valeur est wrappée (idempotent si déjà enveloppée).
unwrap
Récupère la valeur interne d'un wrapper.
addWrappedProperties
Ajoute dynamiquement des propriétés dérivées à une valeur wrappée.
clone
Clone profond et typé d'une valeur (objets, tableaux, etc.).
simpleClone
Clone léger pour dupliquer rapidement une valeur sans logique avancée.
createEnum
Crée un enum string immuable avec helpers has et toTuple.
globalStore
Store global typé (singleton par clé) avec accès lecture/écriture.
builder
Helper pour créer des builders immutables avec accumulation typée et vérification des méthodes manquantes.
override
Définit des overrides nommés (méthodes ou valeurs par défaut) et les applique sur une interface.
