UNPKG

@animo-id/pex

Version:

A Typescript implementation of the v1 and v2 DIF Presentation Exchange specification

103 lines 8.86 kB
"use strict"; 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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