/** * Validates a ShippingAdress using a schema. This implementation either returns false * (no validation errors) or a non-empty array of { field, message } objects which * represent field-level errors. * * @param {ShippingAddress} address */ static validateAddress(address) { const validation = validateShippingAddress(address); let validationResult = false; if (!validation.valid) { validationResult = validation.errors.map((error) => { // jsonschema returns inconsistent properties depending on the validation error - try to make them consistent switch (error.name) { case 'type': return { field: error.property.split('.').slice(-1)[0], message: 'incorrect.type' }; case 'required': return { field: error.argument, message: 'required' }; case 'additionalProperties': return { field: error.argument, message: 'not.allowed' }; default: return { field: error.argument, message: error.name } } }); } return validationResult; }