Graphql To Zod Schema
GraphQL & Zod Toolchain

GraphQL SDL to Zod Validation Schema Generator

Konvertieren Sie GraphQL-SDL-Typen, Queries und Inputs präzise in Laufzeit-Zod-Validierungsschemata (z.object, z.string, z.array) inklusive Nullability-Mapping.

100% clientseitige Privatsphäre
Null Serverübertragung
Voreinstellungen:
Strikte Nullable-Behandlung
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>;
GraphQL-Typen gesamt
9(5 types, 1 inputs)
Schema-Felder
32
28 non-null • 4 nullable
Erstellte Zod-Schemas
v3.x Runtime Schema
Zero Dependencies

Zero-Knowledge Lokale Ausführung

Alle Datenverarbeitungen, Parsen und Generierungen laufen streng im lokalen Browserspeicher ab. Keine externen Server-Uploads.

Sub-Millisekunden AST-Engine

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

Production Ready Export

Clean, optimized output formats ready for immediate deployment.

Technische Referenz & Architektur-Leitfaden

Entwicklerhandbuch: GraphQL SDL zu Zod-Validierungsschema-Generator — Referenz-Leitfaden

Konvertieren Sie GraphQL-SDL-Typen, Queries und Inputs präzise in Laufzeit-Zod-Validierungsschemata (z.object, z.string, z.array) inklusive Nullability-Mapping.

Wichtige Parameter & Steuerelemente

nullabilityModestring

Definiert das Mapping von GraphQL-Nullable-Feldern (ohne Ausrufezeichen) zu Zod: 'nullable' (.nullable()), 'optional' (.optional()) oder 'nullish' (.nullish()).

Standard: "nullable"
scalarMappingobject

Benutzerdefiniertes Mapping von GraphQL-Skalaren (z. B. DateTime, UUID, JSON) auf Zod-Validierungsaufrufe.

Standard: { "DateTime": "z.string().datetime()", "UUID": "z.string().uuid()", "JSON": "z.record(z.any())" }
handleRecursionboolean

Ummantelt rekursive oder zirkuläre Objektreferenzen mit z.lazy(() => Schema), um Laufzeitabstürze durch Zirkelbezüge zu verhindern.

Standard: true
generateInferredTypesboolean

Fügt automatisch abgeleitete TypeScript-Typen mittels z.infer<typeof Schema> für jedes Schema an den Ausgabecode an.

Standard: true

Profi-Tipps & Best Practices

GraphQL-Modelle enthalten häufig

GraphQL-Modelle enthalten häufig zirkuläre Bezüge (z. B. User referenziert Post, Post referenziert User). Kapseln Sie solche Relationen in Zod stets mit z.lazy(() => TargetSchema) und ergänzen Sie explizite TypeScript-Typannotationen.

Generieren Sie für 'input'-Typen

Generieren Sie für 'input'-Typen separate Schemata. Während Output-Typen strikt zwischen null und nicht vorhanden trennen, erlauben Inputs im Payload häufig das Weglassen von Parametern (.optional()).

Nutzen Sie z.coerce.date

Nutzen Sie z.coerce.date(), wenn Sie eingehende ISO-Strings zur Laufzeit direkt in echte JavaScript-Date-Objekte transformieren möchten, oder z.string().datetime() für strikte Formatprüfung.

Häufige Fallstricke & Fehlerbehebung

ReferenceError: Cannot access 'Schema' before initialization bei rekursiven Typen

Top-Level-const-Definitionen können bei zirkulären Abhängigkeiten nicht vor der Initialisierung aufgelöst werden. Aktivieren Sie 'handleRecursion', damit Zod die Referenzen mit z.lazy() auflöst.

Benutzerdefinierte Skalare wie DateTime fallen auf z.unknown() zurück

Hinterlegen Sie das entsprechende Mapping in der Konfiguration 'scalarMapping', z. B. DateTime als z.string().datetime().

Häufig gestellte Fragen (FAQ)

Wie werden GraphQL-Nullable-Felder in Zod transformiert?▼

In GraphQL SDL sind Felder standardmäßig nullable, sofern sie kein Ausrufezeichen (!) tragen. Nicht-nullbare Felder (String!) werden zu z.string(), während reguläre Felder (String) gemäß nullabilityMode zu z.string().nullable() oder z.string().nullish() werden.

Werden GraphQL Enums und Unions unterstützt?▼

Ja. Enum-Definitionen werden in z.enum([...]) konvertiert. Union-Typen (z. B. union SearchResult = User | Post) werden über z.union([UserSchema, PostSchema]) abgebildet.

Kann ich die Zod-Schemata direkt in Apollo Server oder tRPC verwenden?▼

Ja. Die generierten Schemata eignen sich ideal als Validierungsschicht in Resolver-Argumenten, Middleware-Pipelines oder tRPC-Prozeduren zur Validierung an der Netzwerkgrenze.

Wie werden verschachtelte Listen-Typen ([Type!]!) abgebildet?▼

Die Genauigkeit verschachtelter Nullable-Regeln bleibt vollständig erhalten: [String] wird zu z.array(z.string().nullable()).nullable(), während [String!]! zu z.array(z.string()) kompiliert wird.

Verwandte Werkzeuge & Dienstprogramme

Alle Werkzeuge →
GraphQL SDL zu TypeScript Typen & Interfaces KonverterEntwickler

Konvertieren Sie GraphQL Schema Definition Language (SDL) Typen, Inputs und Enums direkt im Browser in saubere, abhängigkeitsfreie TypeScript-Interfaces.

Werkzeug öffnen→
K8S Configmap Secret Generator Entwickler-ReferenzEntwickler

Generieren Sie produktionsreife Kubernetes ConfigMap- und Secret- (Opaque, TLS, docker-registry) YAML-Manifeste mit Base64-Kodierung und Unveränderlichkeit.

Werkzeug öffnen→
Kubernetes HorizontalPodAutoscaler (HPA v2) GeneratorEntwickler

Erstellen Sie autoskalierende HPA v2 YAML-Manifeste mit CPU- und Speicher-Zielauslastung, benutzerdefinierten Metriken und Stabilisierungsrichtlinien für Scale-Up und Scale-Down.

Werkzeug öffnen→
Redis (redis.conf) Konfigurations-Builder & Performance-TunerEntwickler

Erstellen Sie produktionsreife redis.conf-Konfigurationen mit optimierten maxmemory-Richtlinien, RDB/AOF-Persistenz, Netzwerkbindung und robuster ACL-Sicherheit.

Werkzeug öffnen→
PostgreSQL (postgresql.conf) Hardware-Tuning & Builder Entwickler-HandbuchEntwickler

Berechnen und generieren Sie optimierte postgresql.conf-Einstellungen basierend auf Hardwarespezifikationen (shared_buffers, work_mem, effective_cache_size, max_connections).

Werkzeug öffnen→
Tägliche Off-Peak-DatenbanksicherungEntwickler

Erstellen Sie produktionsreife systemd-Timer-Units und zugehörige Oneshot-Services mit OnCalendar-Planung, OnBootSec-Intervallen, Persistent-Ausführung und zufälligen Verzögerungen.

Werkzeug öffnen→