packages/libs/common/src/utils/misc.ts (21 lines of code) (raw):

export function isDefined<T>(value: T | undefined | null): value is T { return <T>value !== undefined && <T>value !== null; } function isIterable(target: any): target is Iterable<any> { return !!target && typeof target[Symbol.iterator] === "function"; } /** * Takes a configuration value that can be either an array, a single value or empty and returns an array with all values. * @param value Value to wrap in an array. * @returns Array of all the values. */ export function arrayify<T>(value: T | T[] | undefined): T[] { if (value === undefined) { return []; } switch (typeof value) { case "string": // Need to do this case as String is iterable. return [value]; case "object": if (isIterable(value)) { return [...value]; } break; } return [value]; }