predictype
Version:
PredicType is a library of pre-built and tested predicates for TypeScript, covering various data types and operations.
41 lines (40 loc) • 1.74 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
exports.setArrayMembership = setArrayMembership;
const sets_js_1 = require("../../enums/sets.js");
/**
* Checks membership conditions for multiple elements in a set using the specified operation.
*
* @param source The set to check.
* @param oper The membership operation to perform (e.g. 'contains_all', 'contains_any').
* @param target The array of values to check for membership.
* @returns True if the membership check is valid according to the operator, otherwise false.
*
* @throws {Error} If the operation is not recognized.
*
* @example
* const s = new Set([1, 2, 3]);
* const values = [2, 4];
*
* setArrayMembership(s, 'contains_any', values); // true (contains 2)
* setArrayMembership(s, 'contains_all', values); // false (missing 4)
* setArrayMembership(s, 'excludes_all', [5, 6]); // true (excludes both)
*
* @remarks
* Supported Operators:
* - **CONTAINS_ALL**: Set contains all the given values
* - **CONTAINS_ANY**: Set contains at least one of the given values
* - **EXCLUDES_ALL**: Set does not contain any of the given values
*/
function setArrayMembership(source, oper, target) {
const operators = {
[sets_js_1.SetArrayMembershipEnum.CONTAINS_ALL]: (s, val) => val.every((v) => s.has(v)),
[sets_js_1.SetArrayMembershipEnum.CONTAINS_ANY]: (s, val) => val.some((v) => s.has(v)),
[sets_js_1.SetArrayMembershipEnum.EXCLUDES_ALL]: (s, val) => val.every((v) => !s.has(v)),
};
const enumOper = typeof oper === 'string' ? oper : oper;
const fn = operators[enumOper];
if (!fn)
throw new Error(`Unknown SetArrayMembership operation: ${oper}`);
return fn(source, target);
}
;