@cranberry-money/shared-utils
Version:
Shared utility functions for Blueberry platform
43 lines • 1.75 kB
JavaScript
export function isNumericOnly(str) {
return /^\d+$/.test(str);
}
export function validatePassword(password, minLength = 8) {
const lengthValid = password.length >= minLength;
const notNumeric = !isNumericOnly(password);
return { isValid: lengthValid && notNumeric, lengthValid, notNumeric };
}
export function formatVerificationToken(token) {
return token.trim().replace(/[^0-9]/g, '');
}
export function validateEmailConfirmation(token, exactLength = 6) {
const formattedToken = formatVerificationToken(token);
const isValidFormat = new RegExp(`^[0-9]{${exactLength}}$`).test(formattedToken);
return {
isValid: formattedToken.length === exactLength && isValidFormat,
isEmpty: formattedToken.length === 0,
isValidFormat,
};
}
export function isValidFullName(fullName, minParts = 2) {
const trimmedName = fullName.trim();
const nameParts = trimmedName.split(/\s+/);
return nameParts.length >= minParts && nameParts.every((part) => part.length > 0);
}
export function isValidPhoneFormat(phoneNumber, minLength = 8) {
const trimmedPhone = phoneNumber.trim();
return trimmedPhone.length >= minLength && /^[+\-\s\d()]+$/.test(trimmedPhone);
}
export function formatPhoneNumber(phoneNumber) {
if (!phoneNumber)
return '';
const cleaned = phoneNumber.replace(/\D/g, '');
if (cleaned.startsWith('61') && cleaned.length === 11) {
const mobile = cleaned.slice(2);
return `+61 ${mobile.slice(0, 3)} ${mobile.slice(3, 6)} ${mobile.slice(6)}`;
}
if (cleaned.length === 10) {
return `(${cleaned.slice(0, 3)}) ${cleaned.slice(3, 6)}-${cleaned.slice(6)}`;
}
return phoneNumber.trim();
}
//# sourceMappingURL=validation.js.map