@backland/schema
Version:
TypeScript schema declaration and validation library with static type inference
54 lines (53 loc) • 2.76 kB
TypeScript
import { FieldAsString, FieldInput, ObjectType, ShortenFinalFieldDefinition } from './ObjectType';
import { FieldDefinitionConfig } from './TObjectConfig';
import { TAnyFieldType } from './fields/FieldType';
import { MetaField } from './fields/MetaFieldField';
import { CommonFieldDefinition } from './fields/_fieldDefinitions';
import { FinalFieldDefinition } from './fields/_parseFields';
export interface ParserHook {
(field: FinalFieldDefinition): FinalFieldDefinition;
}
export declare const _parserHooks: ParserHook[];
export interface RemoveParserHook {
(): ParserHook[];
}
export declare function setParserHook(hook: ParserHook): RemoveParserHook;
export declare function parseObjectField<T extends FieldDefinitionConfig, Options extends ParseFieldOptions>(fieldName: string, definition: T, options: Options): [Options['returnInstance']] extends [true] ? TAnyFieldType : [Options['asString']] extends [true] ? FieldAsString : FinalFieldDefinition;
export declare function parseObjectField<T extends FieldDefinitionConfig>(fieldName: string, definition: T): FinalFieldDefinition;
/**
* @deprecated use the object options instead of true
* @param fieldName
* @param definition
* @param options
*/
export declare function parseObjectField<T extends FieldDefinitionConfig>(fieldName: string, definition: T, options: true): TAnyFieldType;
export declare function parseField(definition: FieldInput): FinalFieldDefinition;
export declare function parseFieldDefinitionConfig<T extends FieldDefinitionConfig, Options extends ParseFieldOptions>(definition: T, options?: Options): [Options['asString']] extends [true] ? FieldAsString | FinalFieldDefinition | ShortenFinalFieldDefinition : FinalFieldDefinition;
export type ParseFieldOptions = {
asString?: boolean;
deep?: {
asString?: boolean;
omitMeta?: boolean;
};
omitMeta?: boolean;
returnInstance?: boolean;
};
type ParseResult = {
definition: {
[key: string]: FinalFieldDefinition;
};
meta?: MetaField['asFinalFieldDef'];
};
export declare function parseObjectDefinition(input: Record<string, any>, options?: Omit<ParseFieldOptions, 'returnInstance'>): ParseResult;
/**
* Object as field['type'] is deprecated
* @param input
*/
export declare function isObjectAsTypeDefinition(input: any): input is CommonFieldDefinition<ObjectType<any>>;
export declare function parseFlattenFieldDefinition(input: any, options?: ParseFieldOptions): FinalFieldDefinition | false;
export declare const CACHED_FIELD_INSTANCE_KEY = "__cachedFieldInstance";
export declare function __getCachedFieldInstance(field: FinalFieldDefinition & {
[K: string]: any;
}): TAnyFieldType;
export declare function deleteCachedFieldInstance<T>(def: T): T;
export {};