| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152 | "use strict";Object.defineProperty(exports, "__esModule", {  value: true});exports.default = isPassportNumber;var _assertString = _interopRequireDefault(require("./util/assertString"));function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }/** * Reference: * https://en.wikipedia.org/ -- Wikipedia * https://docs.microsoft.com/en-us/microsoft-365/compliance/eu-passport-number -- EU Passport Number * https://countrycode.org/ -- Country Codes */var passportRegexByCountryCode = {  AM: /^[A-Z]{2}\d{7}$/,  // ARMENIA  AR: /^[A-Z]{3}\d{6}$/,  // ARGENTINA  AT: /^[A-Z]\d{7}$/,  // AUSTRIA  AU: /^[A-Z]\d{7}$/,  // AUSTRALIA  AZ: /^[A-Z]{1}\d{8}$/,  // AZERBAIJAN  BE: /^[A-Z]{2}\d{6}$/,  // BELGIUM  BG: /^\d{9}$/,  // BULGARIA  BR: /^[A-Z]{2}\d{6}$/,  // BRAZIL  BY: /^[A-Z]{2}\d{7}$/,  // BELARUS  CA: /^[A-Z]{2}\d{6}$/,  // CANADA  CH: /^[A-Z]\d{7}$/,  // SWITZERLAND  CN: /^G\d{8}$|^E(?![IO])[A-Z0-9]\d{7}$/,  // CHINA [G=Ordinary, E=Electronic] followed by 8-digits, or E followed by any UPPERCASE letter (except I and O) followed by 7 digits  CY: /^[A-Z](\d{6}|\d{8})$/,  // CYPRUS  CZ: /^\d{8}$/,  // CZECH REPUBLIC  DE: /^[CFGHJKLMNPRTVWXYZ0-9]{9}$/,  // GERMANY  DK: /^\d{9}$/,  // DENMARK  DZ: /^\d{9}$/,  // ALGERIA  EE: /^([A-Z]\d{7}|[A-Z]{2}\d{7})$/,  // ESTONIA (K followed by 7-digits), e-passports have 2 UPPERCASE followed by 7 digits  ES: /^[A-Z0-9]{2}([A-Z0-9]?)\d{6}$/,  // SPAIN  FI: /^[A-Z]{2}\d{7}$/,  // FINLAND  FR: /^\d{2}[A-Z]{2}\d{5}$/,  // FRANCE  GB: /^\d{9}$/,  // UNITED KINGDOM  GR: /^[A-Z]{2}\d{7}$/,  // GREECE  HR: /^\d{9}$/,  // CROATIA  HU: /^[A-Z]{2}(\d{6}|\d{7})$/,  // HUNGARY  IE: /^[A-Z0-9]{2}\d{7}$/,  // IRELAND  IN: /^[A-Z]{1}-?\d{7}$/,  // INDIA  ID: /^[A-C]\d{7}$/,  // INDONESIA  IR: /^[A-Z]\d{8}$/,  // IRAN  IS: /^(A)\d{7}$/,  // ICELAND  IT: /^[A-Z0-9]{2}\d{7}$/,  // ITALY  JM: /^[Aa]\d{7}$/,  // JAMAICA  JP: /^[A-Z]{2}\d{7}$/,  // JAPAN  KR: /^[MS]\d{8}$/,  // SOUTH KOREA, REPUBLIC OF KOREA, [S=PS Passports, M=PM Passports]  KZ: /^[a-zA-Z]\d{7}$/,  // KAZAKHSTAN  LI: /^[a-zA-Z]\d{5}$/,  // LIECHTENSTEIN  LT: /^[A-Z0-9]{8}$/,  // LITHUANIA  LU: /^[A-Z0-9]{8}$/,  // LUXEMBURG  LV: /^[A-Z0-9]{2}\d{7}$/,  // LATVIA  LY: /^[A-Z0-9]{8}$/,  // LIBYA  MT: /^\d{7}$/,  // MALTA  MZ: /^([A-Z]{2}\d{7})|(\d{2}[A-Z]{2}\d{5})$/,  // MOZAMBIQUE  MY: /^[AHK]\d{8}$/,  // MALAYSIA  MX: /^\d{10,11}$/,  // MEXICO  NL: /^[A-Z]{2}[A-Z0-9]{6}\d$/,  // NETHERLANDS  NZ: /^([Ll]([Aa]|[Dd]|[Ff]|[Hh])|[Ee]([Aa]|[Pp])|[Nn])\d{6}$/,  // NEW ZEALAND  PH: /^([A-Z](\d{6}|\d{7}[A-Z]))|([A-Z]{2}(\d{6}|\d{7}))$/,  // PHILIPPINES  PK: /^[A-Z]{2}\d{7}$/,  // PAKISTAN  PL: /^[A-Z]{2}\d{7}$/,  // POLAND  PT: /^[A-Z]\d{6}$/,  // PORTUGAL  RO: /^\d{8,9}$/,  // ROMANIA  RU: /^\d{9}$/,  // RUSSIAN FEDERATION  SE: /^\d{8}$/,  // SWEDEN  SL: /^(P)[A-Z]\d{7}$/,  // SLOVENIA  SK: /^[0-9A-Z]\d{7}$/,  // SLOVAKIA  TH: /^[A-Z]{1,2}\d{6,7}$/,  // THAILAND  TR: /^[A-Z]\d{8}$/,  // TURKEY  UA: /^[A-Z]{2}\d{6}$/,  // UKRAINE  US: /^\d{9}$/,  // UNITED STATES  ZA: /^[TAMD]\d{8}$/ // SOUTH AFRICA};/** * Check if str is a valid passport number * relative to provided ISO Country Code. * * @param {string} str * @param {string} countryCode * @return {boolean} */function isPassportNumber(str, countryCode) {  (0, _assertString.default)(str);  /** Remove All Whitespaces, Convert to UPPERCASE */  var normalizedStr = str.replace(/\s/g, '').toUpperCase();  return countryCode.toUpperCase() in passportRegexByCountryCode && passportRegexByCountryCode[countryCode].test(normalizedStr);}module.exports = exports.default;module.exports.default = exports.default;
 |