Graphql To Zod Schema
GraphQL & Zod Toolchain

GraphQL SDL to Zod Validation Schema Generator

Convertissez les types, requêtes et inputs GraphQL SDL en schémas de validation Zod à l'exécution (z.object, z.string, z.array) avec prise en charge avancée de la nullabilité.

Confidentialité 100% côté client
Zéro transmission au serveur
Préréglages :
Gestion stricte de la nullabilité
GraphQL SDL Definition
import { z } from "zod";

// =========================================
// Custom Scalars
// =========================================

export const DateTimeSchema = z.string().datetime();
export type DateTime = z.infer<typeof DateTimeSchema>;

// =========================================
// Enums
// =========================================

export const CurrencySchema = z.enum(["USD", "EUR", "GBP", "JPY"]);
export type Currency = z.infer<typeof CurrencySchema>;

export const OrderStatusSchema = z.enum(["PENDING", "PROCESSING", "SHIPPED", "DELIVERED", "CANCELLED"]);
export type OrderStatus = z.infer<typeof OrderStatusSchema>;

// =========================================
// Object Types
// =========================================

export const UserSchema = z.object({
  id: z.string(),
  email: z.string(),
  fullName: z.string(),
  phoneNumber: z.string().nullish(),
  addresses: z.array(AddressSchema),
  primaryPaymentMethod: PaymentMethodSchema.nullish(),
  createdAt: z.string().datetime(),
});
export type User = z.infer<typeof UserSchema>;

export const AddressSchema = z.object({
  id: z.string(),
  street: z.string(),
  city: z.string(),
  postalCode: z.string(),
  countryCode: z.string(),
  isDefault: z.boolean(),
});
export type Address = z.infer<typeof AddressSchema>;

export const MoneySchema = z.object({
  amount: z.number(),
  currency: CurrencySchema,
});
export type Money = z.infer<typeof MoneySchema>;

export const PaymentMethodSchema = z.object({
  id: z.string(),
  type: z.string(),
  last4: z.string(),
  expMonth: z.number().int(),
  expYear: z.number().int(),
});
export type PaymentMethod = z.infer<typeof PaymentMethodSchema>;

export const OrderSchema = z.object({
  id: z.string(),
  orderNumber: z.string(),
  customer: UserSchema,
  status: OrderStatusSchema,
  total: MoneySchema,
  itemsCount: z.number().int(),
  createdAt: z.string().datetime(),
});
export type Order = z.infer<typeof OrderSchema>;

// =========================================
// Input Object Types
// =========================================

export const CheckoutInputSchema = z.object({
  userId: z.string(),
  shippingAddressId: z.string(),
  paymentMethodId: z.string(),
  notes: z.string().nullish(),
  couponCode: z.string().nullish(),
});
export type CheckoutInput = z.infer<typeof CheckoutInputSchema>;
Total de types GraphQL
9(5 types, 1 inputs)
Champs du schéma
32
28 non-null • 4 nullable
Schémas Zod créés
v3.x Runtime Schema
Zero Dependencies

Exécution Locale Zero-Knowledge

Tous les traitements, analyses et générations s'exécutent strictement dans la mémoire de votre navigateur. Zéro transmission vers un serveur externe.

Moteur Réactif Submilliseconde

All data payloads remain strictly local with zero external server communication.

Production Ready Export

Clean, optimized output formats ready for immediate deployment.

Référence technique et guide d'architecture

Guide Développeur : Générateur de Schémas de Validation Zod depuis GraphQL SDL — Guide de référence

Convertissez les types, requêtes et inputs GraphQL SDL en schémas de validation Zod à l'exécution (z.object, z.string, z.array) avec prise en charge avancée de la nullabilité.

Paramètres clés et contrôles

nullabilityModestring

