UNPKG

fortify-schema

Version:

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

125 lines (107 loc) • 4.71 kB
import { Interface } from "../schema/mode/interfaces/Interface"; console.log("šŸš€ REVOLUTIONARY CLEAN SYNTAX TEST"); console.log("==================================\n"); // šŸŽÆ ZERO IMPORTS NEEDED - Just pure, clean syntax! console.log("✨ No Make, no Mod, no complex imports - just pure syntax!"); // 1. Union Types with Pipe Syntax (like TypeScript!) console.log("\n1ļøāƒ£ Union Types with Pipe Syntax"); const StatusSchema = Interface({ status: "active|inactive|pending", // āœ… Clean union syntax! priority: "low|medium|high", // āœ… No Make.union() needed! type: "user|admin|guest" // āœ… Pure TypeScript-like syntax! }); const statusResult = StatusSchema.safeParse({ status: "active", priority: "high", type: "admin" }); console.log("āœ… Union validation:", statusResult.success); if (statusResult.success) { console.log(" Data:", statusResult.data); } // 2. Constant Values with Equals Syntax console.log("\n2ļøāƒ£ Constant Values with Equals Syntax"); const ConfigSchema = Interface({ version: "=1.0", // āœ… Clean constant syntax! environment: "=production", // āœ… No Make.const() needed! debug: "=false", // āœ… Boolean constants! maxUsers: "=1000" // āœ… Number constants! }); const configResult = ConfigSchema.safeParse({ version: 1.0, // āœ… Number to match =1.0 environment: "production", // āœ… String to match =production debug: false, // āœ… Boolean to match =false maxUsers: 1000 // āœ… Number to match =1000 }); console.log("āœ… Constant validation:", configResult.success); if (configResult.success) { console.log(" Config data:", configResult.data); } // 3. Mixed Clean Syntax - The Ultimate Test console.log("\n3ļøāƒ£ Mixed Clean Syntax - The Ultimate Test"); const UltimateSchema = Interface({ // Basic types (already clean) id: "positive", email: "email", name: "string(2,50)", age: "int(18,120)?", // Revolutionary clean syntax role: "user|admin|moderator", // āœ… Union without imports status: "active|inactive", // āœ… Clean unions type: "=premium", // āœ… Constant without imports plan: "=enterprise", // āœ… Clean constants // Arrays and constraints (already clean) tags: "string[](1,10)?", scores: "number(0,100)[]?", // Nested objects (already clean) profile: { bio: "string(,500)?", theme: "light|dark", // āœ… Nested unions! notifications: "=true" // āœ… Nested constants! } }); const ultimateResult = UltimateSchema.safeParse({ id: 1, email: "user@example.com", name: "John Doe", age: 30, role: "admin", status: "active", type: "premium", plan: "enterprise", tags: ["developer", "typescript"], scores: [95, 87, 92], profile: { bio: "Full-stack developer", theme: "dark", notifications: true } }); console.log("āœ… Ultimate validation:", ultimateResult.success); if (ultimateResult.success) { console.log(" Ultimate data keys:", Object.keys(ultimateResult.data)); console.log(" Profile theme:", ultimateResult.data.profile.theme); } // 4. Error Testing - Show clean error messages console.log("\n4ļøāƒ£ Error Testing - Clean Error Messages"); const errorResult = StatusSchema.safeParse({ status: "invalid" as any, // āŒ Invalid union value (bypassing TS for demo) priority: "urgent" as any, // āŒ Invalid union value (bypassing TS for demo) type: "superuser" as any // āŒ Invalid union value (bypassing TS for demo) }); console.log("āŒ Error validation:", errorResult.success); if (!errorResult.success) { console.log(" Clean error messages:"); errorResult.errors.forEach((error, index) => { console.log(` ${index + 1}. ${error}`); }); } console.log("\nšŸŽ‰ REVOLUTIONARY CLEAN SYNTAX COMPLETE!"); console.log("======================================="); console.log("āœ… Union Types: 'active|inactive|pending' (no Make.union!)"); console.log("āœ… Constants: '=admin' (no Make.const!)"); console.log("āœ… Arrays: 'string[](1,10)' (already clean!)"); console.log("āœ… Constraints: 'string(2,50)' (already clean!)"); console.log("āœ… Optional: 'string?' (already clean!)"); console.log("āœ… Nested: Full object nesting support!"); console.log("\nšŸš€ ZERO imports needed - just pure, intuitive syntax!");