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
JavaScript
;
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;