@jungle-commerce/typesense-react
Version:
React hooks and components for building search interfaces with Typesense
55 lines • 2.15 kB
TypeScript
import { FacetConfig } from '../types';
import { CollectionSchema } from 'typesense/lib/Typesense/Collection';
import { SchemaPatternConfig, FieldPattern } from '../utils/schemaPatterns';
/**
* Options for schema discovery
*/
interface SchemaDiscoveryOptions {
/** Pattern configuration for field discovery */
patterns?: SchemaPatternConfig;
/** Fields to exclude from faceting (deprecated - use patterns.excludePatterns) */
excludeFields?: string[];
/** Maximum number of facets to create */
maxFacets?: number;
/** Whether to include numeric fields as facets */
includeNumericFacets?: boolean;
/** Whether to include date fields as facets */
includeDateFacets?: boolean;
/** Custom facet configuration overrides */
facetOverrides?: Record<string, Partial<FacetConfig>>;
/** Callback when schema is loaded */
onSchemaLoad?: (schema: CollectionSchema) => void;
}
/**
* Hook for discovering collection schema and auto-configuring facets
* @param options - Schema discovery options
* @returns Schema and auto-generated facet configurations
*/
export declare function useSchemaDiscovery(options?: SchemaDiscoveryOptions): {
schema: CollectionSchema | null;
facetConfigs: FacetConfig[];
searchableFields: any[];
sortableFields: {
field: any;
label: string;
type: any;
}[];
isLoading: boolean;
error: Error | null;
};
/**
* Helper to determine if a field should be a disjunctive facet
* @param field - Field configuration from schema
* @param patterns - Custom disjunctive patterns (optional)
* @returns True if field should use disjunctive (OR) logic
*/
export declare function shouldBeDisjunctive(field: any, patterns?: FieldPattern[]): boolean;
/**
* Helper to get the default sort field from schema
* @param schema - Collection schema
* @param timestampPatterns - Custom timestamp patterns (optional)
* @returns Default sort field or empty string
*/
export declare function getDefaultSortField(schema: CollectionSchema | null, timestampPatterns?: FieldPattern[]): string;
export {};
//# sourceMappingURL=useSchemaDiscovery.d.ts.map