@cranberry-money/shared-utils
Version:
Shared utility functions for Blueberry platform
86 lines • 2.84 kB
JavaScript
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