export type FilterValue = | string | { operator?: string; value: string; }; export const buildFilterParam = (filters: Record) => { const filterExpressions: string[] = []; for (const [key, filterValue] of Object.entries(filters)) { if (!filterValue) continue; let operator = "=="; let value: string; if (typeof filterValue === "string") { value = filterValue; } else { operator = filterValue.operator || "=="; value = filterValue.value; } if (!value) continue; const encodedValue = encodeURIComponent(value); const needsEqualsPrefix = /^[A-Za-z]/.test(operator); const operatorSegment = needsEqualsPrefix ? `=${operator}` : operator; filterExpressions.push(`${key}${operatorSegment}/${encodedValue}`); } return filterExpressions.length > 0 ? filterExpressions.join(",") : undefined; };