@jungle-commerce/typesense-react
Version:
React hooks and components for building search interfaces with Typesense
62 lines • 2.08 kB
TypeScript
/**
* @fileoverview Schema field validation utilities
*/
import type { CollectionSchema } from 'typesense/lib/Typesense/Collection';
import { type FieldPattern } from './schemaPatterns';
/**
* Field capabilities that can be validated
*/
export interface FieldCapabilities {
/** Field must be facetable */
facetable?: boolean;
/** Field must be sortable */
sortable?: boolean;
/** Field must be indexed (searchable) */
indexed?: boolean;
/** Field must be one of these types */
types?: string[];
}
/**
* Validated field result
*/
export interface ValidatedField {
/** Field definition from schema */
field: any;
/** Whether field passed all validations */
isValid: boolean;
/** Validation errors if any */
errors: string[];
}
/**
* Check if a field has the required capabilities
*/
export declare function validateFieldCapabilities(field: any, capabilities: FieldCapabilities): ValidatedField;
/**
* Find fields matching patterns with capability validation
*/
export declare function findFieldsWithCapabilities(schema: CollectionSchema | null, patterns: FieldPattern[], capabilities?: FieldCapabilities): ValidatedField[];
/**
* Get first valid field matching patterns with required capabilities
*/
export declare function getFirstValidField(schema: CollectionSchema | null, patterns: FieldPattern[], options?: {
sortable?: boolean;
indexed?: boolean;
types?: string[];
}): any | null;
/**
* Get all valid fields matching patterns with required capabilities
*/
export declare function getValidFields(schema: CollectionSchema | null, patterns: FieldPattern[], capabilities?: FieldCapabilities): any[];
/**
* Validate if a field can be used for sorting
*/
export declare function isValidSortField(field: any): boolean;
/**
* Validate if a field can be used for faceting
*/
export declare function isValidFacetField(field: any): boolean;
/**
* Validate if a field can be searched
*/
export declare function isValidSearchField(field: any): boolean;
//# sourceMappingURL=schemaValidation.d.ts.map