UNPKG

@vulcan-sql/core

Version:
39 lines 1.69 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.ValidatorLoader = void 0; const tslib_1 = require("tslib"); const inversify_1 = require("inversify"); const types_1 = require("../../containers/types"); const utils_1 = require("../utils"); let ValidatorLoader = class ValidatorLoader { constructor(extensions = []) { this.extensions = new Map(); this.loadValidators(extensions); } getValidator(validatorName) { if (!this.extensions.has(validatorName)) // throw error if not found throw new utils_1.ConfigurationError(`The identifier name "${validatorName}" of validator is not defined in built-in validators or extensions configuration`); return this.extensions.get(validatorName); } getValidators() { return Array.from(this.extensions.values()); } loadValidators(validators) { for (const validator of validators) { const validatorName = validator.getExtensionId(); if (this.extensions.has(validatorName)) { throw new utils_1.ConfigurationError(`The identifier name "${validatorName}" of validator has been defined in other extensions`); } this.extensions.set(validatorName, validator); } } }; ValidatorLoader = tslib_1.__decorate([ (0, inversify_1.injectable)(), tslib_1.__param(0, (0, inversify_1.multiInject)(types_1.TYPES.Extension_InputValidator)), tslib_1.__param(0, (0, inversify_1.optional)()), tslib_1.__metadata("design:paramtypes", [Array]) ], ValidatorLoader); exports.ValidatorLoader = ValidatorLoader; //# sourceMappingURL=validatorLoader.js.map