@sphereon/pex
Version:
A Typescript implementation of the v1 and v2 DIF Presentation Exchange specification
88 lines • 9.46 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.filterToRestrictedDIDs = exports.isRestrictedDID = exports.uniformDIDMethods = exports.formatValidationErrors = exports.formatValidationError = exports.definitionVersionDiscovery = exports.getIssuerString = exports.getSubjectIdsAsString = void 0;
const ssi_types_1 = require("@sphereon/ssi-types");
const types_1 = require("../types");
const validatePDv1_js_1 = __importDefault(require("../validation/validatePDv1.js"));
const validatePDv2_js_1 = __importDefault(require("../validation/validatePDv2.js"));
const ObjectUtils_1 = require("./ObjectUtils");
const jsonPathUtils_1 = require("./jsonPathUtils");
function getSubjectIdsAsString(vc) {
if (ssi_types_1.CredentialMapper.isSdJwtDecodedCredential(vc)) {
// TODO: should we also handle `cnf` claim?
return vc.signedPayload.sub ? [vc.signedPayload.sub] : [];
}
const subjects = Array.isArray(vc.credentialSubject) ? vc.credentialSubject : [vc.credentialSubject];
return subjects.filter((s) => !!s.id).map((value) => value.id);
}
exports.getSubjectIdsAsString = getSubjectIdsAsString;
function getIssuerString(vc) {
if (ssi_types_1.CredentialMapper.isSdJwtDecodedCredential(vc)) {
return vc.signedPayload.iss;
}
return ObjectUtils_1.ObjectUtils.isString(vc.issuer) ? vc.issuer : vc.issuer.id;
}
exports.getIssuerString = getIssuerString;
function definitionVersionDiscovery(presentationDefinition) {
var _a, _b;
const presentationDefinitionCopy = JSON.parse(JSON.stringify(presentationDefinition));
jsonPathUtils_1.JsonPathUtils.changePropertyNameRecursively(presentationDefinitionCopy, '_const', 'const');
jsonPathUtils_1.JsonPathUtils.changePropertyNameRecursively(presentationDefinitionCopy, '_enum', 'enum');
const data = { presentation_definition: presentationDefinitionCopy };
if ((0, validatePDv2_js_1.default)(data)) {
return { version: types_1.PEVersion.v2 };
}
const v2Errors = (_a = validatePDv2_js_1.default.errors) !== null && _a !== void 0 ? _a : undefined;
if ((0, validatePDv1_js_1.default)(data)) {
return { version: types_1.PEVersion.v1 };
}
const v1Errors = (_b = validatePDv1_js_1.default.errors) !== null && _b !== void 0 ? _b : undefined;
return {
error: 'This is not a valid PresentationDefinition',
v1Errors,
v2Errors,
};
}
exports.definitionVersionDiscovery = definitionVersionDiscovery;
function formatValidationError(error) {
return `${error.instancePath || '/'}: ${error.message}${error.params.additionalProperty ? ` (${error.params.additionalProperty})` : ''}`;
}
exports.formatValidationError = formatValidationError;
function formatValidationErrors(errors) {
if (!(errors === null || errors === void 0 ? void 0 : errors.length)) {
return undefined;
}
return errors.map(formatValidationError).join('\n ');
}
exports.formatValidationErrors = formatValidationErrors;
function uniformDIDMethods(dids, opts) {
var _a;
let result = (_a = dids === null || dids === void 0 ? void 0 : dids.map((did) => did.toLowerCase()).map((did) => (did.startsWith('did:') ? did : `did:${did}`))) !== null && _a !== void 0 ? _a : [];
if (opts === null || opts === void 0 ? void 0 : opts.removePrefix) {
const length = opts.removePrefix.endsWith(':') ? opts.removePrefix.length : opts.removePrefix.length + 1;
result = result.map((did) => (did.startsWith(opts.removePrefix) ? did.substring(length) : did));
}
if (result.includes('did')) {
// The string did denotes every DID method, hence we return an empty array, indicating all methods are supported
return [];
}
return result;
}
exports.uniformDIDMethods = uniformDIDMethods;
function isRestrictedDID(DID, restrictToDIDMethods) {
const methods = uniformDIDMethods(restrictToDIDMethods);
return methods.length === 0 || methods.some((method) => DID.toLowerCase().startsWith(method));
}
exports.isRestrictedDID = isRestrictedDID;
function filterToRestrictedDIDs(DIDs, restrictToDIDMethods) {
const methods = uniformDIDMethods(restrictToDIDMethods);
if (methods.length === 0) {
return DIDs;
}
return methods.flatMap((method) => DIDs.filter((DID) => DID.toLowerCase().startsWith(method)));
}
exports.filterToRestrictedDIDs = filterToRestrictedDIDs;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVkNVdGlscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYi91dGlscy9WQ1V0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLG1EQUFxSjtBQUVySixvQ0FBaUY7QUFDakYsb0ZBQXlEO0FBQ3pELG9GQUF5RDtBQUd6RCwrQ0FBNEM7QUFDNUMsbURBQWdEO0FBRWhELFNBQWdCLHFCQUFxQixDQUFDLEVBQWtEO0lBQ3RGLElBQUksNEJBQWdCLENBQUMsd0JBQXdCLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQztRQUNsRCwyQ0FBMkM7UUFDM0MsT0FBTyxFQUFFLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7SUFDNUQsQ0FBQztJQUVELE1BQU0sUUFBUSxHQUE4QyxLQUFLLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLGlCQUFpQixDQUFDLENBQUM7SUFDaEosT0FBTyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBYSxDQUFDO0FBQzdFLENBQUM7QUFSRCxzREFRQztBQUVELFNBQWdCLGVBQWUsQ0FBQyxFQUFrRDtJQUNoRixJQUFJLDRCQUFnQixDQUFDLHdCQUF3QixDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUM7UUFDbEQsT0FBTyxFQUFFLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQztJQUM5QixDQUFDO0lBRUQsT0FBTyx5QkFBVyxDQUFDLFFBQVEsQ0FB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