INNER CODE UNIT · TypeScript
searchExercises
bryllim/workout-guide · packages/workout-guide/src/index.ts:45
export function searchExercises(query = '', filters: ExerciseSearchFilters = {}) {
const normalizedQuery = normalizeSearchText(query);
const tokens = normalizedQuery ? normalizedQuery.split(' ') : [];
return exercises.filter((exercise) => {
if (!matchesFilter(exercise.equipment, filters.equipment)) return false;
if (!matchesFilter(exercise.primaryMuscle, filters.primaryMuscle)) return false;
if (!matchesFilter(exercise.exerciseType, filters.exerciseType)) return false;
if (filters.isStretch !== undefined && exercise.isStretch !== filters.isStretch) return false;
if (tokens.length === 0) return true;
const searchable = normalizeSearchText([
exercise.name,
exercise.equipment,
exercise.primaryMuscle,
...exercise.secondaryMuscles,
].join(' '));
return tokens.every((token) => searchable.includes(token));