UNPKG

@thisismanta/pessimist

Version:

This is a Node.js library that helps derive `process.argv` into a first-hand-**TypeScript** value-strict object with very minimal configurations.

45 lines (44 loc) 1.35 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.parseBoolean = parseBoolean; const known = Object.fromEntries('false|f|0|n|no|off'.split('|').map(item => [item, false])); /** * Returns a Boolean derived from the given value. * @param fallbackValue The value to return if the input is undefined or NaN. * @example * parseBoolean(undefined) // false * parseBoolean(undefined, fallback) // fallback * parseBoolean(NaN, fallback) // fallback * parseBoolean(null) // false * parseBoolean('') // false * parseBoolean(0) // false * parseBoolean('0') // false * parseBoolean('') // false * parseBoolean('F') // false * parseBoolean('false') // false * parseBoolean('n') // false * parseBoolean('no') // false * parseBoolean('off') // false * parseBoolean('otherwise') // true */ function parseBoolean(value, fallbackValue = false) { if (value === undefined) { return fallbackValue; } if (value === null || value === '') { return false; } if (typeof value === 'boolean') { return value; } if (typeof value === 'number') { if (isNaN(value)) { return fallbackValue; } return value !== 0; } if (typeof value === 'string') { return known[value.trim().toLowerCase()] ?? true; } return true; }