@dwn-protocol/id-sdk
Version:
SDK for accessing the features and capabilities
43 lines • 1.76 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.VcValidator = void 0;
const credential_js_1 = require("./credential.js");
const utils_js_1 = require("./utils.js");
class VcValidator {
static validateCredentialPayload(vc) {
this.validateContext(vc.vcDataModel['@context']);
this.validateVcType(vc.type);
this.validateCredentialSubject(vc.vcDataModel.credentialSubject);
if (vc.vcDataModel.issuanceDate)
this.validateTimestamp(vc.vcDataModel.issuanceDate);
if (vc.vcDataModel.expirationDate)
this.validateTimestamp(vc.vcDataModel.expirationDate);
}
static validateContext(value) {
const input = this.asArray(value);
if (input.length < 1 || input.indexOf(credential_js_1.DEFAULT_CONTEXT) === -1) {
throw new Error(`@context is missing default context "${credential_js_1.DEFAULT_CONTEXT}"`);
}
}
static validateVcType(value) {
const input = this.asArray(value);
if (input.length < 1 || input.indexOf(credential_js_1.DEFAULT_VC_TYPE) === -1) {
throw new Error(`type is missing default "${credential_js_1.DEFAULT_VC_TYPE}"`);
}
}
static validateCredentialSubject(value) {
if (Object.keys(value).length === 0) {
throw new Error(`credentialSubject must not be empty`);
}
}
static validateTimestamp(timestamp) {
if (!(0, utils_js_1.isValidXmlSchema112Timestamp)(timestamp)) {
throw new Error(`timestamp is not valid xml schema 112 timestamp`);
}
}
static asArray(arg) {
return Array.isArray(arg) ? arg : [arg];
}
}
exports.VcValidator = VcValidator;
//# sourceMappingURL=validators.js.map