@techsio/storefront-data
Version:
Medusa-first storefront data layer built on TanStack Query.
30 lines (29 loc) • 1.54 kB
JavaScript
const formatValidationIssue = (issue)=>{
if (issue.message) return issue.message;
const field = issue.field ? `${issue.field}: ` : "";
return `${issue.scope} ${field}${issue.code}`.trim();
};
const hasStorefrontAddressValidationIssues = (result)=>Array.isArray(result) && result.length > 0;
const getStorefrontAddressValidationMessage = (result, fallbackMessage = "Address validation failed")=>{
if (!hasStorefrontAddressValidationIssues(result)) return fallbackMessage;
return result.map(formatValidationIssue).join(", ");
};
class StorefrontAddressValidationError extends Error {
issues;
constructor(issues, message){
super(message ?? getStorefrontAddressValidationMessage(issues, "Address validation failed"));
this.name = "StorefrontAddressValidationError";
this.issues = [
...issues
];
}
}
const toStorefrontAddressValidationError = (result, fallbackMessage)=>{
if (!hasStorefrontAddressValidationIssues(result)) return null;
return new StorefrontAddressValidationError(result, fallbackMessage ?? getStorefrontAddressValidationMessage(result, "Address validation failed"));
};
const assertStorefrontAddressValidation = (result, fallbackMessage)=>{
const error = toStorefrontAddressValidationError(result, fallbackMessage);
if (error) throw error;
};
export { StorefrontAddressValidationError, assertStorefrontAddressValidation, getStorefrontAddressValidationMessage, hasStorefrontAddressValidationIssues, toStorefrontAddressValidationError };