UNPKG

@techsio/storefront-data

Version:

Medusa-first storefront data layer built on TanStack Query.

30 lines (29 loc) • 1.54 kB
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 };