Generador de Esquemas de Validación Yup desde JSON
Transforme muestras JSON en esquemas de validación de objetos Yup con seguridad de tipos, yup.string(), yup.number(), yup.array() y reglas requeridas.
import * as yup from "yup";
// --- Inferred Nested Sub-Schemas ---
const OrderCustomerSchema = yup.object({
id: yup.number().integer().required(),
fullName: yup.string().required(),
email: yup.string().email().required(),
phone: yup.string().required(),
tier: yup.string().required(),
loyaltyPoints: yup.number().integer().required(),
});
const OrderShippingAddressCoordinatesSchema = yup.object({
latitude: yup.number().required(),
longitude: yup.number().required(),
});
const OrderShippingAddressSchema = yup.object({
street: yup.string().required(),
suite: yup.string().required(),
city: yup.string().required(),
state: yup.string().required(),
postalCode: yup.string().required(),
country: yup.string().required(),
coordinates: OrderShippingAddressCoordinatesSchema,
});
const OrderItemsItemSchema = yup.object({
sku: yup.string().required(),
title: yup.string().required(),
quantity: yup.number().integer().required(),
unitPrice: yup.number().required(),
discount: yup.number().nullable(),
tags: yup.array().of(yup.string().required()).required(),
inStock: yup.boolean().required(),
});
const OrderPaymentSummarySchema = yup.object({
currency: yup.string().required(),
subtotal: yup.number().integer().required(),
tax: yup.number().required(),
shippingFee: yup.number().integer().required(),
grandTotal: yup.number().required(),
transactionRef: yup.string().required(),
status: yup.string().required(),
});
// --- Root Yup Schema Definition ---
orderSchema = yup.object({
orderId: yup.string().uuid().required(),
orderNumber: yup.string().required(),
createdAt: yup.string().datetime().required(),
isFulfilled: yup.boolean().required(),
customer: OrderCustomerSchema,
shippingAddress: OrderShippingAddressSchema,
items: yup.array().of(OrderItemsItemSchema).required(),
paymentSummary: OrderPaymentSummarySchema,
}).required();
// --- Inferred TypeScript Types ---
OrderCustomerType = yup.InferType<typeof OrderCustomerSchema>;
OrderShippingAddressCoordinatesType = yup.InferType<typeof OrderShippingAddressCoordinatesSchema>;
OrderShippingAddressType = yup.InferType<typeof OrderShippingAddressSchema>;
OrderItemsItemType = yup.InferType<typeof OrderItemsItemSchema>;
OrderPaymentSummaryType = yup.InferType<typeof OrderPaymentSummarySchema>;
OrderType = yup.InferType<typeof orderSchema>;Inferencia AST 100% del Lado del Cliente
El análisis de JSON y la síntesis del esquema Yup se ejecutan en el navegador sin transmisión de datos al servidor.
Yup con Tipado Seguro y TypeScript InferType
Genera yup.object(), yup.array().of(), formatos inteligentes y definiciones de tipos TypeScript compatibles con Formik y React Hook Form.
Validación Inteligente y Reglas Nullable
Detecta correos electrónicos, UUID, fechas ISO, URL y restricciones numéricas con reglas requeridas y anulables configurables.