UNPKG

ts-odata-client

Version:
59 lines (58 loc) 2.68 kB
"use strict"; var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) { if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) { if (ar || !(i in from)) { if (!ar) ar = Array.prototype.slice.call(from, 0, i); ar[i] = from[i]; } } return to.concat(ar || Array.prototype.slice.call(from)); }; Object.defineProperty(exports, "__esModule", { value: true }); exports.FilterAccessoryFunctions = void 0; var BooleanPredicateBuilder_1 = require("./BooleanPredicateBuilder"); var Expression_1 = require("./Expression"); /** * Provides additional functionality for the .filter() method on @type {ODataQuery} */ var FilterAccessoryFunctions = /** @class */ (function () { function FilterAccessoryFunctions() { // Ensure the methods are bound to this object; // Even if they become detatched (e.g., destructuring) this.and = this.and.bind(this); this.or = this.or.bind(this); this.not = this.not.bind(this); } FilterAccessoryFunctions.prototype.and = function () { var predicates = []; for (var _i = 0; _i < arguments.length; _i++) { predicates[_i] = arguments[_i]; } return this.combinePredicates.apply(this, __spreadArray(["and" /* ExpressionOperator.And */], predicates, false)); }; FilterAccessoryFunctions.prototype.or = function () { var predicates = []; for (var _i = 0; _i < arguments.length; _i++) { predicates[_i] = arguments[_i]; } return this.combinePredicates.apply(this, __spreadArray(["or" /* ExpressionOperator.Or */], predicates, false)); }; FilterAccessoryFunctions.prototype.not = function (predicate) { return new BooleanPredicateBuilder_1.BooleanPredicateBuilder(new Expression_1.Expression("not" /* ExpressionOperator.Not */, [predicate.expression])); }; FilterAccessoryFunctions.prototype.combinePredicates = function (operator) { var predicates = []; for (var _i = 1; _i < arguments.length; _i++) { predicates[_i - 1] = arguments[_i]; } if (predicates.length === 0) throw new Error("At least one predicate must be provided"); return predicates.reduce(function (acc, predicate, index) { if (index === 0) return predicate; return new BooleanPredicateBuilder_1.BooleanPredicateBuilder(new Expression_1.Expression(operator, [acc.expression, predicate.expression])); }); }; return FilterAccessoryFunctions; }()); exports.FilterAccessoryFunctions = FilterAccessoryFunctions;