@ts-fluentvalidation/core
Version:
Core library of @ts-fluentvalidation providing validations in a fluent syntax.
32 lines • 2.01 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.validateSync = validateSync;
const async_validator_invoked_synchronously_error_1 = require("../errors/async-validator-invoked-synchronously-error");
const utils_1 = require("./utils");
const validate_key_sync_1 = require("./validate-key-sync");
/**
* Validates the given validation context synchronously.
*
* @param validationContext - The validation context to validate.
* @param validations - The validations to apply.
* @param validatorConfig - The configuration to apply.
* @throws {AsyncValidatorInvokedSynchronouslyError} if the validator contains asynchronous validations or conditions but was invoked synchronously.
*/
function validateSync(validationContext, validations, validatorConfig) {
var _a, _b;
const includedProperties = validatorConfig.includeProperties ? (0, utils_1.wrapAsArray)(validatorConfig.includeProperties) : undefined;
const validationEntries = includedProperties ? validations.filter(({ key }) => includedProperties === null || includedProperties === void 0 ? void 0 : includedProperties.includes(key)) : validations;
if (validationEntries
.flatMap(({ validations }) => validations)
.some(validation => validation.metadata.isAsync || validation.metadata.asyncCondition !== undefined)) {
throw new async_validator_invoked_synchronously_error_1.AsyncValidatorInvokedSynchronouslyError();
}
for (const { key, validations, cascadeMode } of validationEntries) {
const keyCascadeMode = (_b = (_a = validatorConfig.propertyCascadeMode) !== null && _a !== void 0 ? _a : cascadeMode) !== null && _b !== void 0 ? _b : 'Continue';
(0, validate_key_sync_1.validateKeySync)(validationContext, key, validations, keyCascadeMode, validatorConfig.throwOnFailures);
if (validationContext.failures.length > 0 && validatorConfig.cascadeMode === 'Stop') {
break;
}
}
}
//# sourceMappingURL=validate-sync.js.map