{"version":3,"file":"mrz.js","sources":["../src/formats.js","../src/generated/states.js","../src/parse/checkLines.js","../src/parsers/cleanText.js","../src/parsers/parseAlpha.js","../src/parsers/parseDocumentCodeId.js","../src/parsers/parseText.js","../src/parsers/parseOptional.js","../src/parse/createFieldParser.js","../src/parsers/parseDocumentNumber.js","../src/parsers/check.js","../src/parsers/parseDocumentNumberCheckDigit.js","../src/parsers/parseState.js","../src/parsers/parseSex.js","../src/parsers/parseDate.js","../src/parsers/parseDateCheckDigit.js","../src/parsers/parseCompositeCheckDigit.js","../src/parsers/parseFirstName.js","../src/parsers/parseLastName.js","../src/parse/fieldTemplates.js","../src/parse/frenchNationalIdFields.js","../src/parse/getResult.js","../src/parse/frenchNationalId.js","../src/parsers/parseNumber.js","../src/parsers/swissDrivingLicense/checkSeparator.js","../src/parsers/swissDrivingLicense/parseDocumentCode.js","../src/parsers/swissDrivingLicense/parseLanguageCode.js","../src/parsers/swissDrivingLicense/parseDocumentNumber.js","../src/parsers/swissDrivingLicense/parseIssuingState.js","../src/parse/swissDrivingLicenseFields.js","../src/parse/swissDrivingLicense.js","../src/parsers/parseDocumentNumberOptional.js","../src/parse/td1Fields.js","../src/parse/td1.js","../src/parse/td2Fields.js","../src/parse/td2.js","../src/parsers/parseDocumentCodePassport.js","../src/parsers/parsePersonalNumber.js","../src/parsers/parsePersonalNumberCheckDigit.js","../src/parse/td3Fields.js","../src/parse/td3.js","../src/parse/parsers.js","../src/parse/parse.js","../src/index.js"],"sourcesContent":["'use strict';\n\nconst formats = {\n  TD1: 'TD1',\n  TD2: 'TD2',\n  TD3: 'TD3',\n  SWISS_DRIVING_LICENSE: 'SWISS_DRIVING_LICENSE',\n  FRENCH_NATIONAL_ID: 'FRENCH_NATIONAL_ID',\n};\nObject.freeze(formats);\n\nmodule.exports = formats;\n","'use strict';\nconst states = {\n  \"AFG\": \"Afghanistan\",\n  \"ALA\": \"Åland Islands\",\n  \"ALB\": \"Albania\",\n  \"DZA\": \"Algeria\",\n  \"ASM\": \"American Samoa\",\n  \"AND\": \"Andorra\",\n  \"AGO\": \"Angola\",\n  \"AIA\": \"Anguilla\",\n  \"ATA\": \"Antarctica\",\n  \"ATG\": \"Antigua and Barbuda\",\n  \"ARG\": \"Argentina\",\n  \"ARM\": \"Armenia\",\n  \"ABW\": \"Aruba\",\n  \"AUS\": \"Australia\",\n  \"AUT\": \"Austria\",\n  \"AZE\": \"Azerbaijan\",\n  \"BHS\": \"Bahamas\",\n  \"BHR\": \"Bahrain\",\n  \"BGD\": \"Bangladesh\",\n  \"BRB\": \"Barbados\",\n  \"BLR\": \"Belarus\",\n  \"BEL\": \"Belgium\",\n  \"BLZ\": \"Belize\",\n  \"BEN\": \"Benin\",\n  \"BMU\": \"Bermuda\",\n  \"BTN\": \"Bhutan\",\n  \"BOL\": \"Bolivia, Plurinational State of\",\n  \"BES\": \"Bonaire, Sint Eustatius and Saba\",\n  \"BIH\": \"Bosnia and Herzegovina\",\n  \"BWA\": \"Botswana\",\n  \"BVT\": \"Bouvet Island\",\n  \"BRA\": \"Brazil\",\n  \"IOT\": \"British Indian Ocean Territory\",\n  \"BRN\": \"Brunei Darussalam\",\n  \"BGR\": \"Bulgaria\",\n  \"BFA\": \"Burkina Faso\",\n  \"BDI\": \"Burundi\",\n  \"CPV\": \"Cabo Verde\",\n  \"KHM\": \"Cambodia\",\n  \"CMR\": \"Cameroon\",\n  \"CAN\": \"Canada\",\n  \"CYM\": \"Cayman Islands\",\n  \"CAF\": \"Central African Republic\",\n  \"TCD\": \"Chad\",\n  \"CHL\": \"Chile\",\n  \"CHN\": \"China\",\n  \"CXR\": \"Christmas Island\",\n  \"CCK\": \"Cocos (Keeling) Islands\",\n  \"COL\": \"Colombia\",\n  \"COM\": \"Comoros\",\n  \"COG\": \"Congo\",\n  \"COD\": \"Congo, Democratic Republic of the\",\n  \"COK\": \"Cook Islands\",\n  \"CRI\": \"Costa Rica\",\n  \"CIV\": \"Côte d’Ivoire\",\n  \"HRV\": \"Croatia\",\n  \"CUB\": \"Cuba\",\n  \"CUW\": \"Curaçao\",\n  \"CYP\": \"Cyprus\",\n  \"CZE\": \"Czech Republic\",\n  \"DNK\": \"Denmark\",\n  \"DJI\": \"Djibouti\",\n  \"DMA\": \"Dominica\",\n  \"DOM\": \"Dominican Republic\",\n  \"ECU\": \"Ecuador\",\n  \"EGY\": \"Egypt\",\n  \"SLV\": \"El Salvador\",\n  \"GNQ\": \"Equatorial Guinea\",\n  \"ERI\": \"Eritrea\",\n  \"EST\": \"Estonia\",\n  \"ETH\": \"Ethiopia\",\n  \"FLK\": \"Falkland Islands (Malvinas)\",\n  \"FRO\": \"Faroe Islands\",\n  \"FJI\": \"Fiji\",\n  \"FIN\": \"Finland\",\n  \"FRA\": \"France\",\n  \"GUF\": \"French Guiana\",\n  \"PYF\": \"French Polynesia\",\n  \"ATF\": \"French Southern Territories\",\n  \"GAB\": \"Gabon\",\n  \"GMB\": \"Gambia\",\n  \"GEO\": \"Georgia\",\n  \"D\": \"Germany\",\n  \"GHA\": \"Ghana\",\n  \"GIB\": \"Gibraltar\",\n  \"GRC\": \"Greece\",\n  \"GRL\": \"Greenland\",\n  \"GRD\": \"Grenada\",\n  \"GLP\": \"Guadeloupe\",\n  \"GUM\": \"Guam\",\n  \"GTM\": \"Guatemala\",\n  \"GGY\": \"Guernsey\",\n  \"GIN\": \"Guinea\",\n  \"GNB\": \"Guinea-Bissau\",\n  \"GUY\": \"Guyana\",\n  \"HTI\": \"Haiti\",\n  \"HMD\": \"Heard Island and McDonald Islands\",\n  \"VAT\": \"Holy See (Vatican City State)\",\n  \"HND\": \"Honduras\",\n  \"HKG\": \"Hong Kong Special Administrative Region of China\",\n  \"HUN\": \"Hungary\",\n  \"ISL\": \"Iceland\",\n  \"IND\": \"India\",\n  \"IDN\": \"Indonesia\",\n  \"IRN\": \"Iran (Islamic Republic of)\",\n  \"IRQ\": \"Iraq\",\n  \"IRL\": \"Ireland\",\n  \"IMN\": \"Isle of Man\",\n  \"ISR\": \"Israel\",\n  \"ITA\": \"Italy\",\n  \"JAM\": \"Jamaica\",\n  \"JPN\": \"Japan\",\n  \"JEY\": \"Jersey\",\n  \"JOR\": \"Jordan\",\n  \"KAZ\": \"Kazakhstan\",\n  \"KEN\": \"Kenya\",\n  \"KIR\": \"Kiribati\",\n  \"PRK\": \"Korea, Democratic People’s Republic of\",\n  \"KOR\": \"Korea, Republic of\",\n  \"KWT\": \"Kuwait\",\n  \"KGZ\": \"Kyrgyzstan\",\n  \"LAO\": \"Lao People’s Democratic Republic\",\n  \"LVA\": \"Latvia\",\n  \"LBN\": \"Lebanon\",\n  \"LSO\": \"Lesotho\",\n  \"LBR\": \"Liberia\",\n  \"LBY\": \"Libya\",\n  \"LIE\": \"Liechtenstein\",\n  \"LTU\": \"Lithuania\",\n  \"LUX\": \"Luxembourg\",\n  \"MAC\": \"Macao Special Administrative Region of China\",\n  \"MKD\": \"Macedonia, the former Yugoslav Republic of\",\n  \"MDG\": \"Madagascar\",\n  \"MWI\": \"Malawi\",\n  \"MYS\": \"Malaysia\",\n  \"MDV\": \"Maldives\",\n  \"MLI\": \"Mali\",\n  \"MLT\": \"Malta\",\n  \"MHL\": \"Marshall Islands\",\n  \"MTQ\": \"Martinique\",\n  \"MRT\": \"Mauritania\",\n  \"MUS\": \"Mauritius\",\n  \"MYT\": \"Mayotte\",\n  \"MEX\": \"Mexico\",\n  \"FSM\": \"Micronesia (Federated States of)\",\n  \"MDA\": \"Moldova, Republic of\",\n  \"MCO\": \"Monaco\",\n  \"MNG\": \"Mongolia\",\n  \"MNE\": \"Montenegro\",\n  \"MSR\": \"Montserrat\",\n  \"MAR\": \"Morocco\",\n  \"MOZ\": \"Mozambique\",\n  \"MMR\": \"Myanmar\",\n  \"NAM\": \"Namibia\",\n  \"NRU\": \"Nauru\",\n  \"NPL\": \"Nepal\",\n  \"NLD\": \"Netherlands\",\n  \"ANT\": \"Netherlands Antilles\",\n  \"NTZ\": \"Neutral Zone\",\n  \"NCL\": \"New Caledonia\",\n  \"NZL\": \"New Zealand\",\n  \"NIC\": \"Nicaragua\",\n  \"NER\": \"Niger\",\n  \"NGA\": \"Nigeria\",\n  \"NIU\": \"Niue\",\n  \"NFK\": \"Norfolk Island\",\n  \"MNP\": \"Northern Mariana Islands\",\n  \"NOR\": \"Norway\",\n  \"OMN\": \"Oman\",\n  \"PAK\": \"Pakistan\",\n  \"PLW\": \"Palau\",\n  \"PSE\": \"Palestine, State of\",\n  \"PAN\": \"Panama\",\n  \"PNG\": \"Papua New Guinea\",\n  \"PRY\": \"Paraguay\",\n  \"PER\": \"Peru\",\n  \"PHL\": \"Philippines\",\n  \"PCN\": \"Pitcairn\",\n  \"POL\": \"Poland\",\n  \"PRT\": \"Portugal\",\n  \"PRI\": \"Puerto Rico\",\n  \"QAT\": \"Qatar\",\n  \"REU\": \"Réunion\",\n  \"ROU\": \"Romania\",\n  \"RUS\": \"Russian Federation\",\n  \"RWA\": \"Rwanda\",\n  \"BLM\": \"Saint Barthélemy\",\n  \"SHN\": \"Saint Helena, Ascension and Tristan da Cunha\",\n  \"KNA\": \"Saint Kitts and Nevis\",\n  \"LCA\": \"Saint Lucia\",\n  \"MAF\": \"Saint Martin (French part)\",\n  \"SPM\": \"Saint Pierre and Miquelon\",\n  \"VCT\": \"Saint Vincent and the Grenadines\",\n  \"WSM\": \"Samoa\",\n  \"SMR\": \"San Marino\",\n  \"STP\": \"Sao Tome and Principe\",\n  \"SAU\": \"Saudi Arabia\",\n  \"SEN\": \"Senegal\",\n  \"SRB\": \"Serbia\",\n  \"SYC\": \"Seychelles\",\n  \"SLE\": \"Sierra Leone\",\n  \"SGP\": \"Singapore\",\n  \"SXM\": \"Sint Maarten (Dutch part)\",\n  \"SVK\": \"Slovakia\",\n  \"SVN\": \"Slovenia\",\n  \"SLB\": \"Solomon Islands\",\n  \"SOM\": \"Somalia\",\n  \"ZAF\": \"South Africa\",\n  \"SGS\": \"South Georgia and the South Sandwich Islands\",\n  \"SSD\": \"South Sudan\",\n  \"ESP\": \"Spain\",\n  \"LKA\": \"Sri Lanka\",\n  \"SDN\": \"Sudan\",\n  \"SUR\": \"Suriname\",\n  \"SJM\": \"Svalbard and Jan Mayen\",\n  \"SWZ\": \"Swaziland\",\n  \"SWE\": \"Sweden\",\n  \"CHE\": \"Switzerland\",\n  \"SYR\": \"Syrian Arab Republic\",\n  \"TWN\": \"Taiwan Province of China\",\n  \"TJK\": \"Tajikistan\",\n  \"TZA\": \"Tanzania, United Republic of\",\n  \"THA\": \"Thailand\",\n  \"TLS\": \"Timor-Leste\",\n  \"TGO\": \"Togo\",\n  \"TKL\": \"Tokelau\",\n  \"TON\": \"Tonga\",\n  \"TTO\": \"Trinidad and Tobago\",\n  \"TUN\": \"Tunisia\",\n  \"TUR\": \"Turkey\",\n  \"TKM\": \"Turkmenistan\",\n  \"TCA\": \"Turks and Caicos Islands\",\n  \"TUV\": \"Tuvalu\",\n  \"UGA\": \"Uganda\",\n  \"UKR\": \"Ukraine\",\n  \"ARE\": \"United Arab Emirates\",\n  \"GBR\": \"United Kingdom - British Citizen\",\n  \"GBD\": \"United Kingdom - British Overseas Territories Citizen\",\n  \"GBN\": \"United Kingdom - British National (Overseas)\",\n  \"GBO\": \"United Kingdom - British Overseas Citizen\",\n  \"GBP\": \"United Kingdom - British Protected person\",\n  \"USA\": \"United States\",\n  \"UMI\": \"United States Minor Outlying Islands\",\n  \"URY\": \"Uruguay\",\n  \"UZB\": \"Uzbekistan\",\n  \"VUT\": \"Vanuatu\",\n  \"VEN\": \"Venezuela, Bolivarian Republic of\",\n  \"VNM\": \"Viet Nam\",\n  \"VGB\": \"Virgin Islands (British)\",\n  \"VIR\": \"Virgin Islands (U.S.)\",\n  \"WLF\": \"Wallis and Futuna\",\n  \"ESH\": \"Western Sahara\",\n  \"YEM\": \"Yemen\",\n  \"ZMB\": \"Zambia\",\n  \"ZWE\": \"Zimbabwe\",\n  \"EUE\": \"European Union (EU)\",\n  \"UNO\": \"United Nations Organization or one of its officials\",\n  \"UNA\": \"United Nations specialized agency or one of its officials\",\n  \"UNK\": \"Resident of Kosovo to whom a travel document has been issued by the United Nations Interim Administration Mission in Kosovo (UNMIK)\",\n  \"XBA\": \"African Development Bank (ADB)\",\n  \"XIM\": \"African Export-Import Bank (AFREXIM bank)\",\n  \"XCC\": \"Caribbean Community or one of its emissaries (CARICOM)\",\n  \"XCO\": \"Common Market for Eastern and Southern Africa (COMESA)\",\n  \"XEC\": \"Economic Community of West African States (ECOWAS)\",\n  \"XPO\": \"International Criminal Police Organization (INTERPOL)\",\n  \"XOM\": \"Sovereign Military Order of Malta or one of its emissaries\",\n  \"XXA\": \"Stateless person, as defined in Article 1 of the 1954 Convention Relating to the Status of Stateless Persons\",\n  \"XXB\": \"Refugee, as defined in Article 1 of the 1951 Convention Relating to the Status of Refugees as amended by the 1967 Protocol\",\n  \"XXX\": \"Refugee, other than as defined under the code XXB above XXC Person of unspecified nationality, for whom issuing State does not consider it necessary to specify any of the codes XXA, XXB or XXC above, whatever that person’s status may be. This category may include a person who is neither stateless nor a refugee but who is of unknown nationality and legally residing in the State of issue.\"\n};\nObject.freeze(states);\nmodule.exports = states;\n","'use strict';\n\nfunction checkLines(lines) {\n  if (typeof lines === 'string') {\n    lines = lines.split(/[\\r\\n]+/);\n  }\n  if (!Array.isArray(lines)) {\n    throw new TypeError('input must be an array or string');\n  }\n  for (const line of lines) {\n    if (!line.match(/[A-Z0-9<]+/)) {\n      throw new TypeError(\n        'lines must be composed of only alphanumerical characters and \"<\"',\n      );\n    }\n  }\n  return lines;\n}\n\nmodule.exports = checkLines;\n","'use strict';\n\nmodule.exports = function cleanText(string) {\n  return string.replace(/<+$/g, '').replace(/</g, ' ');\n};\n","'use strict';\n\nconst cleanText = require('./cleanText');\n\nmodule.exports = function parseAlpha(source) {\n  if (!source.match(/^[A-Z<]+$/)) {\n    throw new Error(\n      `invalid text: ${source}. Must be only alphabetical with <`,\n    );\n  }\n  return cleanText(source);\n};\n","'use strict';\n\nmodule.exports = function parseDocumentCodeId(source) {\n  const first = source.charAt(0);\n  if (first !== 'A' && first !== 'C' && first !== 'I') {\n    throw new Error(\n      `invalid document code: ${source}. First character must be A, C or I`,\n    );\n  }\n\n  const second = source.charAt(1);\n  if (second === 'V') {\n    throw new Error(\n      `invalid document code: ${source}. Second character may not be V`,\n    );\n  }\n\n  if (second === '<') {\n    return {\n      value: first,\n      start: 0,\n      end: 1,\n    };\n  } else {\n    return source;\n  }\n};\n","'use strict';\n\nconst cleanText = require('./cleanText');\n\nmodule.exports = function parseText(source, regexp = /^[0-9A-Z<]+$/) {\n  if (!source.match(regexp)) {\n    throw new Error(\n      `invalid text: ${source}. Must match the following regular expression: ${regexp}`,\n    );\n  }\n  return cleanText(source);\n};\n","'use strict';\n\nlet parseText = require('./parseText');\n\nmodule.exports = function parseOptional(source) {\n  const value = parseText(source);\n\n  return {\n    value,\n    start: 0,\n    end: 0 + value.length,\n  };\n};\n","'use strict';\n\nmodule.exports = function (fieldOptions) {\n  checkType(fieldOptions, 'label', 'string');\n  if (fieldOptions.field !== null) {\n    checkType(fieldOptions, 'field', 'string');\n  }\n  checkType(fieldOptions, 'line', 'number');\n  checkType(fieldOptions, 'start', 'number');\n  checkType(fieldOptions, 'end', 'number');\n  checkType(fieldOptions, 'parser', 'function');\n\n  const ranges = [\n    {\n      line: fieldOptions.line,\n      start: fieldOptions.start,\n      end: fieldOptions.end,\n    },\n  ];\n  if (Array.isArray(fieldOptions.related)) {\n    for (const related of fieldOptions.related) {\n      checkType(related, 'line', 'number');\n      checkType(related, 'start', 'number');\n      checkType(related, 'end', 'number');\n      ranges.push(related);\n    }\n  }\n\n  return function parseField(lines) {\n    const source = getText(lines, fieldOptions);\n    let related = fieldOptions.related || [];\n    related = related.map((r) => getText(lines, r));\n    const result = {\n      label: fieldOptions.label,\n      field: fieldOptions.field,\n      value: null,\n      valid: false,\n      ranges: ranges.map((range) => ({\n        line: range.line,\n        start: range.start,\n        end: range.end,\n        raw: getText(lines, range),\n      })),\n    };\n    const range = result.ranges[0];\n    result.line = range.line;\n    result.start = range.start;\n    result.end = range.end;\n    try {\n      let parsed = fieldOptions.parser(source, ...related);\n      result.value = typeof parsed === 'object' ? parsed.value : parsed;\n      result.valid = true;\n      if (typeof parsed === 'object') {\n        result.start = range.start + parsed.start;\n        result.end = range.start + parsed.end;\n      }\n    } catch (e) {\n      result.error = e.message;\n    }\n    return result;\n  };\n};\n\nfunction getText(lines, options) {\n  const line = lines[options.line];\n  return line.substring(options.start, options.end);\n}\n\nfunction checkType(options, name, type) {\n  if (typeof options[name] !== type) {\n    throw new TypeError(`${name} must be a ${type}`);\n  }\n}\n","'use strict';\n\nconst cleanText = require('./cleanText');\n\nmodule.exports = function parseDocumentNumber(source, checkDigit, optional) {\n  let end, value;\n  if (checkDigit === '<' && optional) {\n    const firstFiller = optional.indexOf('<');\n    const tail = optional.substring(0, firstFiller - 1);\n    value = source + tail;\n    end = value.length + 1;\n  } else {\n    value = cleanText(source);\n    end = value.length;\n  }\n  return {\n    value,\n    start: 0,\n    end,\n  };\n};\n","'use strict';\n\nmodule.exports = function check(string, value) {\n  let code = 0;\n  let factors = [7, 3, 1];\n  for (let i = 0; i < string.length; i++) {\n    let charCode = string.charCodeAt(i);\n    if (charCode === 60) charCode = 0;\n    if (charCode >= 65) charCode -= 55;\n    if (charCode >= 48) charCode -= 48;\n    charCode *= factors[i % 3];\n    code += charCode;\n  }\n  code %= 10;\n  if (code !== Number(value)) {\n    throw new Error(`invalid check digit: ${value}. Must be ${code}`);\n  }\n};\n","'use strict';\n\nlet check = require('./check');\n\nmodule.exports = function parseDocumentNumberCheckDigit(\n  checkDigit,\n  source,\n  optional,\n) {\n  if (checkDigit === '<' && optional) {\n    const firstFiller = optional.indexOf('<');\n    const tail = optional.substring(0, firstFiller - 1);\n    source = `${source}<${tail}`;\n    checkDigit = optional.charAt(firstFiller - 1);\n    check(source, checkDigit);\n    return {\n      value: checkDigit,\n      start: firstFiller,\n      end: firstFiller + 1,\n    };\n  } else {\n    check(source, checkDigit);\n    return checkDigit;\n  }\n};\n","'use strict';\n\nconst STATES = require('../generated/states');\n\nconst cleanText = require('./cleanText');\n\nmodule.exports = function parseState(source) {\n  source = cleanText(source);\n  let state = STATES[source];\n  if (!state) {\n    throw new Error(`invalid state code: ${source}`);\n  }\n  return {\n    value: source,\n    start: 0,\n    end: source.length,\n  };\n};\n","'use strict';\n\nmodule.exports = function parseSex(source) {\n  switch (source) {\n    case 'M':\n      return 'male';\n    case 'F':\n      return 'female';\n    case '<':\n      return 'nonspecified';\n    default:\n      throw new Error(`invalid sex: ${source}. Must be M, F or <.`);\n  }\n};\n","'use strict';\n\nmodule.exports = function parseDate(value) {\n  if (!value.match(/^[0-9<]{4,6}$/)) {\n    throw new Error(`invalid date: ${value}`);\n  }\n\n  const month = value.substring(2, 4);\n  if (month !== '<<' && (month < 1 || month > 12)) {\n    throw new Error(`invalid date month: ${month}`);\n  }\n\n  if (value.length === 6) {\n    const day = value.substring(4, 6);\n    if (day !== '<<' && (day < 1 || day > 31)) {\n      throw new Error(`invalid date day: ${day}`);\n    }\n  }\n\n  return value;\n};\n","'use strict';\n\nconst check = require('./check');\n\nmodule.exports = function parseCheckDigit(checkDigit, value) {\n  if (checkDigit !== false) {\n    check(value, checkDigit);\n  }\n  return checkDigit;\n};\n","'use strict';\n\nlet check = require('./check');\n\nmodule.exports = function parseCompositeCheckDigit(checkDigit, ...sources) {\n  const source = sources.join('');\n  check(source, checkDigit);\n  return checkDigit;\n};\n","'use strict';\n\nlet parseText = require('./parseText');\n\nmodule.exports = function parseFirstName(source) {\n  const withoutStart = source.replace(/.*?<{2}/, '');\n  const value = parseText(withoutStart, /^[A-Z<]+<*$/);\n  const start = source.length - withoutStart.length;\n  return {\n    value,\n    start,\n    end: start + value.length,\n  };\n};\n","'use strict';\n\nlet parseText = require('./parseText');\n\nmodule.exports = function parseLastName(source) {\n  const parsed = parseText(source.replace(/<{2}.*/, ''), /^[A-Z<]*<*$/);\n  return {\n    value: parsed,\n    start: 0,\n    end: parsed.length,\n  };\n};\n","'use strict';\n\nconst documentNumberTemplate = {\n  label: 'Document number',\n  field: 'documentNumber',\n  parser: require('../parsers/parseDocumentNumber'),\n};\n\nconst documentNumberCheckDigitTemplate = {\n  label: 'Document number check digit',\n  field: 'documentNumberCheckDigit',\n  parser: require('../parsers/parseDocumentNumberCheckDigit'),\n};\n\nconst documentCodeTemplate = {\n  label: 'Document code',\n  field: 'documentCode',\n};\n\nconst nationalityTemplate = {\n  label: 'Nationality',\n  field: 'nationality',\n  parser: require('../parsers/parseState'),\n};\n\nconst sexTemplate = {\n  label: 'Sex',\n  field: 'sex',\n  parser: require('../parsers/parseSex'),\n};\n\nconst expirationDateTemplate = {\n  label: 'Expiration date',\n  field: 'expirationDate',\n  parser: require('../parsers/parseDate'),\n};\n\nconst expirationDateCheckDigitTemplate = {\n  label: 'Expiration date check digit',\n  field: 'expirationDateCheckDigit',\n  parser: require('../parsers/parseDateCheckDigit'),\n};\n\nconst compositeCheckDigitTemplate = {\n  label: 'Composite check digit',\n  field: 'compositeCheckDigit',\n  parser: require('../parsers/parseCompositeCheckDigit'),\n};\n\nconst birthDateTemplate = {\n  label: 'Birth date',\n  field: 'birthDate',\n  parser: require('../parsers/parseDate'),\n};\n\nconst birthDateCheckDigitTemplate = {\n  label: 'Birth date check digit',\n  field: 'birthDateCheckDigit',\n  parser: require('../parsers/parseDateCheckDigit'),\n};\n\nconst issueDateTemplate = {\n  label: 'Issue date',\n  field: 'issueDate',\n  parser: require('../parsers/parseDate'),\n};\n\nconst firstNameTemplate = {\n  label: 'First name',\n  field: 'firstName',\n  parser: require('../parsers/parseFirstName'),\n};\n\nconst lastNameTemplate = {\n  label: 'Last name',\n  field: 'lastName',\n  parser: require('../parsers/parseLastName'),\n};\n\nconst issuingStateTemplate = {\n  label: 'Issuing state',\n  field: 'issuingState',\n  parser: require('../parsers/parseState'),\n};\n\nmodule.exports = {\n  documentNumberTemplate,\n  documentNumberCheckDigitTemplate,\n  documentCodeTemplate,\n  nationalityTemplate,\n  sexTemplate,\n  expirationDateTemplate,\n  expirationDateCheckDigitTemplate,\n  birthDateTemplate,\n  birthDateCheckDigitTemplate,\n  issueDateTemplate,\n  compositeCheckDigitTemplate,\n  firstNameTemplate,\n  lastNameTemplate,\n  issuingStateTemplate,\n};\n","'use strict';\n\nconst parseAlpha = require('../parsers/parseAlpha');\nconst parseDocumentCode = require('../parsers/parseDocumentCodeId');\nconst parseOptional = require('../parsers/parseOptional');\n\nconst createFieldParser = require('./createFieldParser');\nconst {\n  documentCodeTemplate,\n  issuingStateTemplate,\n  lastNameTemplate,\n  issueDateTemplate,\n  firstNameTemplate,\n  documentNumberTemplate,\n  documentNumberCheckDigitTemplate,\n  birthDateTemplate,\n  birthDateCheckDigitTemplate,\n  sexTemplate,\n  compositeCheckDigitTemplate,\n} = require('./fieldTemplates');\n\nmodule.exports = [\n  Object.assign({}, documentCodeTemplate, {\n    line: 0,\n    start: 0,\n    end: 2,\n    parser: parseDocumentCode,\n  }),\n  Object.assign({}, issuingStateTemplate, {\n    line: 0,\n    start: 2,\n    end: 5,\n  }),\n  Object.assign({}, lastNameTemplate, {\n    line: 0,\n    start: 5,\n    end: 30,\n    parser: parseAlpha,\n  }),\n  {\n    label: 'Administrative code',\n    field: 'administrativeCode',\n    line: 0,\n    start: 30,\n    end: 36,\n    parser: parseOptional,\n  },\n  Object.assign({}, issueDateTemplate, {\n    line: 1,\n    start: 0,\n    end: 4,\n  }),\n  {\n    label: 'Administrative code 2',\n    field: 'administrativeCode2',\n    line: 1,\n    start: 4,\n    end: 7,\n    parser: parseOptional,\n  },\n  Object.assign({}, documentNumberTemplate, {\n    line: 1,\n    start: 7,\n    end: 12,\n  }),\n  Object.assign({}, documentNumberCheckDigitTemplate, {\n    line: 1,\n    start: 12,\n    end: 13,\n    related: [\n      {\n        line: 1,\n        start: 0,\n        end: 12,\n      },\n    ],\n  }),\n  Object.assign({}, firstNameTemplate, {\n    line: 1,\n    start: 13,\n    end: 27,\n    parser: parseAlpha,\n  }),\n  Object.assign({}, birthDateTemplate, {\n    line: 1,\n    start: 27,\n    end: 33,\n  }),\n  Object.assign({}, birthDateCheckDigitTemplate, {\n    line: 1,\n    start: 33,\n    end: 34,\n    related: [\n      {\n        line: 1,\n        start: 27,\n        end: 33,\n      },\n    ],\n  }),\n  Object.assign({}, sexTemplate, {\n    line: 1,\n    start: 34,\n    end: 35,\n  }),\n  Object.assign({}, compositeCheckDigitTemplate, {\n    line: 1,\n    start: 35,\n    end: 36,\n    related: [\n      {\n        line: 0,\n        start: 0,\n        end: 36,\n      },\n      {\n        line: 1,\n        start: 0,\n        end: 35,\n      },\n    ],\n  }),\n].map(createFieldParser);\n","'use strict';\n\nfunction getDetails(lines, fieldParsers) {\n  const details = [];\n  for (const parser of fieldParsers) {\n    details.push(parser(lines));\n  }\n  return details;\n}\n\nfunction getFields(details) {\n  const fields = {};\n  let valid = true;\n  for (const detail of details) {\n    if (!detail.valid) valid = false;\n    if (detail.field) {\n      fields[detail.field] = detail.value;\n    }\n  }\n  return { fields, valid };\n}\n\nfunction getResult(format, lines, fieldParsers) {\n  const details = getDetails(lines, fieldParsers);\n  const fields = getFields(details);\n  const result = {\n    format,\n    details,\n    fields: fields.fields,\n    valid: fields.valid,\n  };\n  return result;\n}\n\nmodule.exports = getResult;\n","'use strict';\n\nconst { FRENCH_NATIONAL_ID } = require('../formats');\n\nconst checkLines = require('./checkLines');\nconst frenchNationalIdFields = require('./frenchNationalIdFields');\nconst getResult = require('./getResult');\n\nmodule.exports = function parseFrenchNationalId(lines) {\n  lines = checkLines(lines);\n  if (lines.length !== 2) {\n    throw new Error(\n      `invalid number of lines: ${lines.length}: Must be 2 for ${FRENCH_NATIONAL_ID}`,\n    );\n  }\n  lines.forEach((line, index) => {\n    if (line.length !== 36) {\n      throw new Error(\n        `invalid number of characters for line ${index + 1}: ${\n          line.length\n        }. Must be 36 for ${FRENCH_NATIONAL_ID}`,\n      );\n    }\n  });\n  return getResult(FRENCH_NATIONAL_ID, lines, frenchNationalIdFields);\n};\n","'use strict';\n\nmodule.exports = function parseNumber(source) {\n  if (!source.match(/^[0-9]+$/)) {\n    throw new Error(`invalid number: ${source}`);\n  }\n\n  return source;\n};\n","'use strict';\n\nmodule.exports = function checkSeparator(source) {\n  if (!source.match(/^<*$/)) {\n    throw new Error(\n      `invalid separator: ${source}. Must be composed only of \"<\"`,\n    );\n  }\n  return source;\n};\n","'use strict';\n\nmodule.exports = function parseDocumentCode(source) {\n  if (source !== 'FA') {\n    throw new Error(`invalid document code: ${source}. Must be FA`);\n  }\n  return source;\n};\n","'use strict';\n\nmodule.exports = function parseLanguageCode(languageCode) {\n  switch (languageCode) {\n    case 'D':\n    case 'F':\n    case 'I':\n    case 'R':\n      return languageCode;\n    default:\n      throw new Error(\n        `invalid languageCode code: ${languageCode}. Must be D, F, I or R`,\n      );\n  }\n};\n","'use strict';\n\nconst parseLanguageCode = require('./parseLanguageCode');\n\nmodule.exports = function parseDocumentNumber(source) {\n  // swiss driving license number\n  let first = source.substring(0, 3);\n  let second = source.substring(3, 6);\n  let languageCode = source.charAt(6);\n  let end = source.substring(7);\n\n  if (!first.match(/^[A-Z0-9]{3}$/)) {\n    throw new Error(\n      `invalid document number: ${source}. Must start with three alphanumeric digits`,\n    );\n  }\n  if (!second.match(/^[0-9]{3}$/)) {\n    throw new Error(\n      `invalid document number: ${source}. Must have numeric digits in positions 4, 5 and 6`,\n    );\n  }\n  if (end !== '<<') {\n    throw new Error(`invalid document number: ${source}. Must end with <<`);\n  }\n\n  // calling this method to throw if languageCode invalid\n  parseLanguageCode(languageCode);\n  return {\n    value: source.substring(0, 7),\n    start: 0,\n    end: 7,\n  };\n};\n","'use strict';\n\nmodule.exports = function parseIssuingState(source) {\n  if (source !== 'CHE' && source !== 'LIE') {\n    throw new Error(`invalid state code: ${source}. Must be CHE or LIE`);\n  }\n  return source;\n};\n","'use strict';\n\nconst parseNumber = require('../parsers/parseNumber');\nconst checkSeparator = require('../parsers/swissDrivingLicense/checkSeparator');\nconst parseDocumentCode = require('../parsers/swissDrivingLicense/parseDocumentCode');\nconst parseDocumentNumber = require('../parsers/swissDrivingLicense/parseDocumentNumber');\nconst parseIssuingState = require('../parsers/swissDrivingLicense/parseIssuingState');\nconst parseLanguageCode = require('../parsers/swissDrivingLicense/parseLanguageCode');\n\nconst createFieldParser = require('./createFieldParser');\nconst {\n  documentNumberTemplate,\n  documentCodeTemplate,\n  issuingStateTemplate,\n  birthDateTemplate,\n  lastNameTemplate,\n  firstNameTemplate,\n} = require('./fieldTemplates');\n\nmodule.exports = [\n  Object.assign({}, documentNumberTemplate, {\n    line: 0,\n    start: 0,\n    end: 9,\n    parser: parseDocumentNumber,\n  }),\n  {\n    label: 'Language code',\n    field: 'languageCode',\n    line: 0,\n    start: 6,\n    end: 7,\n    parser: parseLanguageCode,\n  },\n  Object.assign({}, documentCodeTemplate, {\n    line: 1,\n    start: 0,\n    end: 2,\n    parser: parseDocumentCode,\n  }),\n  Object.assign({}, issuingStateTemplate, {\n    line: 1,\n    start: 2,\n    end: 5,\n    parser: parseIssuingState,\n  }),\n  {\n    label: 'PIN code',\n    field: 'pinCode',\n    line: 1,\n    start: 5,\n    end: 14,\n    parser: parseNumber,\n  },\n  {\n    label: 'Version number',\n    field: 'versionNumber',\n    line: 1,\n    start: 14,\n    end: 17,\n    parser: parseNumber,\n  },\n  {\n    label: 'Separator 1',\n    field: null,\n    line: 1,\n    start: 17,\n    end: 19,\n    parser: checkSeparator,\n  },\n  Object.assign({}, birthDateTemplate, {\n    line: 1,\n    start: 19,\n    end: 25,\n  }),\n  {\n    label: 'Separator 2',\n    field: null,\n    line: 1,\n    start: 25,\n    end: 30,\n    parser: checkSeparator,\n  },\n  Object.assign({}, lastNameTemplate, {\n    line: 2,\n    start: 0,\n    end: 30,\n  }),\n  Object.assign({}, firstNameTemplate, {\n    line: 2,\n    start: 0,\n    end: 30,\n  }),\n].map(createFieldParser);\n","'use strict';\n\nconst { SWISS_DRIVING_LICENSE } = require('../formats');\n\nconst checkLines = require('./checkLines');\nconst getResult = require('./getResult');\nconst swissDrivingLicenseFields = require('./swissDrivingLicenseFields');\n\nmodule.exports = function parseSwissDrivingLicense(lines) {\n  lines = checkLines(lines);\n  if (lines.length !== 3) {\n    throw new Error(\n      `invalid number of lines: ${lines.length}: Must be 3 for ${SWISS_DRIVING_LICENSE}`,\n    );\n  }\n  if (lines[0].length !== 9) {\n    throw new Error(\n      `invalid number of characters for line 1: ${lines[0].length}. Must be 9 for ${SWISS_DRIVING_LICENSE}`,\n    );\n  }\n  if (lines[1].length !== 30) {\n    throw new Error(\n      `invalid number of characters for line 2: ${lines[1].length}. Must be 30 for ${SWISS_DRIVING_LICENSE}`,\n    );\n  }\n\n  if (lines[2].length !== 30) {\n    throw new Error(\n      `invalid number of characters for line 3: ${lines[2].length}. Must be 30 for ${SWISS_DRIVING_LICENSE}`,\n    );\n  }\n  return getResult(SWISS_DRIVING_LICENSE, lines, swissDrivingLicenseFields);\n};\n","'use strict';\n\nlet parseText = require('./parseText');\n\nmodule.exports = function parseDocumentNumberOptional(\n  optional,\n  documentNumber,\n  checkDigit,\n) {\n  if (checkDigit === '<') {\n    const firstFiller = optional.indexOf('<');\n    const value = parseText(optional.substring(firstFiller + 1));\n    return {\n      value,\n      start: firstFiller + 1,\n      end: firstFiller + 1 + value.length,\n    };\n  } else {\n    const value = parseText(optional);\n    return {\n      value,\n      start: 0,\n      end: 0 + value.length,\n    };\n  }\n};\n","'use strict';\n\nconst parseDocumentCode = require('../parsers/parseDocumentCodeId');\nconst parseDocumentNumberOptional = require('../parsers/parseDocumentNumberOptional');\nconst parseOptional = require('../parsers/parseOptional');\n\nconst createFieldParser = require('./createFieldParser');\nconst {\n  documentCodeTemplate,\n  issuingStateTemplate,\n  documentNumberTemplate,\n  documentNumberCheckDigitTemplate,\n  birthDateTemplate,\n  birthDateCheckDigitTemplate,\n  sexTemplate,\n  expirationDateTemplate,\n  expirationDateCheckDigitTemplate,\n  nationalityTemplate,\n  compositeCheckDigitTemplate,\n  lastNameTemplate,\n  firstNameTemplate,\n} = require('./fieldTemplates');\n\nmodule.exports = [\n  Object.assign({}, documentCodeTemplate, {\n    line: 0,\n    start: 0,\n    end: 2,\n    parser: parseDocumentCode,\n  }),\n  Object.assign({}, issuingStateTemplate, {\n    line: 0,\n    start: 2,\n    end: 5,\n  }),\n  Object.assign({}, documentNumberTemplate, {\n    line: 0,\n    start: 5,\n    end: 14,\n    related: [\n      {\n        line: 0,\n        start: 14,\n        end: 15,\n      },\n      {\n        line: 0,\n        start: 15,\n        end: 30,\n      },\n    ],\n  }),\n  Object.assign(documentNumberCheckDigitTemplate, {\n    line: 0,\n    start: 14,\n    end: 15,\n    related: [\n      {\n        line: 0,\n        start: 5,\n        end: 14,\n      },\n      {\n        line: 0,\n        start: 15,\n        end: 30,\n      },\n    ],\n  }),\n  {\n    label: 'Optional field 1',\n    field: 'optional1',\n    line: 0,\n    start: 15,\n    end: 30,\n    related: [\n      {\n        line: 0,\n        start: 5,\n        end: 14,\n      },\n      {\n        line: 0,\n        start: 14,\n        end: 15,\n      },\n    ],\n    parser: parseDocumentNumberOptional,\n  },\n  Object.assign({}, birthDateTemplate, {\n    start: 0,\n    end: 6,\n    line: 1,\n  }),\n  Object.assign({}, birthDateCheckDigitTemplate, {\n    line: 1,\n    start: 6,\n    end: 7,\n    related: [\n      {\n        line: 1,\n        start: 0,\n        end: 6,\n      },\n    ],\n  }),\n  Object.assign({}, sexTemplate, {\n    line: 1,\n    start: 7,\n    end: 8,\n  }),\n  Object.assign({}, expirationDateTemplate, {\n    line: 1,\n    start: 8,\n    end: 14,\n  }),\n  Object.assign({}, expirationDateCheckDigitTemplate, {\n    line: 1,\n    start: 14,\n    end: 15,\n    related: [\n      {\n        line: 1,\n        start: 8,\n        end: 14,\n      },\n    ],\n  }),\n  Object.assign({}, nationalityTemplate, {\n    line: 1,\n    start: 15,\n    end: 18,\n  }),\n  {\n    label: 'Optional field 2',\n    field: 'optional2',\n    line: 1,\n    start: 18,\n    end: 29,\n    parser: parseOptional,\n  },\n  Object.assign({}, compositeCheckDigitTemplate, {\n    line: 1,\n    start: 29,\n    end: 30,\n    related: [\n      {\n        line: 0,\n        start: 5,\n        end: 30,\n      },\n      {\n        line: 1,\n        start: 0,\n        end: 7,\n      },\n      {\n        line: 1,\n        start: 8,\n        end: 15,\n      },\n      {\n        line: 1,\n        start: 18,\n        end: 29,\n      },\n    ],\n  }),\n  Object.assign({}, lastNameTemplate, {\n    line: 2,\n    start: 0,\n    end: 30,\n  }),\n  Object.assign({}, firstNameTemplate, {\n    line: 2,\n    start: 0,\n    end: 30,\n  }),\n].map(createFieldParser);\n","'use strict';\n\nconst { TD1 } = require('../formats');\n\nconst checkLines = require('./checkLines');\nconst getResult = require('./getResult');\nconst TD1Fields = require('./td1Fields');\n\nmodule.exports = function parseTD1(lines) {\n  lines = checkLines(lines);\n  if (lines.length !== 3) {\n    throw new Error(\n      `invalid number of lines: ${lines.length}: Must be 3 for ${TD1}`,\n    );\n  }\n  lines.forEach((line, index) => {\n    if (line.length !== 30) {\n      throw new Error(\n        `invalid number of characters for line ${index + 1}: ${\n          line.length\n        }. Must be 30 for ${TD1}`,\n      );\n    }\n  });\n  return getResult(TD1, lines, TD1Fields);\n};\n","'use strict';\n\nconst parseDocumentCode = require('../parsers/parseDocumentCodeId');\nconst parseOptional = require('../parsers/parseOptional');\n\nconst createFieldParser = require('./createFieldParser');\nconst {\n  documentCodeTemplate,\n  issuingStateTemplate,\n  firstNameTemplate,\n  lastNameTemplate,\n  documentNumberTemplate,\n  documentNumberCheckDigitTemplate,\n  nationalityTemplate,\n  birthDateTemplate,\n  birthDateCheckDigitTemplate,\n  sexTemplate,\n  expirationDateTemplate,\n  expirationDateCheckDigitTemplate,\n  compositeCheckDigitTemplate,\n} = require('./fieldTemplates');\n\nmodule.exports = [\n  Object.assign({}, documentCodeTemplate, {\n    line: 0,\n    start: 0,\n    end: 2,\n    parser: parseDocumentCode,\n  }),\n  Object.assign({}, issuingStateTemplate, {\n    line: 0,\n    start: 2,\n    end: 5,\n  }),\n  Object.assign({}, lastNameTemplate, {\n    line: 0,\n    start: 5,\n    end: 36,\n  }),\n  Object.assign({}, firstNameTemplate, {\n    line: 0,\n    start: 5,\n    end: 36,\n  }),\n  Object.assign({}, documentNumberTemplate, {\n    line: 1,\n    start: 0,\n    end: 9,\n    related: [\n      {\n        line: 1,\n        start: 9,\n        end: 10,\n      },\n      {\n        line: 1,\n        start: 28,\n        end: 35,\n      },\n    ],\n  }),\n  Object.assign({}, documentNumberCheckDigitTemplate, {\n    line: 1,\n    start: 9,\n    end: 10,\n    related: [\n      {\n        line: 1,\n        start: 0,\n        end: 9,\n      },\n      {\n        line: 1,\n        start: 28,\n        end: 35,\n      },\n    ],\n  }),\n  Object.assign({}, nationalityTemplate, {\n    line: 1,\n    start: 10,\n    end: 13,\n  }),\n  Object.assign({}, birthDateTemplate, {\n    line: 1,\n    start: 13,\n    end: 19,\n  }),\n  Object.assign({}, birthDateCheckDigitTemplate, {\n    line: 1,\n    start: 19,\n    end: 20,\n    related: [\n      {\n        line: 1,\n        start: 13,\n        end: 19,\n      },\n    ],\n  }),\n  Object.assign({}, sexTemplate, {\n    line: 1,\n    start: 20,\n    end: 21,\n  }),\n  Object.assign({}, expirationDateTemplate, {\n    line: 1,\n    start: 21,\n    end: 27,\n  }),\n  Object.assign({}, expirationDateCheckDigitTemplate, {\n    line: 1,\n    start: 27,\n    end: 28,\n    related: [\n      {\n        line: 1,\n        start: 21,\n        end: 27,\n      },\n    ],\n  }),\n  {\n    label: 'Optional field',\n    field: 'optional',\n    line: 1,\n    start: 28,\n    end: 35,\n    parser: parseOptional,\n  },\n  Object.assign({}, compositeCheckDigitTemplate, {\n    line: 1,\n    start: 35,\n    end: 36,\n    related: [\n      {\n        line: 1,\n        start: 0,\n        end: 10,\n      },\n      {\n        line: 1,\n        start: 13,\n        end: 20,\n      },\n      {\n        line: 1,\n        start: 21,\n        end: 35,\n      },\n    ],\n  }),\n].map(createFieldParser);\n","'use strict';\n\nconst { TD2 } = require('../formats');\n\nconst checkLines = require('./checkLines');\nconst getResult = require('./getResult');\nconst TD2Fields = require('./td2Fields');\n\nmodule.exports = function parseTD2(lines) {\n  lines = checkLines(lines);\n  if (lines.length !== 2) {\n    throw new Error(\n      `invalid number of lines: ${lines.length}: Must be 2 for ${TD2}`,\n    );\n  }\n  lines.forEach((line, index) => {\n    if (line.length !== 36) {\n      throw new Error(\n        `invalid number of characters for line ${index + 1}: ${\n          line.length\n        }. Must be 36 for TD2`,\n      );\n    }\n  });\n  return getResult(TD2, lines, TD2Fields);\n};\n","'use strict';\n\nmodule.exports = function parseDocumentCodePassport(source) {\n  const first = source.charAt(0);\n  if (first !== 'P') {\n    throw new Error(\n      `invalid document code: ${source}. First character must be P`,\n    );\n  }\n\n  const second = source.charAt(1);\n  if (!second.match(/[A-Z<]/)) {\n    throw new Error(\n      `invalid document code: ${source}. Second character must be a letter or <`,\n    );\n  }\n  if (second === '<') {\n    return {\n      value: first,\n      start: 0,\n      end: 1,\n    };\n  } else {\n    return source;\n  }\n};\n","'use strict';\n\nlet parseText = require('./parseText');\n\nmodule.exports = function parsePersonalNumber(source) {\n  const value = parseText(source, /^[A-Z0-9<]+<*$/);\n  return {\n    value,\n    start: 0,\n    end: value.length,\n  };\n};\n","'use strict';\n\nlet check = require('./check');\nconst cleanText = require('./cleanText');\n\nmodule.exports = function parsePersonalNumberCheckDigit(\n  checkDigit,\n  personalNumber,\n) {\n  const cleanNumber = cleanText(personalNumber);\n  if (cleanNumber === '') {\n    if (checkDigit !== '<' && checkDigit !== '0') {\n      throw new Error(`invalid check digit ${checkDigit}: must be 0 or <`);\n    } else {\n      return checkDigit;\n    }\n  }\n  check(personalNumber, checkDigit);\n  return checkDigit;\n};\n","'use strict';\n\nconst parseDocumentCode = require('../parsers/parseDocumentCodePassport');\nconst parsePersonalNumber = require('../parsers/parsePersonalNumber');\nconst parsePersonalNumberCheckDigit = require('../parsers/parsePersonalNumberCheckDigit');\n\nconst createFieldParser = require('./createFieldParser');\nconst {\n  documentCodeTemplate,\n  issuingStateTemplate,\n  lastNameTemplate,\n  firstNameTemplate,\n  documentNumberTemplate,\n  documentNumberCheckDigitTemplate,\n  nationalityTemplate,\n  birthDateTemplate,\n  birthDateCheckDigitTemplate,\n  sexTemplate,\n  expirationDateTemplate,\n  expirationDateCheckDigitTemplate,\n  compositeCheckDigitTemplate,\n} = require('./fieldTemplates');\n\nmodule.exports = [\n  Object.assign({}, documentCodeTemplate, {\n    line: 0,\n    start: 0,\n    end: 2,\n    parser: parseDocumentCode,\n  }),\n  Object.assign({}, issuingStateTemplate, {\n    line: 0,\n    start: 2,\n    end: 5,\n  }),\n  Object.assign({}, lastNameTemplate, {\n    line: 0,\n    start: 5,\n    end: 44,\n  }),\n  Object.assign({}, firstNameTemplate, {\n    line: 0,\n    start: 5,\n    end: 44,\n  }),\n  Object.assign({}, documentNumberTemplate, {\n    line: 1,\n    start: 0,\n    end: 9,\n  }),\n  Object.assign({}, documentNumberCheckDigitTemplate, {\n    line: 1,\n    start: 9,\n    end: 10,\n    related: [\n      {\n        line: 1,\n        start: 0,\n        end: 9,\n      },\n    ],\n  }),\n  Object.assign({}, nationalityTemplate, {\n    line: 1,\n    start: 10,\n    end: 13,\n  }),\n  Object.assign({}, birthDateTemplate, {\n    line: 1,\n    start: 13,\n    end: 19,\n  }),\n  Object.assign({}, birthDateCheckDigitTemplate, {\n    line: 1,\n    start: 19,\n    end: 20,\n    related: [\n      {\n        line: 1,\n        start: 13,\n        end: 19,\n      },\n    ],\n  }),\n  Object.assign({}, sexTemplate, {\n    line: 1,\n    start: 20,\n    end: 21,\n  }),\n  Object.assign({}, expirationDateTemplate, {\n    line: 1,\n    start: 21,\n    end: 27,\n  }),\n  Object.assign({}, expirationDateCheckDigitTemplate, {\n    line: 1,\n    start: 27,\n    end: 28,\n    related: [\n      {\n        line: 1,\n        start: 21,\n        end: 27,\n      },\n    ],\n  }),\n  {\n    label: 'Personal number',\n    field: 'personalNumber',\n    line: 1,\n    start: 28,\n    end: 42,\n    parser: parsePersonalNumber,\n  },\n  {\n    label: 'Personal number check digit',\n    field: 'personalNumberCheckDigit',\n    line: 1,\n    start: 42,\n    end: 43,\n    related: [\n      {\n        line: 1,\n        start: 28,\n        end: 42,\n      },\n    ],\n    parser: parsePersonalNumberCheckDigit,\n  },\n  Object.assign({}, compositeCheckDigitTemplate, {\n    line: 1,\n    start: 43,\n    end: 44,\n    related: [\n      {\n        line: 1,\n        start: 0,\n        end: 10,\n      },\n      {\n        line: 1,\n        start: 13,\n        end: 20,\n      },\n      {\n        line: 1,\n        start: 21,\n        end: 43,\n      },\n    ],\n  }),\n].map(createFieldParser);\n","'use strict';\n\nconst { TD3 } = require('../formats');\n\nconst checkLines = require('./checkLines');\nconst getResult = require('./getResult');\nconst TD3Fields = require('./td3Fields');\n\nmodule.exports = function parseTD3(lines) {\n  lines = checkLines(lines);\n  if (lines.length !== 2) {\n    throw new Error(\n      `invalid number of lines: ${lines.length}: Must be 2 for ${TD3}`,\n    );\n  }\n  lines.forEach((line, index) => {\n    if (line.length !== 44) {\n      throw new Error(\n        `invalid number of characters for line ${index + 1}: ${\n          line.length\n        }. Must be 44 for TD3`,\n      );\n    }\n  });\n  return getResult(TD3, lines, TD3Fields);\n};\n","'use strict';\n\nconst parseFrenchNationalId = require('./frenchNationalId');\nconst parseSwissDrivingLicense = require('./swissDrivingLicense');\nconst parseTD1 = require('./td1');\nconst parseTD2 = require('./td2');\nconst parseTD3 = require('./td3');\n\nmodule.exports = {\n  TD1: parseTD1,\n  TD2: parseTD2,\n  TD3: parseTD3,\n  SWISS_DRIVING_LICENSE: parseSwissDrivingLicense,\n  FRENCH_NATIONAL_ID: parseFrenchNationalId,\n};\n","'use strict';\n\nconst formats = require('../formats');\n\nconst checkLines = require('./checkLines');\nconst parsers = require('./parsers');\n\nfunction parseMRZ(lines) {\n  lines = checkLines(lines);\n  switch (lines.length) {\n    case 2:\n    case 3: {\n      switch (lines[0].length) {\n        case 30:\n          return parsers.TD1(lines);\n        case 36: {\n          const endLine1 = lines[0].substr(30, 36);\n          if (endLine1.match(/[0-9]/)) {\n            return parsers.FRENCH_NATIONAL_ID(lines);\n          } else {\n            return parsers.TD2(lines);\n          }\n        }\n        case 44:\n          return parsers.TD3(lines);\n        case 9:\n          return parsers.SWISS_DRIVING_LICENSE(lines);\n        default:\n          throw new Error(\n            'unrecognized document format. First line of input must have 30 (TD1), 36 (TD2 or French National Id), 44 (TD3) or 9 (Swiss Driving License) characters',\n          );\n      }\n    }\n    default:\n      throw new Error(\n        `unrecognized document format. Input must have two or three lines, found${lines.length}`,\n      );\n  }\n}\n\nfor (const format in formats) {\n  parseMRZ[format] = parsers[format];\n}\n\nmodule.exports = parseMRZ;\n","'use strict';\n\nconst formats = require('./formats');\nconst states = require('./generated/states');\nconst parse = require('./parse/parse');\n\nmodule.exports = {\n  states,\n  formats,\n  parse,\n};\n"],"names":["formats","TD1","TD2","TD3","SWISS_DRIVING_LICENSE","FRENCH_NATIONAL_ID","Object","freeze","states","checkLines","lines","split","Array","isArray","TypeError","line","match","cleanText","string","replace","parseAlpha","source","Error","parseDocumentCodeId","first","charAt","second","value","start","end","parseText","regexp","parseOptional","length","fieldOptions","checkType","field","ranges","related","push","parseField","getText","map","r","result","label","valid","range","raw","parsed","parser","e","error","message","options","substring","name","type","parseDocumentNumber","checkDigit","optional","firstFiller","indexOf","tail","check","code","factors","i","charCode","charCodeAt","Number","parseDocumentNumberCheckDigit","parseState","state","STATES","parseSex","parseDate","month","day","parseCheckDigit","parseCompositeCheckDigit","sources","join","parseFirstName","withoutStart","parseLastName","documentNumberTemplate","require$$0","documentNumberCheckDigitTemplate","require$$1","documentCodeTemplate","nationalityTemplate","require$$2","sexTemplate","require$$3","expirationDateTemplate","require$$4","expirationDateCheckDigitTemplate","require$$5","compositeCheckDigitTemplate","require$$6","birthDateTemplate","birthDateCheckDigitTemplate","issueDateTemplate","firstNameTemplate","require$$7","lastNameTemplate","require$$8","issuingStateTemplate","assign","parseDocumentCode","createFieldParser","getDetails","fieldParsers","details","getFields","fields","detail","getResult","format","parseFrenchNationalId","forEach","index","frenchNationalIdFields","parseNumber","checkSeparator","parseLanguageCode","languageCode","parseIssuingState","parseSwissDrivingLicense","swissDrivingLicenseFields","parseDocumentNumberOptional","documentNumber","parseTD1","TD1Fields","parseTD2","TD2Fields","parseDocumentCodePassport","parsePersonalNumber","parsePersonalNumberCheckDigit","personalNumber","cleanNumber","parseTD3","TD3Fields","parseMRZ","parsers","endLine1","substr","parse"],"mappings":"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"}