UNPKG

veffect

Version:

powerful TypeScript validation library built on the robust foundation of Effect combining exceptional type safety, high performance, and developer experience. Taking inspiration from Effect's functional principles, VEffect delivers a balanced approach tha

86 lines (85 loc) 2.67 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); /** * Example usage of the validation library */ const string_1 = require("./schema/string"); const number_1 = require("./schema/number"); const boolean_1 = require("./schema/boolean"); const object_1 = require("./schema/object"); const array_1 = require("./schema/array"); const optional_1 = require("./schema/optional"); // Define a User schema const UserSchema = (0, object_1.object)({ id: (0, number_1.number)().integer(), name: (0, string_1.string)().minLength(2).maxLength(50), email: (0, string_1.string)().email(), isActive: (0, boolean_1.boolean)(), tags: (0, array_1.array)((0, string_1.string)()), metadata: (0, optional_1.optional)((0, object_1.object)({ lastLogin: (0, string_1.string)(), preferences: (0, object_1.object)({ theme: (0, string_1.string)(), notifications: (0, boolean_1.boolean)() }) })) }); // Example valid data const validUser = { id: 123, name: "John Doe", email: "john@example.com", isActive: true, tags: ["user", "customer"], metadata: { lastLogin: "2023-04-10", preferences: { theme: "dark", notifications: true } } }; // Example invalid data const invalidUser = { id: 456.7, // Not an integer name: "J", // Too short email: "not-an-email", // Invalid email isActive: "yes", // Not a boolean tags: "user", // Not an array metadata: { lastLogin: 12345, // Not a string preferences: { theme: "dark", notifications: "yes" // Not a boolean } } }; // Create a validator from the schema const userValidator = UserSchema.toValidator(); // Validate the valid user console.log("Validating valid user:"); const validResult = userValidator.safeParse(validUser); console.log(validResult); // Validate the invalid user console.log("\nValidating invalid user:"); const invalidResult = userValidator.safeParse(invalidUser); console.log(invalidResult); // Using try/catch with parse for validation console.log("\nUsing try/catch with parse:"); try { const validatedUser = userValidator.parse(validUser); console.log("Valid user:", validatedUser); } catch (error) { console.error("Validation error:", error); } // Using async validation with promises console.log("\nUsing async validation with Promise.resolve:"); userValidator .validateAsync(validUser) .then((validatedUser) => { console.log("Valid user (async):", validatedUser); }) .catch((error) => { console.error("Validation error (async):", error); });