@firecms/core
Version:
Awesome Firebase/Firestore-based headless open-source CMS
27 lines (26 loc) • 1.4 kB
TypeScript
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 {};