fortify-schema
Version:
TypeScript interface-like schema validation system that's easier to use than Zod
51 lines (41 loc) • 1.07 kB
text/typescript
import { MultiConditionalBuilder } from "./MultiConditionalBuilder";
/**
* Builder for multi-field "then" part
*/
export class MultiConditionalThen {
constructor(
private builder: MultiConditionalBuilder,
private conditions: Record<string, any>
) {}
then(schema: any): MultiConditionalElse {
return new MultiConditionalElse(schema, null);
}
}
/**
* Builder for multi-field "else" part
*/
export class MultiConditionalElse {
constructor(
private thenSchema: any,
private elseSchema: any
) {}
else(schema: any): any {
return {
__multiConditional: true,
then: this.thenSchema,
else: schema
};
}
}
/**
* Custom validator builder
*/
export class CustomValidator {
constructor(private validator: (data: any) => { valid: true } | { error: string }) {}
build(): any {
return {
__customValidator: true,
validator: this.validator
};
}
}