"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
const params_token_factory_1 = require("./params-token-factory");
class PipesConsumer {
constructor() {
this.paramsTokenFactory = new params_token_factory_1.ParamsTokenFactory();
}
async apply(value, { metatype, type, data }, pipes) {
const token = this.paramsTokenFactory.exchangeEnumForString(type);
return this.applyPipes(value, { metatype, type: token, data }, pipes);
}
async applyPipes(value, { metatype, type, data }, transforms) {
return transforms.reduce(async (defferedValue, pipe) => {
const val = await defferedValue;
const result = pipe.transform(val, { metatype, type, data });
return result;
}, Promise.resolve(value));
}
}
exports.PipesConsumer = PipesConsumer;