UNPKG

fortify-schema

Version:

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

84 lines (77 loc) 2.29 kB
/** * FortifyJS Schema Validation System * * A modular, TypeScript-like schema validation system that's easier to use than Zod. * Completely separate from validators - focused purely on schema definition and validation. * * ## Two Approaches: * * ### 1. Interface-based (Recommended - TypeScript-like) * ```typescript * import { Interface } from "fortify-schema"; * * const UserSchema = Interface({ * id: "number", * email: "email", * name: "string", * age: "number?", // Optional * isActive: "boolean?", // Optional * tags: "string[]?", // Optional array * role: "admin" // Constant value * }); * * const result = UserSchema.safeParse(userData); * ``` * * ### 2. Fluent API (Traditional) * ```typescript * import { Schema } from "fortify-schema"; * * const UserSchema = Schema.object({ * id: Schema.number().int().positive(), * email: Schema.string().email(), * name: Schema.string().min(2).max(50), * age: Schema.number().int().min(0).max(120).optional(), * isActive: Schema.boolean().default(true) * }); * * const result = UserSchema.safeParse(userData); * ``` */ // Interface-based Schema (Recommended) export { Interface, FieldTypes, QuickSchemas, Mod, } from "./schema/mode/interfaces/Interface"; export type { InferType, SchemaInterface, SchemaFieldType, } from "./schema/mode/interfaces/Interface"; // Traditional fluent API Schema export { Schema } from "./schema/mode/general/Schema"; // Base classes for extending export { BaseSchema } from "./schema/mode/general/BaseSchema"; // Individual schema types export { StringSchema } from "./schema/mode/general/StringSchema"; export { NumberSchema } from "./schema/mode/general/NumberSchema"; export { BooleanSchema } from "./schema/mode/general/BooleanSchema"; export { ArraySchema } from "./schema/mode/general/ArraySchema"; export { ObjectSchema } from "./schema/mode/general/ObjectSchema"; // Type definitions export type { SchemaValidationResult, BaseSchemaOptions, StringSchemaOptions, NumberSchemaOptions, BooleanSchemaOptions, ArraySchemaOptions, ObjectSchemaOptions, SchemaType, SchemaDefinition, SchemaConfig, } from "./types/types"; // extensions export * from "./schema/extensions";