ts-flex-query
Version:
Flexible and type-safe data queries
24 lines • 1.18 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.FlatMapOperator = void 0;
exports.flatMap = flatMap;
const flat_map_1 = require("../../expressions/flat-map");
const variable_1 = require("../../expressions/variable");
const object_value_selector_1 = require("../../helpers/object-value-selector");
const data_type_1 = require("../../types/data-type");
class FlatMapOperator {
constructor(mapper) {
this.mapper = mapper;
}
instantiate(input) {
const variableSymbol = Symbol('vFlatMap');
const variableExpression = (0, variable_1.variable)(input.dataType.type === data_type_1.DataTypeType.array ? input.dataType.elementType : { type: data_type_1.DataTypeType.unknownArray }, variableSymbol);
return new flat_map_1.FlatMapExpression(input, variableSymbol, this.mapper(variableExpression));
}
}
exports.FlatMapOperator = FlatMapOperator;
FlatMapOperator.inputIdentifier = Symbol('inputIdentifier');
function flatMap(selector) {
return new FlatMapOperator((input) => (0, object_value_selector_1.createQueryFromObjectValueSelector)(selector).instantiate(input));
}
//# sourceMappingURL=flat-map.js.map