UNPKG

fortify-schema

Version:

TypeScript interface-like schema validation system that's easier to use than Zod

74 lines (62 loc) • 2.55 kB
import { Interface } from "../schema/mode/interfaces/Interface"; console.log("šŸŽ‰ FINAL REVOLUTIONARY SYNTAX TEST"); console.log("==================================\n"); // Test the revolutionary *? syntax with TypeScript type checking const UserSchema = Interface({ role: "admin|user|guest", accountType: "free|premium|enterprise", age: "int(13,120)", // šŸš€ Revolutionary *? syntax - Crystal clear! permissions: "when role=admin *? string[] : string[]?", maxProjects: "when accountType=free *? int(1,3) : int(1,)", paymentMethod: "when accountType!=free *? string : string?", accessLevel: "when age>=18 *? string : string?", id: "positive", email: "email", name: "string(2,50)" }); console.log("āœ… Revolutionary *? syntax schema created successfully!"); // Test valid data const validResult = UserSchema.safeParse({ role: "admin", accountType: "premium", age: 25, permissions: ["read", "write", "delete"], maxProjects: 50, paymentMethod: "credit_card", accessLevel: "full", id: 1, email: "admin@example.com", name: "Admin User" }); console.log("āœ… Valid data test:", validResult.success); if (validResult.success && validResult.data) { console.log(" Role:", validResult.data.role); console.log(" Permissions:", validResult.data.permissions); console.log(" Access Level:", validResult.data.accessLevel); } // Test invalid data (should fail runtime validation) const invalidResult = UserSchema.safeParse({ role: "user", // Not admin accountType: "free", age: 25, permissions: ["read"], // āŒ Should fail: non-admin users can't have permissions maxProjects: 2, id: 2, email: "user@example.com", name: "Regular User" }); console.log("āœ… Invalid data test:", invalidResult.success); if (!invalidResult.success) { console.log(" Expected errors:", invalidResult.errors); } console.log("\nšŸŽ‰ REVOLUTIONARY SYNTAX SUMMARY"); console.log("==============================="); console.log("āœ… TypeScript IDE: Catches type errors at compile time"); console.log("āœ… Runtime validation: Validates conditional logic correctly"); console.log("āœ… Crystal clear syntax: 'when condition *? then : else'"); console.log("āœ… No confusion: '*?' avoids conflict with optional '?'"); console.log("āœ… Perfect type inference: Exact types based on conditions"); console.log("āœ… Backward compatibility: Legacy syntax still works"); console.log("\nšŸš€ Your revolutionary *? syntax is working perfectly!"); console.log(" The future of conditional validation is here!");