@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
JavaScript
;
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;
}