UNPKG

validog

Version:

Comprehensive dog breed validation, search, and recommendation library with support for 100+ breeds, fuzzy matching, and advanced filtering by size, temperament, origin, and compatibility

85 lines (81 loc) 3.52 kB
export class NonEmptyStringError extends TypeError { constructor(fieldName: string); readonly name: 'NonEmptyStringError'; readonly fieldName: string; } export function isValidDogBreed(breed: string): boolean; export function getDogBreedOrigin(breed: string): string | null; export function getDogBreedData(breed: string, options?: { fuzzy?: boolean; lang?: string }): DogBreedData | null; export function getDogsByCountry(country: string): DogBreedData[]; export function getDogsBySize(size: string): DogBreedData[]; export function getDogsByTemperament(trait: string): DogBreedData[]; export function getDogsByEnergyLevel(level: string): DogBreedData[]; export function getDogsByTrainability(level: string): DogBreedData[]; export function getDogsByShedding(level: string): DogBreedData[]; export function getDogsByGroomingNeeds(level: string): DogBreedData[]; export function getDogsByCompatibility(key: 'children' | 'otherDogs' | 'cats', value: boolean): DogBreedData[]; export function getDogsByWeightRange(min: number, max: number, unit?: 'lbs' | 'lb' | 'kgs' | 'kg' | 'pounds' | 'pound' | 'kilograms' | 'kilos' | 'kilo'): DogBreedData[]; export function fuzzySearchBreeds(searchTerm: string, maxDistance?: number): DogBreedData[]; export function compareBreeds(breed1: string, breed2: string): BreedComparison; export function getRecommendedBreeds(preferences?: RecommendationPreferences): DogBreedData[]; export interface DogBreedData { name: string; origin: string; size?: string; temperament?: string[]; energyLevel?: string; trainability?: string; shedding?: string; lifespan?: string; groomingNeeds?: string; compatibility?: { children?: boolean; otherDogs?: boolean; cats?: boolean; }; weight?: { lbs?: { min: number; max: number }; kgs?: { min: number; max: number }; }; names?: { [lang: string]: string }; } export interface BreedComparison { breed1: DogBreedData; breed2: DogBreedData; comparison: { size: { breed1: string; breed2: string; match: boolean }; energyLevel: { breed1: string; breed2: string; match: boolean }; trainability: { breed1: string; breed2: string; match: boolean }; shedding: { breed1: string; breed2: string; match: boolean }; lifespan: { breed1: string; breed2: string; match: boolean }; groomingNeeds: { breed1: string; breed2: string; match: boolean }; origin: { breed1: string; breed2: string; match: boolean }; compatibility: { breed1: any; breed2: any; children: { breed1: boolean; breed2: boolean; match: boolean }; otherDogs: { breed1: boolean; breed2: boolean; match: boolean }; cats: { breed1: boolean; breed2: boolean; match: boolean }; }; weight: { breed1: any; breed2: any }; }; } export interface RecommendationPreferences { size?: 'small' | 'medium' | 'large'; energyLevel?: 'low' | 'medium' | 'high'; trainability?: 'low' | 'moderate' | 'high'; shedding?: 'minimal' | 'moderate' | 'heavy'; groomingNeeds?: 'low' | 'moderate' | 'high'; origin?: string; compatibility?: { children?: boolean; otherDogs?: boolean; cats?: boolean; }; weightRange?: { min: number; max: number; unit?: 'lbs' | 'kgs'; }; minLifespan?: number; }