@animo-id/pex
Version:
A Typescript implementation of the v1 and v2 DIF Presentation Exchange specification
103 lines • 8.86 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.InputDescriptorsV2VB = void 0;
const utils_1 = require("../../utils");
const constraintsVB_1 = require("./constraintsVB");
const validationBundler_1 = require("./validationBundler");
class InputDescriptorsV2VB extends validationBundler_1.ValidationBundler {
constructor(parentTag) {
super(parentTag, 'input_descriptor');
this.idMustBeNonEmptyStringMsg = 'input descriptor id must be non-empty string';
this.nameShouldBeNonEmptyStringMsg = 'input descriptor name should be non-empty string';
}
getValidations(inputDescriptors) {
let validations = [];
validations.push({
tag: this.getTag(),
target: inputDescriptors,
predicate: (inDescs) => this.shouldNotHaveSchema(inDescs),
message: 'input descriptor should not have schema property',
}, {
tag: this.getTag(),
target: inputDescriptors,
predicate: (inDescs) => this.shouldHaveUniqueIds(inDescs),
message: 'input descriptor ids must be unique',
}, {
tag: this.getTag(),
target: inputDescriptors,
predicate: (inDescs) => this.shouldHaveUniqueFieldsIds(inDescs),
message: 'fields id must be unique',
});
inputDescriptors.forEach((inputDescriptor, inDescInd) => {
validations = [
...validations,
...this.getValidationFor(inputDescriptor, inDescInd),
...this.constraintsValidations(inputDescriptor, inDescInd),
];
});
return validations;
}
getValidationFor(inputDescriptor, inDescInd) {
return [
{
tag: this.getMyTag(inDescInd),
target: inputDescriptor,
predicate: (inDesc) => utils_1.ObjectValidationUtils.nonEmptyString(inDesc === null || inDesc === void 0 ? void 0 : inDesc.id),
message: this.idMustBeNonEmptyStringMsg,
},
{
tag: this.getMyTag(inDescInd),
target: inputDescriptor,
predicate: (inDesc) => utils_1.ObjectValidationUtils.optionalNonEmptyString(inDesc === null || inDesc === void 0 ? void 0 : inDesc.name),
message: this.nameShouldBeNonEmptyStringMsg,
},
];
}
shouldHaveUniqueFieldsIds(inputDescriptors) {
const nonUniqueInputDescriptorFieldsIds = [];
const uniqueInputDescriptorFieldsIds = new Set();
const tmp = [];
inputDescriptors
.map((e) => { var _a; return (_a = e.constraints) === null || _a === void 0 ? void 0 : _a.fields; })
.forEach((e) => {
if (e) {
tmp.push(...e);
}
});
tmp.forEach((e) => {
if (e.id) {
nonUniqueInputDescriptorFieldsIds.push(e.id);
}
});
nonUniqueInputDescriptorFieldsIds.forEach((id) => uniqueInputDescriptorFieldsIds.add(id));
return nonUniqueInputDescriptorFieldsIds.length === uniqueInputDescriptorFieldsIds.size;
}
shouldHaveUniqueIds(inputDescriptors) {
const nonUniqueInputDescriptorIds = [];
const uniqueInputDescriptorIds = new Set();
inputDescriptors.forEach((e) => nonUniqueInputDescriptorIds.push(e.id));
nonUniqueInputDescriptorIds.forEach((e) => uniqueInputDescriptorIds.add(e));
return nonUniqueInputDescriptorIds.length === uniqueInputDescriptorIds.size;
}
getMyTag(srInd) {
// TODO extract to make it generic
return this.parentTag + '.' + this.myTag + '[' + srInd + ']';
}
constraintsValidations(inputDescriptor, inDescInd) {
if (inputDescriptor.constraints) {
return new constraintsVB_1.ConstraintsVB(this.getMyTag(inDescInd)).getValidations(inputDescriptor.constraints);
}
return [];
}
shouldNotHaveSchema(inputDescriptors) {
let hasSchema = false;
inputDescriptors.forEach((id) => {
if (id['schema']) {
hasSchema = true;
}
});
return !hasSchema;
}
}
exports.InputDescriptorsV2VB = InputDescriptorsV2VB;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXREZXNjcmlwdG9yc1YyVkIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWIvdmFsaWRhdGlvbi9idW5kbGVycy9pbnB1dERlc2NyaXB0b3JzVjJWQi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFFQSx1Q0FBb0Q7QUFHcEQsbURBQWdEO0FBQ2hELDJEQUF3RDtBQUV4RCxNQUFhLG9CQUFxQixTQUFRLHFDQUFzQztJQUk5RSxZQUFZLFNBQWlCO1FBQzNCLEtBQUssQ0FBQyxTQUFTLEVBQUUsa0JBQWtCLENBQUMsQ0FBQztRQUp0Qiw4QkFBeUIsR0FBRyw4Q0FBOEMsQ0FBQztRQUMzRSxrQ0FBNkIsR0FBRyxrREFBa0QsQ0FBQztJQUlwRyxDQUFDO0lBRU0sY0FBYyxDQUNuQixnQkFBcUM7UUFRckMsSUFBSSxXQUFXLEdBTVQsRUFBRSxDQUFDO1FBRVQsV0FBVyxDQUFDLElBQUksQ0FDZDtZQUNFLEdBQUcsRUFBRSxJQUFJLENBQUMsTUFBTSxFQUFFO1lBQ2xCLE1BQU0sRUFBRSxnQkFBZ0I7WUFDeEIsU0FBUyxFQUFFLENBQUMsT0FBNEIsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLE9BQU8sQ0FBQztZQUM5RSxPQUFPLEVBQUUsa0RBQWtEO1NBQzVELEVBQ0Q7WUFDRSxHQUFHLEVBQUUsSUFBSSxDQUFDLE1BQU0sRUFBRTtZQUNsQixNQUFNLEVBQUUsZ0JBQWdCO1lBQ3hCLFNBQVMsRUFBRSxDQUFDLE9BQTRCLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxPQUFPLENBQUM7WUFDOUUsT0FBTyxFQUFFLHFDQUFxQztTQUMvQyxFQUNEO1lBQ0UsR0FBRyxFQUFFLElBQUksQ0FBQyxNQUFNLEVBQUU7WUFDbEIsTUFBTSxFQUFFLGdCQUFnQjtZQUN4QixTQUFTLEVBQUUsQ0FBQyxPQUE0QixFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMseUJBQXlCLENBQUMsT0FB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