ph-id-validator
Version:
Identification number validation for PH ids
532 lines (441 loc) • 16.9 kB
JavaScript
(function (global, factory) {
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :
typeof define === 'function' && define.amd ? define(['exports'], factory) :
(global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.phIdValidator = {}));
}(this, (function (exports) { 'use strict';
function getDefaultExportFromCjs (x) {
return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x;
}
function createCommonjsModule(fn) {
var module = { exports: {} };
return fn(module, module.exports), module.exports;
}
var assertString_1 = createCommonjsModule(function (module, exports) {
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = assertString;
function _typeof(obj) {
"@babel/helpers - typeof";
if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") {
_typeof = function _typeof(obj) {
return typeof obj;
};
} else {
_typeof = function _typeof(obj) {
return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj;
};
}
return _typeof(obj);
}
function assertString(input) {
var isString = typeof input === 'string' || input instanceof String;
if (!isString) {
var invalidType = _typeof(input);
if (input === null) invalidType = 'null';else if (invalidType === 'object') invalidType = input.constructor.name;
throw new TypeError("Expected a string but received a ".concat(invalidType));
}
}
module.exports = exports.default;
module.exports.default = exports.default;
});
var alpha_1 = createCommonjsModule(function (module, exports) {
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.commaDecimal = exports.dotDecimal = exports.farsiLocales = exports.arabicLocales = exports.englishLocales = exports.decimal = exports.alphanumeric = exports.alpha = void 0;
var alpha = {
'en-US': /^[A-Z]+$/i,
'az-AZ': /^[A-VXYZÇƏĞİıÖŞÜ]+$/i,
'bg-BG': /^[А-Я]+$/i,
'cs-CZ': /^[A-ZÁČĎÉĚÍŇÓŘŠŤÚŮÝŽ]+$/i,
'da-DK': /^[A-ZÆØÅ]+$/i,
'de-DE': /^[A-ZÄÖÜß]+$/i,
'el-GR': /^[Α-ώ]+$/i,
'es-ES': /^[A-ZÁÉÍÑÓÚÜ]+$/i,
'fa-IR': /^[ابپتثجچحخدذرزژسشصضطظعغفقکگلمنوهی]+$/i,
'fr-FR': /^[A-ZÀÂÆÇÉÈÊËÏÎÔŒÙÛÜŸ]+$/i,
'it-IT': /^[A-ZÀÉÈÌÎÓÒÙ]+$/i,
'nb-NO': /^[A-ZÆØÅ]+$/i,
'nl-NL': /^[A-ZÁÉËÏÓÖÜÚ]+$/i,
'nn-NO': /^[A-ZÆØÅ]+$/i,
'hu-HU': /^[A-ZÁÉÍÓÖŐÚÜŰ]+$/i,
'pl-PL': /^[A-ZĄĆĘŚŁŃÓŻŹ]+$/i,
'pt-PT': /^[A-ZÃÁÀÂÄÇÉÊËÍÏÕÓÔÖÚÜ]+$/i,
'ru-RU': /^[А-ЯЁ]+$/i,
'sl-SI': /^[A-ZČĆĐŠŽ]+$/i,
'sk-SK': /^[A-ZÁČĎÉÍŇÓŠŤÚÝŽĹŔĽÄÔ]+$/i,
'sr-RS@latin': /^[A-ZČĆŽŠĐ]+$/i,
'sr-RS': /^[А-ЯЂЈЉЊЋЏ]+$/i,
'sv-SE': /^[A-ZÅÄÖ]+$/i,
'th-TH': /^[ก-๐\s]+$/i,
'tr-TR': /^[A-ZÇĞİıÖŞÜ]+$/i,
'uk-UA': /^[А-ЩЬЮЯЄIЇҐі]+$/i,
'vi-VN': /^[A-ZÀÁẠẢÃÂẦẤẬẨẪĂẰẮẶẲẴĐÈÉẸẺẼÊỀẾỆỂỄÌÍỊỈĨÒÓỌỎÕÔỒỐỘỔỖƠỜỚỢỞỠÙÚỤỦŨƯỪỨỰỬỮỲÝỴỶỸ]+$/i,
'ku-IQ': /^[ئابپتجچحخدرڕزژسشعغفڤقکگلڵمنوۆھەیێيطؤثآإأكضصةظذ]+$/i,
ar: /^[ءآأؤإئابةتثجحخدذرزسشصضطظعغفقكلمنهوىيًٌٍَُِّْٰ]+$/,
he: /^[א-ת]+$/,
fa: /^['آاءأؤئبپتثجچحخدذرزژسشصضطظعغفقکگلمنوهةی']+$/i
};
exports.alpha = alpha;
var alphanumeric = {
'en-US': /^[0-9A-Z]+$/i,
'az-AZ': /^[0-9A-VXYZÇƏĞİıÖŞÜ]+$/i,
'bg-BG': /^[0-9А-Я]+$/i,
'cs-CZ': /^[0-9A-ZÁČĎÉĚÍŇÓŘŠŤÚŮÝŽ]+$/i,
'da-DK': /^[0-9A-ZÆØÅ]+$/i,
'de-DE': /^[0-9A-ZÄÖÜß]+$/i,
'el-GR': /^[0-9Α-ω]+$/i,
'es-ES': /^[0-9A-ZÁÉÍÑÓÚÜ]+$/i,
'fr-FR': /^[0-9A-ZÀÂÆÇÉÈÊËÏÎÔŒÙÛÜŸ]+$/i,
'it-IT': /^[0-9A-ZÀÉÈÌÎÓÒÙ]+$/i,
'hu-HU': /^[0-9A-ZÁÉÍÓÖŐÚÜŰ]+$/i,
'nb-NO': /^[0-9A-ZÆØÅ]+$/i,
'nl-NL': /^[0-9A-ZÁÉËÏÓÖÜÚ]+$/i,
'nn-NO': /^[0-9A-ZÆØÅ]+$/i,
'pl-PL': /^[0-9A-ZĄĆĘŚŁŃÓŻŹ]+$/i,
'pt-PT': /^[0-9A-ZÃÁÀÂÄÇÉÊËÍÏÕÓÔÖÚÜ]+$/i,
'ru-RU': /^[0-9А-ЯЁ]+$/i,
'sl-SI': /^[0-9A-ZČĆĐŠŽ]+$/i,
'sk-SK': /^[0-9A-ZÁČĎÉÍŇÓŠŤÚÝŽĹŔĽÄÔ]+$/i,
'sr-RS@latin': /^[0-9A-ZČĆŽŠĐ]+$/i,
'sr-RS': /^[0-9А-ЯЂЈЉЊЋЏ]+$/i,
'sv-SE': /^[0-9A-ZÅÄÖ]+$/i,
'th-TH': /^[ก-๙\s]+$/i,
'tr-TR': /^[0-9A-ZÇĞİıÖŞÜ]+$/i,
'uk-UA': /^[0-9А-ЩЬЮЯЄIЇҐі]+$/i,
'ku-IQ': /^[٠١٢٣٤٥٦٧٨٩0-9ئابپتجچحخدرڕزژسشعغفڤقکگلڵمنوۆھەیێيطؤثآإأكضصةظذ]+$/i,
'vi-VN': /^[0-9A-ZÀÁẠẢÃÂẦẤẬẨẪĂẰẮẶẲẴĐÈÉẸẺẼÊỀẾỆỂỄÌÍỊỈĨÒÓỌỎÕÔỒỐỘỔỖƠỜỚỢỞỠÙÚỤỦŨƯỪỨỰỬỮỲÝỴỶỸ]+$/i,
ar: /^[٠١٢٣٤٥٦٧٨٩0-9ءآأؤإئابةتثجحخدذرزسشصضطظعغفقكلمنهوىيًٌٍَُِّْٰ]+$/,
he: /^[0-9א-ת]+$/,
fa: /^['0-9آاءأؤئبپتثجچحخدذرزژسشصضطظعغفقکگلمنوهةی۱۲۳۴۵۶۷۸۹۰']+$/i
};
exports.alphanumeric = alphanumeric;
var decimal = {
'en-US': '.',
ar: '٫'
};
exports.decimal = decimal;
var englishLocales = ['AU', 'GB', 'HK', 'IN', 'NZ', 'ZA', 'ZM'];
exports.englishLocales = englishLocales;
for (var locale, i = 0; i < englishLocales.length; i++) {
locale = "en-".concat(englishLocales[i]);
alpha[locale] = alpha['en-US'];
alphanumeric[locale] = alphanumeric['en-US'];
decimal[locale] = decimal['en-US'];
} // Source: http://www.localeplanet.com/java/
var arabicLocales = ['AE', 'BH', 'DZ', 'EG', 'IQ', 'JO', 'KW', 'LB', 'LY', 'MA', 'QM', 'QA', 'SA', 'SD', 'SY', 'TN', 'YE'];
exports.arabicLocales = arabicLocales;
for (var _locale, _i = 0; _i < arabicLocales.length; _i++) {
_locale = "ar-".concat(arabicLocales[_i]);
alpha[_locale] = alpha.ar;
alphanumeric[_locale] = alphanumeric.ar;
decimal[_locale] = decimal.ar;
}
var farsiLocales = ['IR', 'AF'];
exports.farsiLocales = farsiLocales;
for (var _locale2, _i2 = 0; _i2 < farsiLocales.length; _i2++) {
_locale2 = "fa-".concat(farsiLocales[_i2]);
alphanumeric[_locale2] = alphanumeric.fa;
decimal[_locale2] = decimal.ar;
} // Source: https://en.wikipedia.org/wiki/Decimal_mark
var dotDecimal = ['ar-EG', 'ar-LB', 'ar-LY'];
exports.dotDecimal = dotDecimal;
var commaDecimal = ['bg-BG', 'cs-CZ', 'da-DK', 'de-DE', 'el-GR', 'en-ZM', 'es-ES', 'fr-CA', 'fr-FR', 'id-ID', 'it-IT', 'ku-IQ', 'hu-HU', 'nb-NO', 'nn-NO', 'nl-NL', 'pl-PL', 'pt-PT', 'ru-RU', 'sl-SI', 'sr-RS@latin', 'sr-RS', 'sv-SE', 'tr-TR', 'uk-UA', 'vi-VN'];
exports.commaDecimal = commaDecimal;
for (var _i3 = 0; _i3 < dotDecimal.length; _i3++) {
decimal[dotDecimal[_i3]] = decimal['en-US'];
}
for (var _i4 = 0; _i4 < commaDecimal.length; _i4++) {
decimal[commaDecimal[_i4]] = ',';
}
alpha['fr-CA'] = alpha['fr-FR'];
alphanumeric['fr-CA'] = alphanumeric['fr-FR'];
alpha['pt-BR'] = alpha['pt-PT'];
alphanumeric['pt-BR'] = alphanumeric['pt-PT'];
decimal['pt-BR'] = decimal['pt-PT']; // see #862
alpha['pl-Pl'] = alpha['pl-PL'];
alphanumeric['pl-Pl'] = alphanumeric['pl-PL'];
decimal['pl-Pl'] = decimal['pl-PL']; // see #1455
alpha['fa-AF'] = alpha.fa;
});
var isNumeric_1 = createCommonjsModule(function (module, exports) {
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = isNumeric;
var _assertString = _interopRequireDefault(assertString_1);
function _interopRequireDefault(obj) {
return obj && obj.__esModule ? obj : {
default: obj
};
}
var numericNoSymbols = /^[0-9]+$/;
function isNumeric(str, options) {
(0, _assertString.default)(str);
if (options && options.no_symbols) {
return numericNoSymbols.test(str);
}
return new RegExp("^[+-]?([0-9]*[".concat((options || {}).locale ? alpha_1.decimal[options.locale] : '.', "])?[0-9]+$")).test(str);
}
module.exports = exports.default;
module.exports.default = exports.default;
});
var isNumericValidator = /*@__PURE__*/getDefaultExportFromCjs(isNumeric_1);
var isAlphanumeric_1 = createCommonjsModule(function (module, exports) {
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = isAlphanumeric;
exports.locales = void 0;
var _assertString = _interopRequireDefault(assertString_1);
function _interopRequireDefault(obj) {
return obj && obj.__esModule ? obj : {
default: obj
};
}
function isAlphanumeric(str) {
var locale = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'en-US';
(0, _assertString.default)(str);
if (locale in alpha_1.alphanumeric) {
return alpha_1.alphanumeric[locale].test(str);
}
throw new Error("Invalid locale '".concat(locale, "'"));
}
var locales = Object.keys(alpha_1.alphanumeric);
exports.locales = locales;
});
var isAlphanumericValidator = /*@__PURE__*/getDefaultExportFromCjs(isAlphanumeric_1);
var isLength_1 = createCommonjsModule(function (module, exports) {
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = isLength;
var _assertString = _interopRequireDefault(assertString_1);
function _interopRequireDefault(obj) {
return obj && obj.__esModule ? obj : {
default: obj
};
}
function _typeof(obj) {
"@babel/helpers - typeof";
if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") {
_typeof = function _typeof(obj) {
return typeof obj;
};
} else {
_typeof = function _typeof(obj) {
return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj;
};
}
return _typeof(obj);
}
/* eslint-disable prefer-rest-params */
function isLength(str, options) {
(0, _assertString.default)(str);
var min;
var max;
if (_typeof(options) === 'object') {
min = options.min || 0;
max = options.max;
} else {
// backwards compatibility: isLength(str, min [, max])
min = arguments[1] || 0;
max = arguments[2];
}
var surrogatePairs = str.match(/[\uD800-\uDBFF][\uDC00-\uDFFF]/g) || [];
var len = str.length - surrogatePairs.length;
return len >= min && (typeof max === 'undefined' || len <= max);
}
module.exports = exports.default;
module.exports.default = exports.default;
});
var isLengthValidator = /*@__PURE__*/getDefaultExportFromCjs(isLength_1);
/**
* @name ph-id-validator
* @license MIT license.
* @copyright (c) 2021 Janno Tabamo
* @author Janno Tabamo <jannotabamo@gmail.com> (https://resume.jannomeister.com)
*/
var hasOnlyDash = function hasOnlyDash(str) {
return /[-]/.test(str);
};
var hasOnySpace = function hasOnySpace(str) {
return /[ ]/.test(str);
};
var isSECRegistrationCert = function isSECRegistrationCert(idNumber) {
return isAlphanumericValidator(idNumber) && isLengthValidator(idNumber, {
min: 11,
max: 11
});
};
var isOWWAId = function isOWWAId(idNumber) {
return isNumericValidator(idNumber) && isLengthValidator(idNumber, {
min: 11,
max: 11
});
};
var isSeamanBook = function isSeamanBook(idNumber) {
return isNumericValidator(idNumber) && isLengthValidator(idNumber, {
min: 9,
max: 9
});
};
var isIBPId = function isIBPId(idNumber) {
return isNumericValidator(idNumber) && isLengthValidator(idNumber, {
min: 5,
max: 5
});
};
var isGSISId = function isGSISId(idNumber) {
return isNumericValidator(idNumber) && isLengthValidator(idNumber, {
min: 11,
max: 11
});
};
var isPassport = function isPassport(idNumber) {
return isAlphanumericValidator(idNumber) && isLengthValidator(idNumber, {
min: 9,
max: 9
});
};
var isPRCId = function isPRCId(idNumber) {
return isNumericValidator(idNumber) && isLengthValidator(idNumber, {
min: 7,
max: 7
});
};
var isOFWId = function isOFWId(idNumber) {
return isNumericValidator(idNumber) && isLengthValidator(idNumber, {
min: 11,
max: 11
});
};
var isACRICard = function isACRICard(idNumber) {
return isNumericValidator(idNumber) && isLengthValidator(idNumber, {
min: 9,
max: 9
});
};
var isTinId = function isTinId(idNumber) {
if (!hasOnlyDash(idNumber) && !isNumericValidator(idNumber)) {
return false;
}
var tinId = idNumber.split("-").join("");
return isNumericValidator(tinId) && isLengthValidator(tinId, {
min: 9,
max: 12
});
};
var isSSSId = function isSSSId(idNumber) {
if (!hasOnlyDash(idNumber) && !isNumericValidator(idNumber)) {
return false;
}
var sssId = idNumber.split("-").join("");
return isNumericValidator(sssId) && isLengthValidator(sssId, {
min: 10,
max: 10
});
};
var isPhilhealthId = function isPhilhealthId(idNumber) {
if (!hasOnlyDash(idNumber) && !isNumericValidator(idNumber)) {
return false;
}
var philhealthId = idNumber.split("-").join("");
return isNumericValidator(philhealthId) && isLengthValidator(philhealthId, {
min: 12,
max: 12
});
};
var isDriversLicense = function isDriversLicense(idNumber) {
if (!hasOnlyDash(idNumber) && !isAlphanumericValidator(idNumber)) {
return false;
}
var driverLicenseId = idNumber.split("-").join("");
return isAlphanumericValidator(driverLicenseId) && isLengthValidator(driverLicenseId, {
min: 11,
max: 11
});
};
var isPostalId = function isPostalId(idNumber) {
if (!hasOnySpace(idNumber) && !isAlphanumericValidator(idNumber)) {
return false;
}
var postalId = idNumber.split(" ").join("");
return isAlphanumericValidator(postalId) && isLengthValidator(postalId, {
min: 16,
max: 16
});
};
var isBirthCertificate = function isBirthCertificate(idNumber) {
if (!hasOnlyDash(idNumber) && !isAlphanumericValidator(idNumber)) {
return false;
}
var birthCerificateId = idNumber.split("-").join("");
return isAlphanumericValidator(birthCerificateId) && isLengthValidator(birthCerificateId, {
min: 13,
max: 13
});
};
var isUMID = function isUMID(idNumber) {
if (!hasOnlyDash(idNumber) && !isNumericValidator(idNumber)) {
return false;
}
var umid = idNumber.split("-").join("");
return isNumericValidator(umid) && isLengthValidator(umid, {
min: 12,
max: 12
});
};
var isVotersId = function isVotersId(idNumber) {
if (!hasOnlyDash(idNumber) && !isAlphanumericValidator(idNumber)) {
return false;
}
var votersId = idNumber.split("-").join("");
return isAlphanumericValidator(votersId) && isLengthValidator(votersId, {
min: 22,
max: 22
});
};
var isPagIbigLoyaltyCard = function isPagIbigLoyaltyCard(idNumber) {
if (!hasOnlyDash(idNumber) && !isAlphanumericValidator(idNumber)) {
return false;
}
var loyaltyCard = idNumber.split("-").join("");
return isAlphanumericValidator(loyaltyCard) && isLengthValidator(loyaltyCard, {
min: 12,
max: 12
});
};
var isNBIClearance = function isNBIClearance(idNumber) {
if (!hasOnlyDash(idNumber) && !isAlphanumericValidator(idNumber)) {
return false;
}
var nbiClearance = idNumber.split("-").join("");
return isAlphanumericValidator(nbiClearance) && isLengthValidator(nbiClearance, {
min: 18,
max: 18
});
};
exports.isACRICard = isACRICard;
exports.isBirthCertificate = isBirthCertificate;
exports.isDriversLicense = isDriversLicense;
exports.isGSISId = isGSISId;
exports.isIBPId = isIBPId;
exports.isNBIClearance = isNBIClearance;
exports.isOFWId = isOFWId;
exports.isOWWAId = isOWWAId;
exports.isPRCId = isPRCId;
exports.isPagIbigLoyaltyCard = isPagIbigLoyaltyCard;
exports.isPassport = isPassport;
exports.isPhilhealthId = isPhilhealthId;
exports.isPostalId = isPostalId;
exports.isSECRegistrationCert = isSECRegistrationCert;
exports.isSSSId = isSSSId;
exports.isSeamanBook = isSeamanBook;
exports.isTinId = isTinId;
exports.isUMID = isUMID;
exports.isVotersId = isVotersId;
Object.defineProperty(exports, '__esModule', { value: true });
})));
//# sourceMappingURL=ph-id-validator.umd.js.map