UNPKG

predictype

Version:

PredicType is a library of pre-built and tested predicates for TypeScript, covering various data types and operations.

32 lines (31 loc) 1.33 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.objectKeyMembership = objectKeyMembership; const objects_js_1 = require("../../enums/objects.js"); /** * Checks if a key is (or is not) in a list of possible keys using the specified operation. * * @param source The object to check. * @param oper The membership operation to perform (e.g. 'key_in', 'key_not_in'). * @param keys The array of possible keys. * @returns True if the membership check is valid according to the operator, otherwise false. * * @throws {Error} If the operation is not recognized or keys is missing. * * @remarks * Supported Operators: * - **IN**: At least one key is present * - **NOT_IN**: No keys are present */ function objectKeyMembership(source, oper, keys) { const allKeys = [...Object.getOwnPropertyNames(source), ...Object.getOwnPropertySymbols(source)]; const operators = { [objects_js_1.ObjectKeyMembershipEnum.IN]: (k) => allKeys.some((key) => k.includes(key)), [objects_js_1.ObjectKeyMembershipEnum.NOT_IN]: (k) => allKeys.every((key) => !k.includes(key)), }; const enumOper = typeof oper === 'string' ? oper : oper; const fn = operators[enumOper]; if (!fn) throw new Error(`Unknown ObjectKeyMembership operation: ${oper}`); return fn(keys); }