/**
 * Returns true if value is a number (excluding NaN), or is a numeric string.
 *
 * NOTE: It treats all Number-coercible strings as numeric (e.g. `'0x123'`, `'123e-1'`),
 * so for number-type values it's better to just use `Number.isFinite()`.
 */
export function isNumeric(value: any): boolean {
  return (
    !isNaN(parseFloat(value)) &&
    isFinite(value) &&
    // Handle `[1]` being serialized and parsed as `1`
    !Array.isArray(value)
  );
}
