UNPKG

@strapi/utils

Version:

Shared utilities for the Strapi packages

80 lines (77 loc) 1.66 kB
'use strict'; const GROUP_OPERATORS = [ '$and', '$or' ]; const WHERE_OPERATORS = [ '$not', '$in', '$notIn', '$eq', '$eqi', '$ne', '$nei', '$gt', '$gte', '$lt', '$lte', '$null', '$notNull', '$between', '$startsWith', '$endsWith', '$startsWithi', '$endsWithi', '$contains', '$notContains', '$containsi', '$notContainsi', // Experimental, only for internal use '$jsonSupersetOf' ]; const CAST_OPERATORS = [ '$not', '$in', '$notIn', '$eq', '$ne', '$gt', '$gte', '$lt', '$lte', '$between' ]; const ARRAY_OPERATORS = [ '$in', '$notIn', '$between' ]; const OPERATORS = { where: WHERE_OPERATORS, cast: CAST_OPERATORS, group: GROUP_OPERATORS, array: ARRAY_OPERATORS }; // for performance, cache all operators in lowercase const OPERATORS_LOWERCASE = Object.fromEntries(Object.entries(OPERATORS).map(([key, values])=>[ key, values.map((value)=>value.toLowerCase()) ])); const isObjKey = (key, obj)=>{ return key in obj; }; const isOperatorOfType = (type, key, ignoreCase = false)=>{ if (ignoreCase) { return OPERATORS_LOWERCASE[type]?.includes(key.toLowerCase()) ?? false; } if (isObjKey(type, OPERATORS)) { return OPERATORS[type]?.includes(key) ?? false; } return false; }; const isOperator = (key, ignoreCase = false)=>{ return Object.keys(OPERATORS).some((type)=>isOperatorOfType(type, key, ignoreCase)); }; exports.isOperator = isOperator; exports.isOperatorOfType = isOperatorOfType; //# sourceMappingURL=operators.js.map