UNPKG

nrb-qr-parser

Version:

Reads QR Code string from Malawi Registration National Bureau Identification document and converts it to a json format

61 lines (60 loc) 2.5 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.isGender = exports.formatGender = exports.isGeneralString = exports.formatDate = exports.isValidNationalIDName = exports.isFullName = exports.isMachineReadableZone = exports.isDatePattern = exports.isValidNationalID = exports.toSentenceCase = void 0; const dayjs = require("dayjs"); function toSentenceCase(str) { return str.toLowerCase().replace(/(^\w|\s\w)/g, m => m.toUpperCase()); } exports.toSentenceCase = toSentenceCase; function isValidNationalID(str) { return /^[a-zA-Z0-9]{8}$/.test(str); } exports.isValidNationalID = isValidNationalID; function isDatePattern(str) { return /\d{1,2}(?:\s|-|\/)(?:Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec|01|02|03|04|05|06|07|08|09|10|11|12)(?:\s|-|\/)\d{4}/i.test(str); } exports.isDatePattern = isDatePattern; function isMachineReadableZone(str) { return /<<*/.test(str); } exports.isMachineReadableZone = isMachineReadableZone; function isFullName(str) { return /^[A-Za-zÀ-ÖØ-öø-ÿ]+(?:['-][A-Za-zÀ-ÖØ-öø-ÿ]+)*(\s+[A-Za-zÀ-ÖØ-öø-ÿ]+(?:['-][A-Za-zÀ-ÖØ-öø-ÿ]+)*)*$/i.test(str); } exports.isFullName = isFullName; function isValidNationalIDName(str) { return /\w+,\s*\w+/i.test(`${str}`) || !isDatePattern(str) && !isMachineReadableZone(str) && !/^(Male|Female)/i.test(`${str}`); } exports.isValidNationalIDName = isValidNationalIDName; function formatDate(date) { // DD/MM/YYYY if (/\d{2}\/\d{2}\/\d{4}/i.test(date)) { const [day, month, year] = date.match(/(\d{2}\/\d{2}\/\d{4})/)[0].split("/"); return `${year}-${month}-${day}`; } if (/\d{2}(?:\s+|-|\/)(?:Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)(?:\s+|-|\/)\d{4}/i.test(date)) { return dayjs(`${date}`.replace(/-|\//g, ' '), 'DD MMM YYYY').format('YYYY-MM-DD'); } return date; } exports.formatDate = formatDate; function isGeneralString(str) { return !isValidNationalID(str) && /[A-Z][a-z]/i.test(str); } exports.isGeneralString = isGeneralString; function formatGender(str) { if (str.length === 1) return /^m$/i.test(str) ? 'Male' : /^f$/i.test(str) ? 'Female' : ''; return /female/i.test(str) ? 'Female' : /male/i.test(str) ? 'Male' : ''; } exports.formatGender = formatGender; function isGender(str) { return str.length === 1 ? /^m|f$/i.test(str) : /male|female/i.test(str); } exports.isGender = isGender;