Skip to content

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).

typescript
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.

Diffusé sous licence MIT.