{"version":3,"file":"mrz.umd.js","sources":["../lib/formats.js","../lib/generated/states.js","../lib/parse/checkLines.js","../lib/parsers/frenchDrivingLicence/parseDocumentCode.js","../lib/parsers/cleanText.js","../lib/parsers/parseAlpha.js","../lib/parsers/parseText.js","../lib/parse/autoCorrection.js","../lib/parse/createFieldParser.js","../lib/parsers/check.js","../lib/parsers/parseCompositeCheckDigit.js","../lib/parsers/parseDate.js","../lib/parsers/parseDateCheckDigit.js","../lib/parsers/parseDocumentNumber.js","../lib/parsers/parseDocumentNumberCheckDigit.js","../lib/parsers/parseFirstName.js","../lib/parsers/parseLastName.js","../lib/parsers/parseSex.js","../lib/parsers/parseState.js","../lib/parse/fieldTemplates.js","../lib/parse/frenchDrivingLicenceFields.js","../lib/parse/getDocumentNumber.js","../lib/parse/getResult.js","../lib/parse/frenchDrivingLicence.js","../lib/parsers/parseDocumentCodeId.js","../lib/parsers/parseOptional.js","../lib/parse/frenchNationalIdFields.js","../lib/parse/frenchNationalId.js","../lib/parsers/parseNumber.js","../lib/parsers/swissDrivingLicense/checkSeparator.js","../lib/parsers/swissDrivingLicense/parseDocumentCode.js","../lib/parsers/swissDrivingLicense/parseLanguageCode.js","../lib/parsers/swissDrivingLicense/parseDocumentNumber.js","../lib/parsers/swissDrivingLicense/parseIssuingState.js","../lib/parse/swissDrivingLicenseFields.js","../lib/parse/swissDrivingLicense.js","../lib/parsers/parseDocumentNumberOptional.js","../lib/parse/td1Fields.js","../lib/parse/td1.js","../lib/parse/td2Fields.js","../lib/parse/td2.js","../lib/parsers/parseDocumentCodePassport.js","../lib/parsers/parsePersonalNumber.js","../lib/parsers/parsePersonalNumberCheckDigit.js","../lib/parse/td3Fields.js","../lib/parse/td3.js","../lib/parse/parsers.js","../lib/parse/parse.js"],"sourcesContent":["export const 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    FRENCH_DRIVING_LICENSE: 'FRENCH_DRIVING_LICENSE',\n};\n//# sourceMappingURL=formats.js.map","const states = {\n    \"AFG\": \"Afghanistan\",\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 (the)\",\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 (the)\",\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 (the)\",\n    \"CAF\": \"Central African Republic (the)\",\n    \"TCD\": \"Chad\",\n    \"CHL\": \"Chile\",\n    \"CHN\": \"China\",\n    \"CXR\": \"Christmas Island\",\n    \"CCK\": \"Cocos (Keeling) Islands (the)\",\n    \"COL\": \"Colombia\",\n    \"COM\": \"Comoros (the)\",\n    \"COD\": \"Congo (the Democratic Republic of the)\",\n    \"COG\": \"Congo (the)\",\n    \"COK\": \"Cook Islands (the)\",\n    \"CRI\": \"Costa Rica\",\n    \"HRV\": \"Croatia\",\n    \"CUB\": \"Cuba\",\n    \"CUW\": \"Curaçao\",\n    \"CYP\": \"Cyprus\",\n    \"CZE\": \"Czechia\",\n    \"CIV\": \"Côte d'Ivoire\",\n    \"DNK\": \"Denmark\",\n    \"DJI\": \"Djibouti\",\n    \"DMA\": \"Dominica\",\n    \"DOM\": \"Dominican Republic (the)\",\n    \"ECU\": \"Ecuador\",\n    \"EGY\": \"Egypt\",\n    \"SLV\": \"El Salvador\",\n    \"GNQ\": \"Equatorial Guinea\",\n    \"ERI\": \"Eritrea\",\n    \"EST\": \"Estonia\",\n    \"SWZ\": \"Eswatini\",\n    \"ETH\": \"Ethiopia\",\n    \"FLK\": \"Falkland Islands (the) [Malvinas]\",\n    \"FRO\": \"Faroe Islands (the)\",\n    \"FJI\": \"Fiji\",\n    \"FIN\": \"Finland\",\n    \"FRA\": \"France\",\n    \"GUF\": \"French Guiana\",\n    \"PYF\": \"French Polynesia\",\n    \"ATF\": \"French Southern Territories (the)\",\n    \"GAB\": \"Gabon\",\n    \"GMB\": \"Gambia (the)\",\n    \"GEO\": \"Georgia\",\n    \"DEU\": \"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 (the)\",\n    \"HND\": \"Honduras\",\n    \"HKG\": \"Hong Kong\",\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 (the Democratic People's Republic of)\",\n    \"KOR\": \"Korea (the Republic of)\",\n    \"KWT\": \"Kuwait\",\n    \"KGZ\": \"Kyrgyzstan\",\n    \"LAO\": \"Lao People's Democratic Republic (the)\",\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\",\n    \"MDG\": \"Madagascar\",\n    \"MWI\": \"Malawi\",\n    \"MYS\": \"Malaysia\",\n    \"MDV\": \"Maldives\",\n    \"MLI\": \"Mali\",\n    \"MLT\": \"Malta\",\n    \"MHL\": \"Marshall Islands (the)\",\n    \"MTQ\": \"Martinique\",\n    \"MRT\": \"Mauritania\",\n    \"MUS\": \"Mauritius\",\n    \"MYT\": \"Mayotte\",\n    \"MEX\": \"Mexico\",\n    \"FSM\": \"Micronesia (Federated States of)\",\n    \"MDA\": \"Moldova (the 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 (the)\",\n    \"NCL\": \"New Caledonia\",\n    \"NZL\": \"New Zealand\",\n    \"NIC\": \"Nicaragua\",\n    \"NER\": \"Niger (the)\",\n    \"NGA\": \"Nigeria\",\n    \"NIU\": \"Niue\",\n    \"NFK\": \"Norfolk Island\",\n    \"MKD\": \"North Macedonia\",\n    \"MNP\": \"Northern Mariana Islands (the)\",\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 (the)\",\n    \"PCN\": \"Pitcairn\",\n    \"POL\": \"Poland\",\n    \"PRT\": \"Portugal\",\n    \"PRI\": \"Puerto Rico\",\n    \"QAT\": \"Qatar\",\n    \"ROU\": \"Romania\",\n    \"RUS\": \"Russian Federation (the)\",\n    \"RWA\": \"Rwanda\",\n    \"REU\": \"Réunion\",\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 (the)\",\n    \"SUR\": \"Suriname\",\n    \"SJM\": \"Svalbard and Jan Mayen\",\n    \"SWE\": \"Sweden\",\n    \"CHE\": \"Switzerland\",\n    \"SYR\": \"Syrian Arab Republic (the)\",\n    \"TWN\": \"Taiwan (Province of China)\",\n    \"TJK\": \"Tajikistan\",\n    \"TZA\": \"Tanzania, the 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 (the)\",\n    \"TUV\": \"Tuvalu\",\n    \"UGA\": \"Uganda\",\n    \"UKR\": \"Ukraine\",\n    \"ARE\": \"United Arab Emirates (the)\",\n    \"GBR\": \"United Kingdom of Great Britain and Northern Ireland (the)\",\n    \"UMI\": \"United States Minor Outlying Islands (the)\",\n    \"USA\": \"United States of America (the)\",\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    \"ALA\": \"Åland Islands\",\n    \"GBD\": \"British Overseas Territories Citizen\",\n    \"GBN\": \"British National (Overseas)\",\n    \"GBO\": \"British Overseas Citizen\",\n    \"GBS\": \"British Subject\",\n    \"GBP\": \"British Protected Person\",\n    \"RKS\": \"Republic of Kosovo\",\n    \"D\": \"Germany\",\n    \"XXK\": \"Kosovo\",\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    \"XCE\": \"Council of Europe\",\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    \"XES\": \"Organization of Eastern Caribbean States (OECS)\",\n    \"XOM\": \"Sovereign Military Order of Malta or one of its emissaries\",\n    \"XDC\": \"Southern African Development Community\",\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    \"XXC\": \"Refugee, other than as defined under the code XXB above\",\n    \"XXX\": \"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    \"ANT\": \"Netherlands Antilles\",\n    \"NTZ\": \"Neutral Zone\"\n};\nObject.freeze(states);\nexport default states;\n//# sourceMappingURL=states.js.map","export function 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('lines must be composed of only alphanumerical characters and \"<\"');\n        }\n    }\n    return lines;\n}\n//# sourceMappingURL=checkLines.js.map","/**\n * D1 seems to be the most common,\n * but with Google image search we can find some B1, A1, A2\n */\nconst knownPrefixCode = ['A', 'B', 'D'];\nexport default function parseDocumentCode(source) {\n    if (source.length !== 2) {\n        throw new Error(`invalid document code: ${source}. must be 2 char length`);\n    }\n    const [first, second] = source;\n    validateFirstChar(first, source);\n    validateSecondChar(second, source);\n    return `${first}${second}`;\n}\nfunction validateFirstChar(char, source) {\n    if (!knownPrefixCode.includes(char)) {\n        const formatter = new Intl.ListFormat('en-US', {\n            style: 'short',\n            type: 'disjunction',\n        });\n        throw new Error(`invalid document code: ${source}. First character must be ${formatter.format(knownPrefixCode)}`);\n    }\n}\nfunction validateSecondChar(char, source) {\n    const num = Number.parseInt(char, 10);\n    if (Number.isNaN(num)) {\n        throw new Error(`invalid document code number: ${source}. Second character must be a number`);\n    }\n}\n//# sourceMappingURL=parseDocumentCode.js.map","export function cleanText(string) {\n    return string.replaceAll(/<+$/g, '').replaceAll('<', ' ');\n}\n//# sourceMappingURL=cleanText.js.map","import { cleanText } from \"./cleanText.js\";\nexport function parseAlpha(source) {\n    if (!source.match(/^[A-Z<]+$/)) {\n        throw new Error(`invalid text: ${source}. Must be only alphabetical with <`);\n    }\n    return cleanText(source);\n}\n//# sourceMappingURL=parseAlpha.js.map","import { cleanText } from \"./cleanText.js\";\nexport function parseText(source, initialStart, regexp = /^[0-9A-Z<]+$/) {\n    const cleaned = cleanText(source);\n    if (!regexp.test(source)) {\n        throw new ParseTextError(`invalid text: ${source}. Must match the following regular expression: ${regexp.toString()}`, cleaned, initialStart, initialStart + cleaned.length);\n    }\n    return cleaned;\n}\nexport class ParseTextError extends Error {\n    value;\n    start;\n    end;\n    constructor(message, value, start, end) {\n        super(message);\n        this.value = value;\n        this.start = start;\n        this.end = end;\n    }\n}\n//# sourceMappingURL=parseText.js.map","import { fieldTypes } from \"./createFieldParser.js\";\nconst numberToLetterMismatches = {\n    '8': 'B',\n    '6': 'G',\n    '0': 'O',\n    '1': 'I',\n    '5': 'S',\n    '2': 'Z',\n};\nconst letterToNumberMismatches = {\n    B: '8',\n    G: '6',\n    O: '0',\n    I: '1',\n    S: '5',\n    Z: '2',\n};\nexport function letterToNumber(char) {\n    if (letterToNumberMismatches[char]) {\n        return letterToNumberMismatches[char];\n    }\n    return char;\n}\nexport function numberToLetter(char) {\n    if (numberToLetterMismatches[char]) {\n        return numberToLetterMismatches[char];\n    }\n    return char;\n}\nexport function autoCorrection(source, fieldOptions) {\n    let correctedText = '';\n    const autocorrect = [];\n    const chars = source.split('');\n    for (const [i, char] of chars.entries()) {\n        if (fieldOptions.type === fieldTypes.ALPHABETIC) {\n            const correctedChar = numberToLetter(char);\n            if (correctedChar !== char) {\n                autocorrect.push({\n                    line: fieldOptions.line,\n                    column: fieldOptions.start + i,\n                    original: char,\n                    corrected: correctedChar,\n                });\n            }\n            correctedText += correctedChar;\n        }\n        else if (fieldOptions.type === fieldTypes.NUMERIC) {\n            const correctedChar = letterToNumber(char);\n            if (correctedChar !== char) {\n                autocorrect.push({\n                    line: fieldOptions.line,\n                    column: fieldOptions.start + i,\n                    original: char,\n                    corrected: correctedChar,\n                });\n            }\n            correctedText += correctedChar;\n        }\n        else {\n            correctedText += char;\n        }\n    }\n    return { correctedText, autocorrect };\n}\n//# sourceMappingURL=autoCorrection.js.map","import { ParseTextError } from \"../parsers/parseText.js\";\nimport { autoCorrection } from \"./autoCorrection.js\";\nexport const fieldTypes = {\n    NUMERIC: 'NUMERIC',\n    ALPHABETIC: 'ALPHABETIC',\n    ALPHANUMERIC: 'ALPHANUMERIC',\n};\nexport default function createFieldParser(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    const mainRange = {\n        line: fieldOptions.line,\n        start: fieldOptions.start,\n        end: fieldOptions.end,\n    };\n    const ranges = [mainRange];\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    const parser = (lines, autocorrect) => {\n        const source = getText(lines, fieldOptions);\n        const related = fieldOptions.related || [];\n        const textRelated = 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                ...range,\n                raw: getText(lines, range),\n            })),\n            line: 0,\n            start: 0,\n            end: 0,\n            autocorrect: [],\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            const parsed = fieldOptions.parser(source, ...textRelated);\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        }\n        catch (error) {\n            result.error = error.message;\n            if (error instanceof ParseTextError) {\n                result.value = error.value;\n                result.start = range.start + error.start;\n                result.end = range.start + error.end;\n            }\n        }\n        for (const autocorrectElement of autocorrect) {\n            if (autocorrectElement.line === result.line &&\n                autocorrectElement.column >= result.start &&\n                autocorrectElement.column < result.end) {\n                result.autocorrect.push(autocorrectElement);\n            }\n        }\n        return result;\n    };\n    const autocorrector = (lines) => {\n        const originalText = getText(lines, fieldOptions);\n        return {\n            ...autoCorrection(originalText, fieldOptions),\n            range: mainRange,\n        };\n    };\n    return { parser, autocorrector };\n}\nfunction getText(lines, options) {\n    const line = lines[options.line];\n    return line.slice(options.start, options.end);\n}\nfunction checkType(options, name, type) {\n    if (typeof options[name] !== type) {\n        throw new TypeError(`${String(name)} must be a ${type}`);\n    }\n}\n//# sourceMappingURL=createFieldParser.js.map","export function check(string, value) {\n    let code = 0;\n    const factors = [7, 3, 1];\n    for (let i = 0; i < string.length; i++) {\n        // eslint-disable-next-line unicorn/prefer-code-point\n        let charCode = string.charCodeAt(i);\n        if (charCode === 60)\n            charCode = 0;\n        if (charCode >= 65)\n            charCode -= 55;\n        if (charCode >= 48)\n            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//# sourceMappingURL=check.js.map","import { check } from \"./check.js\";\nexport default function parseCompositeCheckDigit(checkDigit, ...sources) {\n    const source = sources.join('');\n    check(source, checkDigit);\n    return checkDigit;\n}\n//# sourceMappingURL=parseCompositeCheckDigit.js.map","export default function parseDate(value) {\n    if (!value.match(/^[0-9<]{4,6}$/)) {\n        throw new Error(`invalid date: ${value}`);\n    }\n    const month = value.slice(2, 4);\n    if (month !== '<<' &&\n        (Number.parseInt(month, 10) < 1 || Number.parseInt(month, 10) > 12)) {\n        throw new Error(`invalid date month: ${month}`);\n    }\n    if (value.length === 6) {\n        const day = value.slice(4, 6);\n        if (day !== '<<' &&\n            (Number.parseInt(day, 10) < 1 || Number.parseInt(day, 10) > 31)) {\n            throw new Error(`invalid date day: ${day}`);\n        }\n    }\n    return value;\n}\n//# sourceMappingURL=parseDate.js.map","import { check } from \"./check.js\";\nexport default function parseCheckDigit(checkDigit, value) {\n    check(value, checkDigit);\n    return checkDigit;\n}\n//# sourceMappingURL=parseDateCheckDigit.js.map","import { cleanText } from \"./cleanText.js\";\nexport default function parseDocumentNumber(source, checkDigit, optional) {\n    let end, value;\n    if (checkDigit === '<' && optional) {\n        const firstFiller = optional.indexOf('<');\n        const tail = optional.slice(0, firstFiller - 1);\n        value = source + tail;\n        end = value.length + 1;\n    }\n    else {\n        value = cleanText(source);\n        end = value.length;\n    }\n    return {\n        value,\n        start: 0,\n        end,\n    };\n}\n//# sourceMappingURL=parseDocumentNumber.js.map","import { check } from \"./check.js\";\nexport default function parseDocumentNumberCheckDigit(checkDigit, source, optional) {\n    if (checkDigit === '<' && optional) {\n        const firstFiller = optional.indexOf('<');\n        const tail = optional.slice(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    }\n    else {\n        check(source, checkDigit);\n        return checkDigit;\n    }\n}\n//# sourceMappingURL=parseDocumentNumberCheckDigit.js.map","import { parseText } from \"./parseText.js\";\nexport default function parseFirstName(source) {\n    const withoutStart = source.replace(/.*?<{2}/, '');\n    const value = parseText(withoutStart, source.length - withoutStart.length, /^[A-Z<]+<*$/);\n    const start = source.length - withoutStart.length;\n    return {\n        value,\n        start,\n        end: start + value.length,\n    };\n}\n//# sourceMappingURL=parseFirstName.js.map","import { parseText } from \"./parseText.js\";\nexport default function parseLastName(source) {\n    const parsed = parseText(source.replace(/<{2}.*$/, ''), 0, /^[A-Z<]*<*$/);\n    return {\n        value: parsed,\n        start: 0,\n        end: parsed.length,\n    };\n}\n//# sourceMappingURL=parseLastName.js.map","export default 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//# sourceMappingURL=parseSex.js.map","import STATES from \"../generated/states.js\";\nimport { cleanText } from \"./cleanText.js\";\nexport default function parseState(source) {\n    source = cleanText(source);\n    const 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//# sourceMappingURL=parseState.js.map","import parseCompositeCheckDigit from \"../parsers/parseCompositeCheckDigit.js\";\nimport parseDate from \"../parsers/parseDate.js\";\nimport parseDateCheckDigit from \"../parsers/parseDateCheckDigit.js\";\nimport parseDocumentNumber from \"../parsers/parseDocumentNumber.js\";\nimport parseDocumentNumberCheckDigit from \"../parsers/parseDocumentNumberCheckDigit.js\";\nimport parseFirstName from \"../parsers/parseFirstName.js\";\nimport parseLastName from \"../parsers/parseLastName.js\";\nimport parseSex from \"../parsers/parseSex.js\";\nimport parseState from \"../parsers/parseState.js\";\nimport { fieldTypes } from \"./createFieldParser.js\";\nconst documentNumberTemplate = {\n    label: 'Document number',\n    field: 'documentNumber',\n    parser: parseDocumentNumber,\n    type: fieldTypes.ALPHANUMERIC,\n};\nconst documentNumberCheckDigitTemplate = {\n    label: 'Document number check digit',\n    field: 'documentNumberCheckDigit',\n    parser: parseDocumentNumberCheckDigit,\n    type: fieldTypes.NUMERIC,\n};\nconst documentCodeTemplate = {\n    label: 'Document code',\n    field: 'documentCode',\n    type: fieldTypes.ALPHABETIC,\n};\nconst documentCodeAlphaNumTemplate = {\n    label: 'Document code',\n    field: 'documentCode',\n    type: fieldTypes.ALPHANUMERIC,\n};\nconst nationalityTemplate = {\n    label: 'Nationality',\n    field: 'nationality',\n    parser: parseState,\n    type: fieldTypes.ALPHABETIC,\n};\nconst sexTemplate = {\n    label: 'Sex',\n    field: 'sex',\n    parser: parseSex,\n    type: fieldTypes.ALPHABETIC,\n};\nconst expirationDateTemplate = {\n    label: 'Expiration date',\n    field: 'expirationDate',\n    parser: parseDate,\n    type: fieldTypes.NUMERIC,\n};\nconst expirationDateCheckDigitTemplate = {\n    label: 'Expiration date check digit',\n    field: 'expirationDateCheckDigit',\n    parser: parseDateCheckDigit,\n    type: fieldTypes.NUMERIC,\n};\nconst compositeCheckDigitTemplate = {\n    label: 'Composite check digit',\n    field: 'compositeCheckDigit',\n    parser: parseCompositeCheckDigit,\n    type: fieldTypes.NUMERIC,\n};\nconst birthDateTemplate = {\n    label: 'Birth date',\n    field: 'birthDate',\n    parser: parseDate,\n    type: fieldTypes.NUMERIC,\n};\nconst birthDateCheckDigitTemplate = {\n    label: 'Birth date check digit',\n    field: 'birthDateCheckDigit',\n    parser: parseDateCheckDigit,\n    type: fieldTypes.NUMERIC,\n};\nconst issueDateTemplate = {\n    label: 'Issue date',\n    field: 'issueDate',\n    parser: parseDate,\n    type: fieldTypes.NUMERIC,\n};\nconst firstNameTemplate = {\n    label: 'First name',\n    field: 'firstName',\n    parser: parseFirstName,\n    type: fieldTypes.ALPHABETIC,\n};\nconst lastNameTemplate = {\n    label: 'Last name',\n    field: 'lastName',\n    parser: parseLastName,\n    type: fieldTypes.ALPHABETIC,\n};\nconst issuingStateTemplate = {\n    label: 'Issuing state',\n    field: 'issuingState',\n    parser: parseState,\n    type: fieldTypes.ALPHABETIC,\n};\nexport { birthDateCheckDigitTemplate, birthDateTemplate, compositeCheckDigitTemplate, documentCodeAlphaNumTemplate, documentCodeTemplate, documentNumberCheckDigitTemplate, documentNumberTemplate, expirationDateCheckDigitTemplate, expirationDateTemplate, firstNameTemplate, issueDateTemplate, issuingStateTemplate, lastNameTemplate, nationalityTemplate, sexTemplate, };\n//# sourceMappingURL=fieldTemplates.js.map","import parseDocumentCode from \"../parsers/frenchDrivingLicence/parseDocumentCode.js\";\nimport { parseAlpha } from \"../parsers/parseAlpha.js\";\nimport createFieldParser from \"./createFieldParser.js\";\nimport { compositeCheckDigitTemplate, documentCodeAlphaNumTemplate, documentNumberCheckDigitTemplate, documentNumberTemplate, expirationDateTemplate, issuingStateTemplate, lastNameTemplate, } from \"./fieldTemplates.js\";\nconst fields = [\n    {\n        ...documentCodeAlphaNumTemplate,\n        line: 0,\n        start: 0,\n        end: 2,\n        parser: parseDocumentCode,\n    },\n    { ...issuingStateTemplate, line: 0, start: 2, end: 5 },\n    { ...documentNumberTemplate, line: 0, start: 5, end: 14 },\n    {\n        ...documentNumberCheckDigitTemplate,\n        line: 0,\n        start: 14,\n        end: 15,\n        related: [\n            {\n                line: 0,\n                start: 0,\n                end: 14,\n            },\n        ],\n    },\n    { ...expirationDateTemplate, line: 0, start: 15, end: 21 },\n    { ...lastNameTemplate, line: 0, start: 21, end: 29, parser: parseAlpha },\n    {\n        ...compositeCheckDigitTemplate,\n        line: 0,\n        start: 29,\n        end: 30,\n        related: [\n            {\n                line: 0,\n                start: 0,\n                end: 29,\n            },\n        ],\n    },\n];\nexport default fields.map(createFieldParser);\n//# sourceMappingURL=frenchDrivingLicenceFields.js.map","export function getDocumentNumber(format, fields) {\n    switch (format) {\n        case 'TD1':\n        case 'TD2':\n        case 'TD3':\n        case 'FRENCH_DRIVING_LICENSE':\n            return buildDocumentNumber(fields.documentNumber);\n        case 'FRENCH_NATIONAL_ID':\n            return buildDocumentNumber(fields.issueDate, fields.administrativeCode2, fields.documentNumber);\n        case 'SWISS_DRIVING_LICENSE':\n            return buildDocumentNumber(fields.pinCode, fields.versionNumber);\n        default:\n            assertUnreachableFormat(format);\n    }\n}\nfunction buildDocumentNumber(...parts) {\n    let result = '';\n    for (const part of parts) {\n        if (!part) {\n            return null;\n        }\n        result += part;\n    }\n    return result;\n}\nfunction assertUnreachableFormat(format) {\n    // eslint-disable-next-line @typescript-eslint/restrict-template-expressions\n    throw new Error(`unrecognized format: ${format}`);\n}\n//# sourceMappingURL=getDocumentNumber.js.map","import { getDocumentNumber } from \"./getDocumentNumber.js\";\nfunction getDetails(lines, fieldParsers, autocorrectArray) {\n    const details = [];\n    for (const [i, { parser }] of fieldParsers.entries()) {\n        details.push(parser(lines, autocorrectArray[i]));\n    }\n    return details;\n}\nfunction getFields(details) {\n    const fields = {};\n    let allValid = true;\n    for (const detail of details) {\n        if (!detail.valid) {\n            allValid = false;\n        }\n        if (detail.field) {\n            fields[detail.field] = detail.valid ? detail.value : null;\n        }\n    }\n    return { fields, allValid };\n}\nfunction getCorrection(lines, fieldParsers, autocorrect) {\n    const corrected = lines.slice();\n    let autocorrectArray = [];\n    if (autocorrect) {\n        for (const { autocorrector } of fieldParsers) {\n            const { autocorrect, correctedText, range } = autocorrector(lines);\n            autocorrectArray.push(autocorrect);\n            const line = corrected[range.line];\n            corrected[range.line] =\n                line.slice(0, range.start) + correctedText + line.slice(range.end);\n        }\n    }\n    else {\n        autocorrectArray = new Array(fieldParsers.length).fill([]);\n    }\n    return { corrected, autocorrectArray };\n}\nexport function getResult(format, lines, fieldParsers, options) {\n    const { autocorrect = false } = options;\n    const { corrected, autocorrectArray } = getCorrection(lines, fieldParsers, autocorrect);\n    const details = getDetails(corrected, fieldParsers, autocorrectArray);\n    const fields = getFields(details);\n    return {\n        format,\n        details,\n        fields: fields.fields,\n        documentNumber: getDocumentNumber(format, fields.fields),\n        valid: fields.allValid,\n    };\n}\n//# sourceMappingURL=getResult.js.map","import { formats } from \"../formats.js\";\nimport frenchDrivingLicenceFields from \"./frenchDrivingLicenceFields.js\";\nimport { getResult } from \"./getResult.js\";\nconst FRENCH_DRIVING_LICENSE = formats.FRENCH_DRIVING_LICENSE;\nexport default function parseFrenchDrivingLicense(lines, options) {\n    if (lines.length !== 1) {\n        throw new Error(`invalid number of lines: ${lines.length}: Must be 1 for ${FRENCH_DRIVING_LICENSE}`);\n    }\n    if (lines[0].length !== 30) {\n        throw new Error(`invalid number of characters for line 1: ${lines[0].length}. Must be 30 for ${FRENCH_DRIVING_LICENSE}`);\n    }\n    return getResult(FRENCH_DRIVING_LICENSE, lines, frenchDrivingLicenceFields, options);\n}\n//# sourceMappingURL=frenchDrivingLicence.js.map","export default function parseDocumentCodeId(source) {\n    const first = source.charAt(0);\n    if (first !== 'A' && first !== 'C' && first !== 'I') {\n        throw new Error(`invalid document code: ${source}. First character must be A, C or I`);\n    }\n    const second = source.charAt(1);\n    if (second === 'V') {\n        throw new Error(`invalid document code: ${source}. Second character may not be V`);\n    }\n    if (second === '<') {\n        return {\n            value: first,\n            start: 0,\n            end: 1,\n        };\n    }\n    else {\n        return source;\n    }\n}\n//# sourceMappingURL=parseDocumentCodeId.js.map","import { parseText } from \"./parseText.js\";\nexport function parseOptional(source) {\n    const value = parseText(source, 0);\n    return {\n        value,\n        start: 0,\n        end: value.length,\n    };\n}\n//# sourceMappingURL=parseOptional.js.map","import { parseAlpha } from \"../parsers/parseAlpha.js\";\nimport parseDocumentCode from \"../parsers/parseDocumentCodeId.js\";\nimport { parseOptional } from \"../parsers/parseOptional.js\";\nimport createFieldParser from \"./createFieldParser.js\";\nimport { birthDateCheckDigitTemplate, birthDateTemplate, compositeCheckDigitTemplate, documentCodeTemplate, documentNumberCheckDigitTemplate, documentNumberTemplate, firstNameTemplate, issueDateTemplate, issuingStateTemplate, lastNameTemplate, sexTemplate, } from \"./fieldTemplates.js\";\nconst fields = [\n    {\n        ...documentCodeTemplate,\n        line: 0,\n        start: 0,\n        end: 2,\n        parser: parseDocumentCode,\n    },\n    { ...issuingStateTemplate, line: 0, start: 2, end: 5 },\n    { ...lastNameTemplate, line: 0, start: 5, end: 30, parser: parseAlpha },\n    {\n        label: 'Administrative code',\n        field: 'administrativeCode',\n        line: 0,\n        start: 30,\n        end: 36,\n        parser: parseOptional,\n    },\n    { ...issueDateTemplate, line: 1, start: 0, end: 4 },\n    {\n        label: 'Administrative code 2',\n        field: 'administrativeCode2',\n        line: 1,\n        start: 4,\n        end: 7,\n        parser: parseOptional,\n    },\n    { ...documentNumberTemplate, line: 1, start: 7, end: 12 },\n    {\n        ...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    { ...firstNameTemplate, line: 1, start: 13, end: 27, parser: parseAlpha },\n    { ...birthDateTemplate, line: 1, start: 27, end: 33 },\n    {\n        ...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    { ...sexTemplate, line: 1, start: 34, end: 35 },\n    {\n        ...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];\nexport default fields.map(createFieldParser);\n//# sourceMappingURL=frenchNationalIdFields.js.map","import { formats } from \"../formats.js\";\nimport frenchNationalIdFields from \"./frenchNationalIdFields.js\";\nimport { getResult } from \"./getResult.js\";\nconst FRENCH_NATIONAL_ID = formats.FRENCH_NATIONAL_ID;\nexport default function parseFrenchNationalId(lines, options) {\n    if (lines.length !== 2) {\n        throw new Error(`invalid number of lines: ${lines.length}: Must be 2 for ${FRENCH_NATIONAL_ID}`);\n    }\n    for (const [index, line] of lines.entries()) {\n        if (line.length !== 36) {\n            throw new Error(`invalid number of characters for line ${index + 1}: ${line.length}. Must be 36 for ${FRENCH_NATIONAL_ID}`);\n        }\n    }\n    return getResult(FRENCH_NATIONAL_ID, lines, frenchNationalIdFields, options);\n}\n//# sourceMappingURL=frenchNationalId.js.map","export function parseNumber(source) {\n    if (!source.match(/^[0-9]+$/)) {\n        throw new Error(`invalid number: ${source}`);\n    }\n    return source;\n}\n//# sourceMappingURL=parseNumber.js.map","export function checkSeparator(source) {\n    if (!source.match(/^<*$/)) {\n        throw new Error(`invalid separator: ${source}. Must be composed only of \"<\"`);\n    }\n    return source;\n}\n//# sourceMappingURL=checkSeparator.js.map","export default function parseDocumentCode(source) {\n    if (source !== 'FA') {\n        throw new Error(`invalid document code: ${source}. Must be FA`);\n    }\n    return source;\n}\n//# sourceMappingURL=parseDocumentCode.js.map","export default 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(`invalid languageCode code: ${languageCode}. Must be D, F, I or R`);\n    }\n}\n//# sourceMappingURL=parseLanguageCode.js.map","import parseLanguageCode from \"./parseLanguageCode.js\";\nexport default function parseDocumentNumber(source) {\n    // swiss driving license number\n    const first = source.slice(0, 3);\n    const second = source.slice(3, 6);\n    const languageCode = source.charAt(6);\n    const end = source.slice(7);\n    if (!first.match(/^[A-Z0-9]{3}$/)) {\n        throw new Error(`invalid document number: ${source}. Must start with three alphanumeric digits`);\n    }\n    if (!second.match(/^[0-9]{3}$/)) {\n        throw new Error(`invalid document number: ${source}. Must have numeric digits in positions 4, 5 and 6`);\n    }\n    if (end !== '<<') {\n        throw new Error(`invalid document number: ${source}. Must end with <<`);\n    }\n    // calling this method to throw if languageCode invalid\n    parseLanguageCode(languageCode);\n    return {\n        value: source.slice(0, 7),\n        start: 0,\n        end: 7,\n    };\n}\n//# sourceMappingURL=parseDocumentNumber.js.map","export default 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//# sourceMappingURL=parseIssuingState.js.map","import { parseNumber } from \"../parsers/parseNumber.js\";\nimport { checkSeparator } from \"../parsers/swissDrivingLicense/checkSeparator.js\";\nimport parseDocumentCode from \"../parsers/swissDrivingLicense/parseDocumentCode.js\";\nimport parseDocumentNumber from \"../parsers/swissDrivingLicense/parseDocumentNumber.js\";\nimport parseIssuingState from \"../parsers/swissDrivingLicense/parseIssuingState.js\";\nimport parseLanguageCode from \"../parsers/swissDrivingLicense/parseLanguageCode.js\";\nimport createFieldParser, { fieldTypes } from \"./createFieldParser.js\";\nimport { birthDateTemplate, documentCodeTemplate, documentNumberTemplate, firstNameTemplate, issuingStateTemplate, lastNameTemplate, } from \"./fieldTemplates.js\";\nconst fields = [\n    {\n        ...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        type: fieldTypes.ALPHABETIC,\n    },\n    {\n        ...documentCodeTemplate,\n        line: 1,\n        start: 0,\n        end: 2,\n        parser: parseDocumentCode,\n    },\n    {\n        ...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        type: fieldTypes.NUMERIC,\n    },\n    {\n        label: 'Version number',\n        field: 'versionNumber',\n        line: 1,\n        start: 14,\n        end: 17,\n        parser: parseNumber,\n        type: fieldTypes.NUMERIC,\n    },\n    {\n        label: 'Separator 1',\n        field: null,\n        line: 1,\n        start: 17,\n        end: 19,\n        parser: checkSeparator,\n    },\n    { ...birthDateTemplate, line: 1, start: 19, end: 25 },\n    {\n        label: 'Separator 2',\n        field: null,\n        line: 1,\n        start: 25,\n        end: 30,\n        parser: checkSeparator,\n    },\n    { ...lastNameTemplate, line: 2, start: 0, end: 30 },\n    { ...firstNameTemplate, line: 2, start: 0, end: 30 },\n];\nexport default fields.map(createFieldParser);\n//# sourceMappingURL=swissDrivingLicenseFields.js.map","import { formats } from \"../formats.js\";\nimport { getResult } from \"./getResult.js\";\nimport swissDrivingLicenseFields from \"./swissDrivingLicenseFields.js\";\nconst SWISS_DRIVING_LICENSE = formats.SWISS_DRIVING_LICENSE;\nexport default function parseSwissDrivingLicense(lines, options) {\n    if (lines.length !== 3) {\n        throw new Error(`invalid number of lines: ${lines.length}: Must be 3 for ${SWISS_DRIVING_LICENSE}`);\n    }\n    if (lines[0].length !== 9) {\n        throw new Error(`invalid number of characters for line 1: ${lines[0].length}. Must be 9 for ${SWISS_DRIVING_LICENSE}`);\n    }\n    if (lines[1].length !== 30) {\n        throw new Error(`invalid number of characters for line 2: ${lines[1].length}. Must be 30 for ${SWISS_DRIVING_LICENSE}`);\n    }\n    if (lines[2].length !== 30) {\n        throw new Error(`invalid number of characters for line 3: ${lines[2].length}. Must be 30 for ${SWISS_DRIVING_LICENSE}`);\n    }\n    return getResult(SWISS_DRIVING_LICENSE, lines, swissDrivingLicenseFields, options);\n}\n//# sourceMappingURL=swissDrivingLicense.js.map","import { parseText } from \"./parseText.js\";\nexport function parseDocumentNumberOptional(optional, checkDigit) {\n    if (checkDigit === '<') {\n        const firstFiller = optional.indexOf('<');\n        const value = parseText(optional.slice(firstFiller + 1), firstFiller + 1);\n        return {\n            value,\n            start: firstFiller + 1,\n            end: firstFiller + 1 + value.length,\n        };\n    }\n    else {\n        const value = parseText(optional, 0);\n        return {\n            value,\n            start: 0,\n            end: value.length,\n        };\n    }\n}\n//# sourceMappingURL=parseDocumentNumberOptional.js.map","import parseDocumentCode from \"../parsers/parseDocumentCodeId.js\";\nimport { parseDocumentNumberOptional } from \"../parsers/parseDocumentNumberOptional.js\";\nimport { parseOptional } from \"../parsers/parseOptional.js\";\nimport createFieldParser from \"./createFieldParser.js\";\nimport { birthDateCheckDigitTemplate, birthDateTemplate, compositeCheckDigitTemplate, documentCodeTemplate, documentNumberCheckDigitTemplate, documentNumberTemplate, expirationDateCheckDigitTemplate, expirationDateTemplate, firstNameTemplate, issuingStateTemplate, lastNameTemplate, nationalityTemplate, sexTemplate, } from \"./fieldTemplates.js\";\nconst fields = [\n    {\n        ...documentCodeTemplate,\n        line: 0,\n        start: 0,\n        end: 2,\n        parser: parseDocumentCode,\n    },\n    { ...issuingStateTemplate, line: 0, start: 2, end: 5 },\n    {\n        ...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    {\n        ...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    { ...birthDateTemplate, start: 0, end: 6, line: 1 },\n    {\n        ...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    { ...sexTemplate, line: 1, start: 7, end: 8 },\n    { ...expirationDateTemplate, line: 1, start: 8, end: 14 },\n    {\n        ...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    { ...nationalityTemplate, line: 1, start: 15, end: 18 },\n    {\n        label: 'Optional field 2',\n        field: 'optional2',\n        line: 1,\n        start: 18,\n        end: 29,\n        parser: parseOptional,\n    },\n    {\n        ...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    { ...lastNameTemplate, line: 2, start: 0, end: 30 },\n    { ...firstNameTemplate, line: 2, start: 0, end: 30 },\n];\nexport default fields.map(createFieldParser);\n//# sourceMappingURL=td1Fields.js.map","import { formats } from \"../formats.js\";\nimport { getResult } from \"./getResult.js\";\nimport TD1Fields from \"./td1Fields.js\";\nconst TD1 = formats.TD1;\nexport default function parseTD1(lines, options) {\n    if (lines.length !== 3) {\n        throw new Error(`invalid number of lines: ${lines.length}: Must be 3 for ${TD1}`);\n    }\n    for (const [index, line] of lines.entries()) {\n        if (line.length !== 30) {\n            throw new Error(`invalid number of characters for line ${index + 1}: ${line.length}. Must be 30 for ${TD1}`);\n        }\n    }\n    return getResult(TD1, lines, TD1Fields, options);\n}\n//# sourceMappingURL=td1.js.map","import parseDocumentCode from \"../parsers/parseDocumentCodeId.js\";\nimport { parseOptional } from \"../parsers/parseOptional.js\";\nimport createFieldParser from \"./createFieldParser.js\";\nimport { birthDateCheckDigitTemplate, birthDateTemplate, compositeCheckDigitTemplate, documentCodeTemplate, documentNumberCheckDigitTemplate, documentNumberTemplate, expirationDateCheckDigitTemplate, expirationDateTemplate, firstNameTemplate, issuingStateTemplate, lastNameTemplate, nationalityTemplate, sexTemplate, } from \"./fieldTemplates.js\";\nconst fields = [\n    {\n        ...documentCodeTemplate,\n        line: 0,\n        start: 0,\n        end: 2,\n        parser: parseDocumentCode,\n    },\n    { ...issuingStateTemplate, line: 0, start: 2, end: 5 },\n    { ...lastNameTemplate, line: 0, start: 5, end: 36 },\n    { ...firstNameTemplate, line: 0, start: 5, end: 36 },\n    {\n        ...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    {\n        ...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    { ...nationalityTemplate, line: 1, start: 10, end: 13 },\n    { ...birthDateTemplate, line: 1, start: 13, end: 19 },\n    {\n        ...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    { ...sexTemplate, line: 1, start: 20, end: 21 },\n    { ...expirationDateTemplate, line: 1, start: 21, end: 27 },\n    {\n        ...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    {\n        ...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];\nexport default fields.map(createFieldParser);\n//# sourceMappingURL=td2Fields.js.map","import { formats } from \"../formats.js\";\nimport { getResult } from \"./getResult.js\";\nimport TD2Fields from \"./td2Fields.js\";\nconst TD2 = formats.TD2;\nexport default function parseTD2(lines, options) {\n    if (lines.length !== 2) {\n        throw new Error(`invalid number of lines: ${lines.length}: Must be 2 for ${TD2}`);\n    }\n    for (const [index, line] of lines.entries()) {\n        if (line.length !== 36) {\n            throw new Error(`invalid number of characters for line ${index + 1}: ${line.length}. Must be 36 for TD2`);\n        }\n    }\n    return getResult(TD2, lines, TD2Fields, options);\n}\n//# sourceMappingURL=td2.js.map","export default function parseDocumentCodePassport(source) {\n    const first = source.charAt(0);\n    if (first !== 'P') {\n        throw new Error(`invalid document code: ${source}. First character must be P`);\n    }\n    const second = source.charAt(1);\n    if (!second.match(/[A-Z<]/)) {\n        throw new Error(`invalid document code: ${source}. Second character must be a letter or <`);\n    }\n    if (second === '<') {\n        return {\n            value: first,\n            start: 0,\n            end: 1,\n        };\n    }\n    else {\n        return source;\n    }\n}\n//# sourceMappingURL=parseDocumentCodePassport.js.map","import { parseText } from \"./parseText.js\";\nexport function parsePersonalNumber(source) {\n    const value = parseText(source, 0, /^[A-Z0-9<]+<*$/);\n    return {\n        value,\n        start: 0,\n        end: value.length,\n    };\n}\n//# sourceMappingURL=parsePersonalNumber.js.map","import { check } from \"./check.js\";\nimport { cleanText } from \"./cleanText.js\";\nexport function parsePersonalNumberCheckDigit(checkDigit, personalNumber) {\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        }\n        else {\n            return checkDigit;\n        }\n    }\n    check(personalNumber, checkDigit);\n    return checkDigit;\n}\n//# sourceMappingURL=parsePersonalNumberCheckDigit.js.map","import parseDocumentCode from \"../parsers/parseDocumentCodePassport.js\";\nimport { parsePersonalNumber } from \"../parsers/parsePersonalNumber.js\";\nimport { parsePersonalNumberCheckDigit } from \"../parsers/parsePersonalNumberCheckDigit.js\";\nimport createFieldParser from \"./createFieldParser.js\";\nimport { birthDateCheckDigitTemplate, birthDateTemplate, compositeCheckDigitTemplate, documentCodeTemplate, documentNumberCheckDigitTemplate, documentNumberTemplate, expirationDateCheckDigitTemplate, expirationDateTemplate, firstNameTemplate, issuingStateTemplate, lastNameTemplate, nationalityTemplate, sexTemplate, } from \"./fieldTemplates.js\";\nconst fields = [\n    {\n        ...documentCodeTemplate,\n        line: 0,\n        start: 0,\n        end: 2,\n        parser: parseDocumentCode,\n    },\n    { ...issuingStateTemplate, line: 0, start: 2, end: 5 },\n    { ...lastNameTemplate, line: 0, start: 5, end: 44 },\n    { ...firstNameTemplate, line: 0, start: 5, end: 44 },\n    { ...documentNumberTemplate, line: 1, start: 0, end: 9 },\n    {\n        ...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    { ...nationalityTemplate, line: 1, start: 10, end: 13 },\n    { ...birthDateTemplate, line: 1, start: 13, end: 19 },\n    {\n        ...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    { ...sexTemplate, line: 1, start: 20, end: 21 },\n    { ...expirationDateTemplate, line: 1, start: 21, end: 27 },\n    {\n        ...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    {\n        ...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];\nexport default fields.map(createFieldParser);\n//# sourceMappingURL=td3Fields.js.map","import { formats } from \"../formats.js\";\nimport { getResult } from \"./getResult.js\";\nimport TD3Fields from \"./td3Fields.js\";\nconst TD3 = formats.TD3;\nexport default function parseTD3(lines, options) {\n    if (lines.length !== 2) {\n        throw new Error(`invalid number of lines: ${lines.length}: Must be 2 for ${TD3}`);\n    }\n    for (const [index, line] of lines.entries()) {\n        if (line.length !== 44) {\n            throw new Error(`invalid number of characters for line ${index + 1}: ${line.length}. Must be 44 for TD3`);\n        }\n    }\n    return getResult(TD3, lines, TD3Fields, options);\n}\n//# sourceMappingURL=td3.js.map","import parseFrenchDrivingLicense from \"./frenchDrivingLicence.js\";\nimport parseFrenchNationalId from \"./frenchNationalId.js\";\nimport parseSwissDrivingLicense from \"./swissDrivingLicense.js\";\nimport parseTD1 from \"./td1.js\";\nimport parseTD2 from \"./td2.js\";\nimport parseTD3 from \"./td3.js\";\nexport const parsers = {\n    td1: parseTD1,\n    td2: parseTD2,\n    td3: parseTD3,\n    swissDrivingLicense: parseSwissDrivingLicense,\n    frenchNationalId: parseFrenchNationalId,\n    frenchDrivingLicense: parseFrenchDrivingLicense,\n};\n//# sourceMappingURL=parsers.js.map","import { checkLines } from \"./checkLines.js\";\nimport { parsers } from \"./parsers.js\";\nfunction parseMRZ(inputLines, options = {}) {\n    const lines = checkLines(inputLines);\n    switch (lines.length) {\n        case 1: {\n            switch (lines[0].length) {\n                case 30:\n                    return parsers.frenchDrivingLicense(lines, options);\n                default:\n                    throw new Error(`unrecognized document format. First line of input must have 30 (French Driving License) characters and it has a length of ${lines[0].length}`);\n            }\n        }\n        case 2:\n        case 3: {\n            switch (lines[0].length) {\n                case 30:\n                    return parsers.td1(lines, options);\n                case 36: {\n                    if (lines[0].slice(30, 35).match(/[0-9]/) ||\n                        lines[0].match(/^IDFRA/)) {\n                        return parsers.frenchNationalId(lines, options);\n                    }\n                    else {\n                        return parsers.td2(lines, options);\n                    }\n                }\n                case 44:\n                    return parsers.td3(lines, options);\n                case 9:\n                    return parsers.swissDrivingLicense(lines, options);\n                default:\n                    throw new Error(`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 and it has a length of ${lines[0].length}`);\n            }\n        }\n        default:\n            throw new Error(`unrecognized document format. Input must have one, two or three lines, found ${lines.length}`);\n    }\n}\nexport default parseMRZ;\n//# sourceMappingURL=parse.js.map"],"names":["formats","TD1","TD2","TD3","SWISS_DRIVING_LICENSE","FRENCH_NATIONAL_ID","FRENCH_DRIVING_LICENSE","states","Object","freeze","checkLines","lines","split","Array","isArray","TypeError","line","match","knownPrefixCode","parseDocumentCode","source","length","Error","first","second","validateFirstChar","validateSecondChar","char","includes","formatter","Intl","ListFormat","style","type","format","num","Number","parseInt","isNaN","cleanText","string","replaceAll","parseAlpha","parseText","initialStart","regexp","cleaned","test","ParseTextError","toString","value","start","end","constructor","message","numberToLetterMismatches","letterToNumberMismatches","B","G","O","I","S","Z","letterToNumber","numberToLetter","autoCorrection","fieldOptions","correctedText","autocorrect","chars","i","entries","fieldTypes","ALPHABETIC","correctedChar","push","column","original","corrected","NUMERIC","ALPHANUMERIC","createFieldParser","checkType","field","mainRange","ranges","related","parser","getText","textRelated","map","r","result","label","valid","range","raw","parsed","error","autocorrectElement","autocorrector","originalText","options","slice","name","String","check","code","factors","charCode","charCodeAt","parseCompositeCheckDigit","checkDigit","sources","join","parseDate","month","day","parseCheckDigit","parseDocumentNumber","optional","firstFiller","indexOf","tail","parseDocumentNumberCheckDigit","charAt","parseFirstName","withoutStart","replace","parseLastName","parseSex","parseState","state","STATES","documentNumberTemplate","documentNumberCheckDigitTemplate","documentCodeTemplate","documentCodeAlphaNumTemplate","nationalityTemplate","sexTemplate","expirationDateTemplate","expirationDateCheckDigitTemplate","parseDateCheckDigit","compositeCheckDigitTemplate","birthDateTemplate","birthDateCheckDigitTemplate","issueDateTemplate","firstNameTemplate","lastNameTemplate","issuingStateTemplate","fields","getDocumentNumber","buildDocumentNumber","documentNumber","issueDate","administrativeCode2","pinCode","versionNumber","assertUnreachableFormat","parts","part","getDetails","fieldParsers","autocorrectArray","details","getFields","allValid","detail","getCorrection","fill","getResult","parseFrenchDrivingLicense","frenchDrivingLicenceFields","parseDocumentCodeId","parseOptional","parseFrenchNationalId","index","frenchNationalIdFields","parseNumber","checkSeparator","parseLanguageCode","languageCode","parseIssuingState","parseSwissDrivingLicense","swissDrivingLicenseFields","parseDocumentNumberOptional","parseTD1","TD1Fields","parseTD2","TD2Fields","parseDocumentCodePassport","parsePersonalNumber","parsePersonalNumberCheckDigit","personalNumber","cleanNumber","parseTD3","TD3Fields","parsers","td1","td2","td3","swissDrivingLicense","frenchNationalId","frenchDrivingLicense","parseMRZ","inputLines"],"mappings":"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"}