INNER CODE UNIT · TypeScript
getExercise
bryllim/workout-guide · packages/workout-guide/src/index.ts:35
export function getExercise(idOrSlug: string) {
return exercisesById.get(idOrSlug) ?? exercisesBySlug.get(idOrSlug) ?? null;
}
function matchesFilter(value: string, filter?: string | readonly string[]) {
if (filter === undefined) return true;
const values = Array.isArray(filter) ? filter : [filter];
return values.some((candidate) => normalizeSearchText(candidate) === normalizeSearchText(value));
}
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;