UNPKG

fortify-schema

Version:

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

58 lines (48 loc) 2.19 kB
import { Interface } from "../schema/mode/interfaces/Interface"; import { ConditionalSyntaxUtils } from "../schema/extensions/components/ConditionalValidation/utils/SyntaxParser"; console.log("🔍 DETAILED DEBUG: Conditional Logic"); console.log("====================================\n"); // Test the syntax parser directly console.log("1. Testing syntax parser..."); const parsedConfig = ConditionalSyntaxUtils.parse("when:role=admin:string[]:string[]?"); console.log("Parsed config:", JSON.stringify(parsedConfig, null, 2)); if (parsedConfig && parsedConfig.conditions) { console.log("Conditions found:", parsedConfig.conditions.length); parsedConfig.conditions.forEach((condition: any, index: number) => { console.log(`Condition ${index}:`, { hasConditionFunction: typeof condition.condition === 'function', schema: condition.schema }); // Test the condition function if (typeof condition.condition === 'function') { console.log(` Testing condition with 'admin':`, condition.condition('admin')); console.log(` Testing condition with 'user':`, condition.condition('user')); } }); } console.log("\n2. Testing schema validation..."); const TestSchema = Interface({ role: "admin|user", permissions: "when:role=admin:string[]:string[]?" }); // Test case that should fail const testData = { role: "user", permissions: ["read"] // This should fail }; console.log("Test data:", testData); const result = TestSchema.safeParse(testData); console.log("Validation result:", result.success); if (!result.success) { console.log("Errors:", result.errors); } else { console.log("❌ This should have failed!"); } console.log("\n3. Manual condition evaluation..."); if (parsedConfig && parsedConfig.conditions && parsedConfig.conditions[0]) { const condition = parsedConfig.conditions[0]; const roleValue = testData.role; const conditionResult = condition.condition(roleValue); console.log(`Condition function(${roleValue}):`, conditionResult); console.log("Expected schema:", conditionResult ? condition.schema : parsedConfig.default); }