ts-flex-query
Version:
Flexible and type-safe data queries
26 lines • 1.12 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.MapOperator = void 0;
exports.map = map;
const map_1 = require("../../expressions/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 MapOperator {
constructor(mapper) {
this.mapper = mapper;
}
instantiate(input) {
const variableSymbol = Symbol('vMap');
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 map_1.MapExpression(input, variableSymbol, this.mapper(variableExpression));
}
}
exports.MapOperator = MapOperator;
function map(selector) {
return new MapOperator((input) => (0, object_value_selector_1.createQueryFromObjectValueSelector)(selector).instantiate(input));
}
//# sourceMappingURL=map.js.map