@black-flag/checks
Version:
A collection of general purpose check functions for yargs and Black Flag
70 lines (69 loc) • 2.8 kB
JavaScript
;
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);
};
}