yup-phone-js
Version:
Add Yup validation for phone numbers
42 lines (33 loc) • 1.3 kB
JavaScript
import { addMethod, string } from 'yup';
import { parsePhoneNumber } from 'libphonenumber-js';
function validatePhone(value, options) {
if (typeof value !== "string") {
return false;
}
try {
var parseCountry = options.validCountries && !Array.isArray(options.validCountries) ? options.validCountries : undefined;
var phoneNumber = parsePhoneNumber(value, parseCountry);
if (!phoneNumber.isPossible()) {
return false;
}
if (options.validCountries) {
var validCountries = Array.isArray(options.validCountries) ? options.validCountries : [options.validCountries];
if (!phoneNumber.country || !validCountries.includes(phoneNumber.country)) {
return false;
}
}
return !options.strictValidation || phoneNumber.isValid();
} catch (e) {
console.warn("Error validating phone number:", e);
return false;
}
}
var PHONE_TEST_NAME = "phone";
addMethod(string, PHONE_TEST_NAME, function yupPhone(options, errorMessage) {
var errMsg = errorMessage != null ? errorMessage : "${path} must be a valid phone number.";
return this.test(PHONE_TEST_NAME, errMsg, function (value) {
return validatePhone(value, options != null ? options : {});
});
});
export { validatePhone };
//# sourceMappingURL=yup-phone-js.esm.js.map