UNPKG

@fmlang/fml-to-schema

Version:

Convert Forms Markup Language (FML) to jsonv-ts (JSON Schema)

15 lines (14 loc) 605 B
import type { TSchema, ObjectSchema, TObject } from 'jsonv-ts'; type Simplify<T> = { [KeyType in keyof T]: T[KeyType]; } & {}; type RecursiveSchemaify<T> = T extends TSchema ? T : T extends Record<string, any> ? TObject<{ [K in keyof T]: RecursiveSchemaify<T[K]>; }, { additionalProperties: false; }> : never; type SchemaifyProperties<T> = { [K in keyof T]: RecursiveSchemaify<T[K]>; }; export declare const dynObject: <DynP extends Record<string, unknown>, const O extends ObjectSchema, P = SchemaifyProperties<DynP>>(properties: DynP, options?: O) => TObject<Simplify<P>, O>; export {};