UNPKG

@cranberry-money/shared-utils

Version:

Shared utility functions for Blueberry platform

86 lines 2.84 kB
import { USER_PROFILE_VALIDATION } from '@cranberry-money/shared-constants'; import { isValidPhoneFormat, isValidFullName } from './validation'; export const validateUserProfileField = { fullName: (value) => { const trimmed = value.trim(); if (trimmed.length === 0) { return { isValid: false, message: 'Full name is required', }; } if (!isValidFullName(trimmed)) { return { isValid: false, message: `Please enter at least ${USER_PROFILE_VALIDATION.MIN_NAME_PARTS} names`, }; } return { isValid: true, }; }, phoneNumber: (value) => { const trimmed = value.trim(); if (trimmed.length === 0) { return { isValid: false, message: 'Phone number is required', }; } if (!isValidPhoneFormat(trimmed)) { return { isValid: false, message: 'Please enter a valid phone number', }; } return { isValid: true, }; }, residentialAddress: (value) => { const trimmed = value.trim(); const minLength = USER_PROFILE_VALIDATION.MIN_ADDRESS_LENGTH || 10; if (trimmed.length === 0) { return { isValid: false, message: 'Residential address is required', }; } if (trimmed.length < minLength) { return { isValid: false, message: `Address must be at least ${minLength} characters`, }; } return { isValid: true, }; }, }; export function validateUserProfileFields(fields) { const results = {}; if (fields.fullName !== undefined) { results.fullName = validateUserProfileField.fullName(fields.fullName); } if (fields.phoneNumber !== undefined) { results.phoneNumber = validateUserProfileField.phoneNumber(fields.phoneNumber); } if (fields.residentialAddress !== undefined) { results.residentialAddress = validateUserProfileField.residentialAddress(fields.residentialAddress); } return results; } export function isUserProfileValid(fields, requiredFields) { const validations = validateUserProfileFields(fields); // Check if required fields are present and valid if (requiredFields) { for (const field of requiredFields) { if (fields[field] === undefined || !validations[field]?.isValid) { return false; } } } // Check all provided fields are valid return Object.values(validations).every(result => result.isValid); } //# sourceMappingURL=user-profile-validation.js.map