UNPKG

fortify-schema

Version:

A modern TypeScript validation library designed around familiar interface syntax and powerful conditional validation. Experience schema validation that feels natural to TypeScript developers while unlocking advanced runtime validation capabilities.

55 lines (42 loc) โ€ข 1.87 kB
/** * Test parser support for special syntax */ import { Interface } from "../schema/mode/interfaces/Interface"; // Test 1: Special character property access console.log("๐Ÿงช Test 1: Special character property access"); const SpecialCharsSchema = Interface({ config: "any?", hasAdminOverride: 'when config["admin-override"].$exists() *? boolean : =false', }); const result1 = SpecialCharsSchema.safeParse({ config: { "admin-override": true }, hasAdminOverride: true, // Should pass since condition is true and expects boolean }); console.log("Result 1:", result1.success ? "โœ… SUCCESS" : `โŒ ${result1.errors.join(", ")}`); // Test 2: Array property access console.log("\n๐Ÿงช Test 2: Array property access"); const ArrayAccessSchema = Interface({ data: "any?", hasFirstItem: 'when data.items[0].$exists() *? boolean : =false', }); const result2 = ArrayAccessSchema.safeParse({ data: { items: [{ id: 1 }] }, hasFirstItem: true, // Should pass since condition is true and expects boolean }); console.log("Result 2:", result2.success ? "โœ… SUCCESS" : `โŒ ${result2.errors.join(", ")}`); // Test 3: Debug parser directly console.log("\n๐Ÿงช Test 3: Direct parser test"); try { const { ConditionalParser } = await import("../schema/mode/interfaces/conditional/parser/ConditionalParser"); const parser = new ConditionalParser(); // Test bracket notation console.log("Testing bracket notation..."); const ast1 = parser.parse('when config["admin-override"].$exists() *? boolean : =false'); console.log("โœ… Bracket notation parsed successfully"); // Test array access console.log("Testing array access..."); const ast2 = parser.parse('when data.items[0].$exists() *? boolean : =false'); console.log("โœ… Array access parsed successfully"); } catch (error) { console.log("โŒ Parser error:", error.message); }