Définit la correspondance des champs GraphQL nullables (sans point d'exclamation) vers Zod : 'nullable' (.nullable()), 'optional' (.optional()) ou 'nullish' (.nullish()).

Par défaut : "nullable"
scalarMappingobject

Dictionnaire de correspondance des scalaires personnalisés (ex. DateTime, UUID, JSON) vers des expressions de validation Zod.

Par défaut : { "DateTime": "z.string().datetime()", "UUID": "z.string().uuid()", "JSON": "z.record(z.any())" }
handleRecursionboolean

Encapsule les relations circulaires ou auto-référencées dans z.lazy(() => Schema) afin d'éviter les erreurs d'exécution dues aux dépendances cycliques.

Par défaut : true
generateInferredTypesboolean

Génère automatiquement les types TypeScript inférés via z.infer<typeof Schema> pour chaque schéma exporté.

Par défaut : true

Conseils de pro et bonnes practices

Les schémas GraphQL comportent

Les schémas GraphQL comportent fréquemment des relations réciproques (par exemple, User contient Post et Post référence User). Avec Zod, encapsulez impérativement ces champs avec z.lazy(() => TargetSchema) et fournissez une annotation de type explicite.

Générez des schémas distincts pour les

Générez des schémas distincts pour les définitions 'input'. Les mutations permettent couramment l'omission de paramètres (.optional()), contrairement aux objets de retour qui requièrent un contrôle rigoureux du null.

Si votre API reçoit des chaînes ISO

Si votre API reçoit des chaînes ISO 8601 que vous souhaitez manipuler sous forme d'objets Date JavaScript, associez le scalaire DateTime à z.coerce.date() plutôt qu'à z.string().

Pièges courants et dépannage

ReferenceError: Cannot access 'Schema' before initialization sur des types récursifs

Les constantes en JavaScript ne peuvent être résolues avant déclaration en présence de cycles directs. Activez l'option 'handleRecursion' pour différer la résolution grâce à z.lazy().

Les scalaires personnalisés comme DateTime ou JSON produisent z.unknown()

Renseignez le mappage adéquat dans scalarMapping, par exemple en associant DateTime à z.string().datetime() et JSON à z.record(z.any()).

Foire aux questions (FAQ)

Comment les champs nullables GraphQL sont-ils convertis dans Zod ?▼

En SDL GraphQL, les champs sont nullables par défaut sauf s'ils comportent un point d'exclamation (!). Un champ non-nullable (String!) devient z.string(), tandis qu'un champ ordinaire (String) devient z.string().nullable() ou .nullish() selon la valeur de nullabilityMode.

Le générateur prend-il en charge les Enums et les Unions GraphQL ?▼

Oui. Les énumérations sont traduites en z.enum(['A', 'B']) et les types Union (ex. union SearchResult = User | Post) sont générés via z.union([UserSchema, PostSchema]).

Puis-je utiliser les schémas générés dans Apollo Server ou des routes tRPC ?▼

Absolument. Les schémas Zod générés s'intègrent parfaitement dans les résolveurs GraphQL, les Server Actions ou les procédures tRPC pour valider les entrées réseau à l'exécution.

Comment les listes imbriquées ([Type!]!) sont-elles structurées ?▼

Toutes les contraintes de nullabilité sont scrupuleusement respectées : [String] produit z.array(z.string().nullable()).nullable(), alors que [String!]! génère z.array(z.string()).

Outils et utilitaires connexes

Tous les outils →
Guide de développement du convertisseur GraphQL SDL vers types et interfaces TypeScriptDéveloppement

Transformez vos types, inputs et énumérations GraphQL SDL directement en interfaces et types TypeScript propres et sans dépendances.

Ouvrir l'outil→
K8S Configmap Secret Generator Référence DéveloppeurDéveloppement

Utilitaire de développement pour générer des manifestes Kubernetes ConfigMap et Secret avec encodage Base64, stringData, TLS, Docker registry auth et flags de ressources immuables.

Ouvrir l'outil→
Guide Développeur du Générateur Kubernetes HorizontalPodAutoscaler (HPA v2)Développement

Générez des manifestes YAML HPA v2 avec objectifs d'utilisation CPU et mémoire, métriques personnalisées et politiques de stabilisation de mise à l'échelle.

Ouvrir l'outil→
Générateur et Optimiseur de Configuration de Production Redis (redis.conf)Développement

Générez des fichiers de configuration redis.conf taillés pour la production avec gestion fine de maxmemory, persistance RDB/AOF, liaison réseau étanche et authentification ACL.

Ouvrir l'outil→
Guide Développeur : Optimiseur et Générateur Hardware pour PostgreSQL (postgresql.conf)Développement

Calculez et générez des paramètres postgresql.conf optimisés en fonction des spécifications matérielles (shared_buffers, work_mem, effective_cache_size, max_connections).

Ouvrir l'outil→
Guide Développeur du Générateur d'Unités Systemd (.timer et .service) sous LinuxDéveloppement

Créez et structurez des unités de minuterie systemd et des services associés prêts pour la production avec planification OnCalendar, intervalles OnBootSec, exécution Persistent et délais aléatoires.

Ouvrir l'outil→