@vulcan-sql/core
Version:
Core package of VulcanSQL
39 lines • 1.69 kB
JavaScript
;
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