structured-elements
Version:
A TypeScript package for modelling and validating data
59 lines • 1.97 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.buildPrimitiveValidator = void 0;
const item_1 = require("../../attemptSalvage/item");
const validationResult_1 = require("../validationResult");
const element_1 = require("../../validate/element");
const structure = `item`;
const buildPrimitiveValidator = ({ api, expectation, }) => {
const validator = {
getFailures: (subject, name) => {
return validator.validate(subject, name).failures;
},
getSalvage: (subject, name) => {
return validator.validate(subject, name).salvage;
},
isValid: (subject, name) => {
return validator.validate(subject, name).valid;
},
validate: (subject, name, attemptSalvage = item_1.attemptSalvageItem) => {
const cached = api.privateFunctions.getCachedResult({
expectation,
structure,
subject,
});
if (cached) {
return cached;
}
const failures = (0, element_1.validateElement)({
api,
element: subject,
elementName: name,
expectation,
key: `(subject)`,
subject,
subjectName: name,
});
const salvage = attemptSalvage({
api,
subject,
name,
failures,
});
const result = (0, validationResult_1.buildValidationResult)({
failures,
salvage,
subject,
});
api.privateFunctions.cacheResult({
expectation,
result,
structure,
});
return result;
},
};
return validator;
};
exports.buildPrimitiveValidator = buildPrimitiveValidator;
//# sourceMappingURL=primitive.js.map