@strapi/utils
Version:
Shared utilities for the Strapi packages
80 lines (77 loc) • 1.66 kB
JavaScript
;
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