UNPKG

resume-anonymizer

Version:

A flexible NPM package for anonymizing resumes to reduce bias in hiring

48 lines (47 loc) 1.66 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.detectPII = detectPII; exports.removePII = removePII; exports.removeContactFromObject = removeContactFromObject; const constants_1 = require("../constants"); function detectPII(text) { const emails = [...new Set(text.match(constants_1.EMAIL_REGEX) || [])]; const phones = [...new Set(text.match(constants_1.PHONE_REGEX) || [])]; const urls = [...new Set(text.match(constants_1.URL_REGEX) || [])]; return { emails, phones, urls }; } function removePII(text, pii) { let result = text; // Remove emails pii.emails.forEach(email => { result = result.replace(new RegExp(email.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'), 'g'), '[email removed]'); }); // Remove phones pii.phones.forEach(phone => { result = result.replace(new RegExp(phone.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'), 'g'), '[phone removed]'); }); // Remove URLs pii.urls.forEach(url => { result = result.replace(new RegExp(url.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'), 'g'), '[link removed]'); }); return result; } function removeContactFromObject(obj, changeLog) { const result = { ...obj }; if (result.email) { changeLog.emailRemoved = result.email; delete result.email; } if (result.phone) { changeLog.phoneRemoved = result.phone; delete result.phone; } if (result.address) { changeLog.addressRemoved = result.address; delete result.address; } if (result.profiles && Array.isArray(result.profiles)) { result.profiles = []; } return result; }