UNPKG

ts-flex-query

Version:
32 lines 1.62 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.FilterOperator = void 0; exports.filter = filter; exports.filterDefined = filterDefined; const filter_1 = require("../../expressions/filter"); const variable_1 = require("../../expressions/variable"); const object_value_selector_1 = require("../../helpers/object-value-selector"); const data_type_1 = require("../../types/data-type"); const convenience_1 = require("../convenience"); class FilterOperator { constructor(predicate) { this.predicate = predicate; } instantiate(input) { const variableSymbol = Symbol('vFilter'); const variableType = input.dataType.type === data_type_1.DataTypeType.array ? input.dataType.elementType : { type: data_type_1.DataTypeType.unknown }; const variableExpression = (0, variable_1.variable)(variableType, variableSymbol); return new filter_1.FilterExpression(input, variableSymbol, this.predicate(variableExpression)); } } exports.FilterOperator = FilterOperator; function filter(selector) { return new FilterOperator((input) => (0, object_value_selector_1.createQueryFromObjectValueSelector)(selector).instantiate(input)); } /** Filters the input collection for defined elements (not equal undefined or null). */ function filterDefined() { return filter((0, convenience_1.and)((0, convenience_1.func)('notEqual', (0, convenience_1.noOp)(), (0, convenience_1.value)(undefined)), (0, convenience_1.func)('notEqual', (0, convenience_1.noOp)(), (0, convenience_1.value)(null)))); } //# sourceMappingURL=filter.js.map