livr
Version:
Lightweight validator supporting Language Independent Validation Rules Specification
27 lines (24 loc) • 786 B
TypeScript
// Type inference for 'variable_object' rule
import type { RuleTypeDef, InferFromSchema, LIVRSchema, Simplify } from '../../../types/inference';
/** Helper type to build discriminated union from schema map */
type BuildVariableObject<
D extends string,
Schemas extends Record<string, LIVRSchema>
> = {
[K in keyof Schemas]: Simplify<
InferFromSchema<Schemas[K]> & { readonly [P in D]: K }
>;
}[keyof Schemas];
declare module '../../../types/inference' {
interface RuleTypeRegistry {
variable_object: RuleTypeDef<
<
D extends string,
Schemas extends Record<string, LIVRSchema>
>(args: readonly [D, Schemas]) => BuildVariableObject<D, Schemas>,
false,
false
>;
variableObject: RuleTypeRegistry['variable_object'];
}
}