Skip to content

Data Parser

Fonctions pour construire, composer et exécuter des validateurs immuables. DataParser.* ou DP.* décrit la forme attendue des données, renvoie un Either (parse / asyncParse) et produit des erreurs structurées prêtes à être sérialisées.

Comment faire les imports ?

La bibliothèque expose les namespaces DDataParser, DDataParserCoerce et DDataParserExtended 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
// DataParser 
import { DDataParser, DP } from "@duplojs/utils";
import * as DDataParser from "@duplojs/utils/dataParser";
import * as DP from "@duplojs/utils/dataParser";

// DataParserCoerce
import { DDataParserCoerce, DPC } from "@duplojs/utils";
import * as DDataParserCoerce from "@duplojs/utils/dataParserCoerce";
import * as DPC from "@duplojs/utils/dataParserCoerce";

// DataParserExtended
import { DDataParserExtended, DPE } from "@duplojs/utils";
import * as DDataParserExtended from "@duplojs/utils/dataParserExtended";
import * as DPE from "@duplojs/utils/dataParserExtended";

Parsers primitifs

string

Valide les chaînes : checkers min, max, regex, email, url, support de la coercition ("42""42" normalisé).

number

Valide les nombres avec contraintes min, max, int et support de la coercition (Number(value)).

boolean

Valide les booléens ou les convertit depuis des chaînes courantes ("true", "1", etc.).

bigint

Valide les bigint avec checkers min/max dédiés, utile pour les identifiants haute précision.

date

Valide un TheDate, un Date natif ou un timestamp avant conversion vers TheDate.

time

Valide un TheTime avec checkers min, max et support de la coercition.

literal

Impose une valeur exacte ("admin", 42, true, etc.) en sortie.

templateLiteral

Construit un parser à partir d'un pattern TemplateLiteral (ex: order-${number}).

nil

N'accepte que null et permet d'ajouter des checkers spécifiques.

empty

Valide une absence de valeur (undefined) dans un schéma.

unknown

Accepte n'importe quelle valeur tout en conservant la possibilité d'ajouter des checkers/refine.

Structures composées

object

Déclare la structure d'un objet, gère les clés optionnelles, l'inférence statique et les erreurs contextualisées (chemin user.email).

array

Valide des tableaux homogènes, avec checkers min, max, nonEmpty, etc.

tuple

Définit une séquence ordonnée de parsers avec tailles fixes ou variables.

record

Décrit une map clé/valeur avec validation séparée sur les clés et sur les valeurs.

union

Essaie plusieurs parsers dans l'ordre, retourne le premier qui réussit et reporte les erreurs détaillées sinon.

Variants & optionnalité

optional

Autorise undefined tout en conservant la validation de la valeur présente.

nullable

Autorise null avec support natif des checkers additionnels.

lazy

Déclare des schémas récursifs (ex: arbres, catégories imbriquées) grâce à une fonction différée.

Pipelines & logique métier

pipe

Compose plusieurs parsers pour enchaîner coercition, validation, transformation et refinements.

transform

Transforme le résultat d'un parser via une fonction contrôlée (ex: stringURL).

refine

Ajoute des règles personnalisées (async/sync) avec messages et méta-données spécifiques.

recover

Intercepte les erreurs pour retourner une valeur alternative (fallback) ou lancer une logique métier.

Coercition

coerce.*

Espace réservé aux variantes coercitives (coerce.string, coerce.number, coerce.boolean, coerce.date, etc.) lorsque vous devez normaliser les données avant validation stricte.

Override & extensions

Pour modifier le comportement par défaut du DataParser, ajouter vos propres helpers ou construire une librairie/extension au-dessus, consultez le guide Comment override les méthodes du DataParser ?.

Diffusé sous licence MIT.