ts-flex-query
Version:
Flexible and type-safe data queries
27 lines • 1.17 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.FlatMapExpression = void 0;
const lodash_1 = require("lodash");
const evaluate_expression_1 = require("../helpers/evaluate-expression");
const evaluation_context_utils_1 = require("../helpers/evaluation-context-utils");
class FlatMapExpression {
constructor(input, variableSymbol, body) {
this.input = input;
this.variableSymbol = variableSymbol;
this.body = body;
this.dataType = body.dataType;
}
evaluate(context) {
const inputValue = (0, evaluate_expression_1.evaluateExpression)(this.input, context);
const elementsResult = Array.isArray(inputValue)
? inputValue.map((element) => this.evaluateInnerArray((0, evaluation_context_utils_1.addVariable)(context, this.variableSymbol, element)))
: [];
return (0, lodash_1.flatten)(elementsResult);
}
evaluateInnerArray(context) {
const result = (0, evaluate_expression_1.evaluateExpression)(this.body, context);
return result;
}
}
exports.FlatMapExpression = FlatMapExpression;
//# sourceMappingURL=flat-map.js.map