/** * Array or element of an array */ export type MaybeArray = T | T[]; /** * convert to single value object */ export function objectOfMaybeArray( o: Record>, keys: string[] | null = null, picker = firstOfMaybeArray, ): Record { if (keys === null) { return Object.fromEntries(Object.entries(o).map(([k, v]) => [k, picker(v)])); } return Object.fromEntries(keys.map((v) => [v, picker(v)])) as any; } export function firstOfMaybeArray(v: MaybeArray): T { if (Array.isArray(v)) { return v[0]; } return v; } export function lastOfMaybeArray(v: MaybeArray): T { if (Array.isArray(v)) { return v[v.length - 1]; } return v; } export function arrayOfMaybeArray(v: MaybeArray | null | undefined): T[] { if (Array.isArray(v)) { return v; } if (v === null || v === undefined) { return []; } return [v]; }