UNPKG

@black-flag/checks

Version:

A collection of general purpose check functions for yargs and Black Flag

70 lines (69 loc) 2.8 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.checkArrayNoConflicts = checkArrayNoConflicts; exports.checkArrayNotEmpty = checkArrayNotEmpty; exports.checkArrayUnique = checkArrayUnique; exports.checkIsNotNegative = checkIsNotNegative; exports.checkIsNotNil = checkIsNotNil; require("core-js/modules/es.iterator.constructor.js"); require("core-js/modules/es.iterator.every.js"); require("core-js/modules/es.set.difference.v2.js"); require("core-js/modules/es.set.intersection.v2.js"); require("core-js/modules/es.set.is-disjoint-from.v2.js"); require("core-js/modules/es.set.is-subset-of.v2.js"); require("core-js/modules/es.set.is-superset-of.v2.js"); require("core-js/modules/es.set.symmetric-difference.v2.js"); require("core-js/modules/es.set.union.v2.js"); var _error = require("./error.js"); exports.BfcErrorMessage = _error.BfcErrorMessage; function checkIsNotNegative(argName) { return function (currentArg) { return typeof currentArg === 'number' && currentArg >= 0 || _error.BfcErrorMessage.OptionMustBeNonNegative(argName); }; } function checkIsNotNil(argName) { return function (currentArg) { return !!currentArg || _error.BfcErrorMessage.OptionMustNotBeFalsy(argName); }; } function checkArrayNotEmpty(argName, adjective = 'non-empty') { return function (currentArg) { if (!Array.isArray(currentArg)) { return _error.BfcErrorMessage.BadType(argName, 'array', typeof currentArg); } const satisfies = currentArg.every(subArg => typeof subArg !== 'string' && subArg !== null && subArg !== undefined || typeof subArg === 'string' && subArg.length > 0); return currentArg.length > 0 && satisfies || _error.BfcErrorMessage.OptionRequiresMinArgs(argName, adjective); }; } function checkArrayNoConflicts(argName, conflicts) { return function (currentArg) { if (!Array.isArray(currentArg)) { return _error.BfcErrorMessage.BadType(argName, 'array', typeof currentArg); } let conflictingTuple = []; return conflicts.every(tuple => { let includesOne = false; return tuple.every(element => { if (currentArg.includes(element)) { if (includesOne) { conflictingTuple = tuple; return false; } includesOne = true; } return true; }); }) || _error.BfcErrorMessage.OptionRequiresNoConflicts(argName, conflictingTuple); }; } function checkArrayUnique(argName) { return function (currentArg) { if (!Array.isArray(currentArg)) { return _error.BfcErrorMessage.BadType(argName, 'array', typeof currentArg); } const satisfies_ = Array.from(new Set(currentArg)).length === currentArg.length; return satisfies_ || _error.BfcErrorMessage.OptionRequiresUniqueArgs(argName); }; }