GraphQL SDL to Zod Validation Schema Generator
GraphQL SDL の型定義、クエリ、入力を、Null 許容性を適切に制御したランタイム Zod バリデーションスキーマ(z.object、z.string、z.array)へ自動変換します。
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>;
ゼロナレッジ・完全ローカル実行
すべてのデータ処理、解析、コード生成はお使いのブラウザ内部メモリで完結します。外部サーバーへの送信はゼロです。
超高速・即時リアクティブ演算
最適化されたクライアント側解析パイプラインにより、キーストロークと同時に遅延なくリアルタイムで結果を生成します。
公式仕様準拠・高信頼アーキテクチャ
IETF RFCや公式業界仕様に厳格に準拠し、エッジケースの安全な処理とメモリリークのない堅牢な実行を保証します。