fortify-schema
Version:
TypeScript interface-like schema validation system that's easier to use than Zod
74 lines (62 loc) ⢠2.55 kB
text/typescript
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!");