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.
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.
justExec
Exécute immédiatement un callback et renvoie sa sortie.
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.
asserts
Lance une erreur si le predicate echoue et affine le type si il passe.
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).
memoPromise
Mémoïsation paresseuse pour des fonctions retournant une valeur ou une promesse.
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.
toRegExp
Normalise une chaîne, un tableau de chaînes ou une RegExp en expression régulière.
mimeType
Map d'extension vers types MIME (clé sans point).
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.
unwrapGroup
Dépaquette toutes les valeurs d'un objet.
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.
createTransformer
Crée un transformateur récursif à partir d'un nom de méthode (toNative, toJSON, méthodes custom).
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.
createFormData
Crée un FormData étendu à partir d'objets/tableaux imbriqués et fournit des helpers pour aplatir/reconstruire des entrées profondes.
override
Définit des overrides nommés (méthodes ou valeurs par défaut) et les applique sur une interface.
Path
Path
Mini-domaine pour les utilitaires de chemin POSIX (résolution, extraction).
Path.isAbsolute
Vérifie si un chemin est absolu.
Path.resolveFrom
Résout une liste de segments à partir d'un origin.
Path.getParentFolderPath
Retourne le dossier parent d'un chemin.
Path.getBaseName
Retourne le dernier segment d'un chemin, avec option d'extension.
Path.getExtensionName
Retourne l'extension d'un chemin, avec le point.
