src/types.ts1008 B · typescript
export type PrimitiveType = 'string' | 'number' | 'boolean';
export type DataType = PrimitiveType | 'object' | 'array';
export interface BaseSchema {
type: DataType;
optional?: boolean;
}
export interface StringSchema extends BaseSchema {
type: 'string';
format?: 'email' | 'url' | 'uuid' | 'date';
pattern?: string;
minLength?: number;
maxLength?: number;
}
export interface NumberSchema extends BaseSchema {
type: 'number';
min?: number;
max?: number;
integer?: boolean;
}
export interface BooleanSchema extends BaseSchema {
type: 'boolean';
}
export interface ObjectSchema extends BaseSchema {
type: 'object';
properties: Record<string, Schema>;
required?: string[];
}
export interface ArraySchema extends BaseSchema {
type: 'array';
items: Schema;
minItems?: number;
maxItems?: number;
}
export type Schema = StringSchema | NumberSchema | BooleanSchema | ObjectSchema | ArraySchema;
export interface ValidationResult {
valid: boolean;
errors: string[];
}