12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061 |
- "use strict";
- Object.defineProperty(exports, "__esModule", {
- value: true
- });
- exports.default = isIdentityCard;
- var _assertString = _interopRequireDefault(require("./util/assertString"));
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
- var validators = {
- ES: function ES(str) {
- (0, _assertString.default)(str);
- var DNI = /^[0-9X-Z][0-9]{7}[TRWAGMYFPDXBNJZSQVHLCKE]$/;
- var charsValue = {
- X: 0,
- Y: 1,
- Z: 2
- };
- var controlDigits = ['T', 'R', 'W', 'A', 'G', 'M', 'Y', 'F', 'P', 'D', 'X', 'B', 'N', 'J', 'Z', 'S', 'Q', 'V', 'H', 'L', 'C', 'K', 'E']; // sanitize user input
- var sanitized = str.trim().toUpperCase(); // validate the data structure
- if (!DNI.test(sanitized)) {
- return false;
- } // validate the control digit
- var number = sanitized.slice(0, -1).replace(/[X,Y,Z]/g, function (char) {
- return charsValue[char];
- });
- return sanitized.endsWith(controlDigits[number % 23]);
- }
- };
- function isIdentityCard(str) {
- var locale = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'any';
- (0, _assertString.default)(str);
- if (locale in validators) {
- return validators[locale](str);
- } else if (locale === 'any') {
- for (var key in validators) {
- if (validators.hasOwnProperty(key)) {
- var validator = validators[key];
- if (validator(str)) {
- return true;
- }
- }
- }
- return false;
- }
- throw new Error("Invalid locale '".concat(locale, "'"));
- }
- module.exports = exports.default;
- module.exports.default = exports.default;
|