UNPKG

@vulcan-sql/build

Version:

VulcanSQL package for building projects

51 lines 2.4 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.SetConstraints = void 0; const tslib_1 = require("tslib"); const core_1 = require("@vulcan-sql/core"); const inversify_1 = require("inversify"); const lodash_1 = require("lodash"); const middleware_1 = require("./middleware"); let SetConstraints = class SetConstraints extends middleware_1.SchemaParserMiddleware { constructor(validatorLoader) { super(); this.validatorLoader = validatorLoader; } handle(rawSchema, next) { return tslib_1.__awaiter(this, void 0, void 0, function* () { yield next(); const schema = rawSchema; for (const request of schema.request || []) { // load validator and keep args const validatorsWithArgs = yield Promise.all((request.validators || []).map((validator) => tslib_1.__awaiter(this, void 0, void 0, function* () { return ({ validator: this.validatorLoader.getValidator(validator.name), args: validator.args, }); }))); // set constraint by validator and args request.constraints = (0, lodash_1.chain)(validatorsWithArgs) .filter(({ validator }) => !!validator.getConstraints) .flatMap(({ validator, args }) => // eslint-disable-next-line @typescript-eslint/no-non-null-assertion validator.getConstraints(args)) // Group by constraint class (RequiredConstraint, MinValueConstraint ....) .groupBy((constraint) => constraint.constructor.name) .values() .map((constraints) => { let mergeConstraint = constraints[0]; constraints .slice(1) .forEach((constraint) => (mergeConstraint = mergeConstraint.compose(constraint))); return mergeConstraint; }) .value(); } }); } }; SetConstraints = tslib_1.__decorate([ tslib_1.__param(0, (0, inversify_1.inject)(core_1.TYPES.ValidatorLoader)), tslib_1.__metadata("design:paramtypes", [Object]) ], SetConstraints); exports.SetConstraints = SetConstraints; //# sourceMappingURL=setConstraints.js.map