ts-flex-query
Version:
Flexible and type-safe data queries
27 lines • 1.06 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.FilterExpression = void 0;
const evaluate_expression_1 = require("../helpers/evaluate-expression");
const evaluation_context_utils_1 = require("../helpers/evaluation-context-utils");
class FilterExpression {
get dataType() {
return this.input.dataType;
}
constructor(input, variableSymbol, body) {
this.input = input;
this.variableSymbol = variableSymbol;
this.body = body;
}
evaluate(context) {
const inputResult = (0, evaluate_expression_1.evaluateExpression)(this.input, context);
if (!Array.isArray(inputResult)) {
return [];
}
return inputResult.filter((element) => {
const innerContext = (0, evaluation_context_utils_1.addVariable)(context, this.variableSymbol, element);
return (0, evaluate_expression_1.evaluateExpression)(this.body, innerContext);
});
}
}
exports.FilterExpression = FilterExpression;
//# sourceMappingURL=filter.js.map