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.
34 lines (30 loc) • 1.17 kB
text/typescript
import { ConditionalBuilder } from "./ConditionalBuilder";
import { ConditionalElse } from "./ConditionalElse";
// Type helper to infer field types from schema strings
type InferFieldType<T extends string> =
T extends "string" ? string :
T extends "string?" ? string | undefined :
T extends "number" ? number :
T extends "number?" ? number | undefined :
T extends "boolean" ? boolean :
T extends "boolean?" ? boolean | undefined :
T extends "string[]" ? string[] :
T extends "string[]?" ? string[] | undefined :
T extends "number[]" ? number[] :
T extends "number[]?" ? number[] | undefined :
T extends "boolean[]" ? boolean[] :
T extends "boolean[]?" ? boolean[] | undefined :
T extends `${string}|${string}` ? string :
any;
/**
* Builder for the "then" part of conditional validation with TypeScript inference
*/
export class ConditionalThen {
constructor(
private builder: ConditionalBuilder,
private condition: (value: any) => boolean
) {}
then<T extends string>(schema: T): ConditionalElse<T> {
return new ConditionalElse(this.builder, this.condition, schema);
}
}