UNPKG

@firecms/core

Version:

Awesome Firebase/Firestore-based headless open-source CMS

27 lines (26 loc) 1.4 kB
import { CMSType, ResolvedArrayProperty, ResolvedMapProperty, ResolvedProperties, ResolvedProperty } from "../types"; import * as yup from "yup"; import { AnySchema, ObjectSchema } from "yup"; declare module "yup" { interface ArraySchema<TIn extends any[] | null | undefined, TContext, TDefault = undefined, TFlags extends yup.Flags = ""> { uniqueInArray(mapper: (a: any) => any, message: string): ArraySchema<TIn, TContext, TDefault, TFlags>; } } export type CustomFieldValidator = (props: { name: string; value: any; property: ResolvedProperty; entityId?: string; parentProperty?: ResolvedMapProperty | ResolvedArrayProperty; }) => Promise<boolean>; interface PropertyContext<T extends CMSType> { property: ResolvedProperty<T>; parentProperty?: ResolvedMapProperty | ResolvedArrayProperty; entityId: string; customFieldValidator?: CustomFieldValidator; name?: any; } export declare function getYupEntitySchema<M extends Record<string, any>>(entityId: string, properties: ResolvedProperties<M>, customFieldValidator?: CustomFieldValidator): ObjectSchema<any>; export declare function mapPropertyToYup<T extends CMSType>(propertyContext: PropertyContext<T>): AnySchema<unknown>; export declare function getYupMapObjectSchema({ property, entityId, customFieldValidator, name }: PropertyContext<Record<string, any>>): ObjectSchema<any>; export {};