/**
 * Returns all values of any key (nested or not) with an optional filter
 */
export type RecursiveAllValues<T, Filter = unknown> = T extends object
  ? {
      [P in keyof T]-?: RecursiveAllValues<T[P], Filter>
    }[keyof T]
  : T & Filter
