import { CompositeFilterDescriptor, FilterDescriptor, isCompositeFilterDescriptor, State, } from '@servicetitan/data-query'; const getFiltersFlatInner = ( filter?: FilterDescriptor | CompositeFilterDescriptor ): FilterDescriptor[] => { if (!filter) { return []; } else if (isCompositeFilterDescriptor(filter)) { return filter.filters.reduce( (out, item) => [...out, ...getFiltersFlatInner(item)], [] as FilterDescriptor[] ); } return [filter]; }; export const getFiltersFlat = (filter: State['filter']): FilterDescriptor[] => { return getFiltersFlatInner(filter); }; export const getFiltersMap = (filter: State['filter']): Record => { return getFiltersFlatInner(filter).reduce( (out, filter) => { if (typeof filter.field === 'string') { out[filter.field] = filter; } return out; }, {} as Record ); };