import type { SingleOrArray } from './type' export const asArray = (val?: SingleOrArray): Array => { if (!val) return [] if (Array.isArray(val)) return val return [val] } type ExtractValueFromSingleOrArray = V extends SingleOrArray ? Value : never export const mapSingleOrArray = , Return>( value: Wrapper, fn: (value: ExtractValueFromSingleOrArray) => Return ): SingleOrArray => { const mapped = asArray>(value as []).map(fn) // We need to return a single or array value based on the input type return Array.isArray(value) ? mapped : mapped[0] }