UNPKG

helene

Version:
63 lines 1.87 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.LogicalOperators = void 0; const model_1 = require("./model"); const isBoolean_1 = __importDefault(require("lodash/isBoolean")); const isFunction_1 = __importDefault(require("lodash/isFunction")); /** * Match any of the subqueries */ exports.LogicalOperators = { $or: function (obj, query) { let i; if (!Array.isArray(query)) { throw new Error('$or operator used without an array'); } for (i = 0; i < query.length; i += 1) { if ((0, model_1.match)(obj, query[i])) { return true; } } return false; }, /** * Match all the subqueries * @param obj * @param query */ $and: function (obj, query) { let i; if (!Array.isArray(query)) { throw new Error('$and operator used without an array'); } for (i = 0; i < query.length; i += 1) { if (!(0, model_1.match)(obj, query[i])) { return false; } } return true; }, /** * Match none of the subqueries */ $not: function (obj, query) { return !(0, model_1.match)(obj, query); }, /** * Match if the function returns true */ $where: function (obj, fn) { if (!(0, isFunction_1.default)(fn)) { throw new Error('$where operator used without a function'); } const result = fn.call(obj); if (!(0, isBoolean_1.default)(result)) { throw new Error('$where function must return boolean'); } return result; }, }; //# sourceMappingURL=logical-operators.js.map