UNPKG

@n8n/n8n-nodes-langchain

Version:

![Banner image](https://user-images.githubusercontent.com/10284570/173569848-c624317f-42b1-45a6-ab09-f0ea3c247648.png)

232 lines 9.62 kB
"use strict"; var __defProp = Object.defineProperty; var __getOwnPropDesc = Object.getOwnPropertyDescriptor; var __getOwnPropNames = Object.getOwnPropertyNames; var __hasOwnProp = Object.prototype.hasOwnProperty; var __export = (target, all) => { for (var name in all) __defProp(target, name, { get: all[name], enumerable: true }); }; var __copyProps = (to, from, except, desc) => { if (from && typeof from === "object" || typeof from === "function") { for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); } return to; }; var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); var pii_exports = {}; __export(pii_exports, { PIIEntity: () => PIIEntity, PII_NAME_MAP: () => PII_NAME_MAP, createCustomRegexCheckFn: () => createCustomRegexCheckFn, createPiiCheckFn: () => createPiiCheckFn }); module.exports = __toCommonJS(pii_exports); var import_common = require("../../helpers/common"); var PIIEntity = /* @__PURE__ */ ((PIIEntity2) => { PIIEntity2["CREDIT_CARD"] = "CREDIT_CARD"; PIIEntity2["CRYPTO"] = "CRYPTO"; PIIEntity2["DATE_TIME"] = "DATE_TIME"; PIIEntity2["EMAIL_ADDRESS"] = "EMAIL_ADDRESS"; PIIEntity2["IBAN_CODE"] = "IBAN_CODE"; PIIEntity2["IP_ADDRESS"] = "IP_ADDRESS"; PIIEntity2["LOCATION"] = "LOCATION"; PIIEntity2["PHONE_NUMBER"] = "PHONE_NUMBER"; PIIEntity2["MEDICAL_LICENSE"] = "MEDICAL_LICENSE"; PIIEntity2["US_BANK_NUMBER"] = "US_BANK_NUMBER"; PIIEntity2["US_DRIVER_LICENSE"] = "US_DRIVER_LICENSE"; PIIEntity2["US_ITIN"] = "US_ITIN"; PIIEntity2["US_PASSPORT"] = "US_PASSPORT"; PIIEntity2["US_SSN"] = "US_SSN"; PIIEntity2["UK_NHS"] = "UK_NHS"; PIIEntity2["UK_NINO"] = "UK_NINO"; PIIEntity2["ES_NIF"] = "ES_NIF"; PIIEntity2["ES_NIE"] = "ES_NIE"; PIIEntity2["IT_FISCAL_CODE"] = "IT_FISCAL_CODE"; PIIEntity2["IT_DRIVER_LICENSE"] = "IT_DRIVER_LICENSE"; PIIEntity2["IT_VAT_CODE"] = "IT_VAT_CODE"; PIIEntity2["IT_PASSPORT"] = "IT_PASSPORT"; PIIEntity2["IT_IDENTITY_CARD"] = "IT_IDENTITY_CARD"; PIIEntity2["PL_PESEL"] = "PL_PESEL"; PIIEntity2["SG_NRIC_FIN"] = "SG_NRIC_FIN"; PIIEntity2["SG_UEN"] = "SG_UEN"; PIIEntity2["AU_ABN"] = "AU_ABN"; PIIEntity2["AU_ACN"] = "AU_ACN"; PIIEntity2["AU_TFN"] = "AU_TFN"; PIIEntity2["AU_MEDICARE"] = "AU_MEDICARE"; PIIEntity2["IN_PAN"] = "IN_PAN"; PIIEntity2["IN_AADHAAR"] = "IN_AADHAAR"; PIIEntity2["IN_VEHICLE_REGISTRATION"] = "IN_VEHICLE_REGISTRATION"; PIIEntity2["IN_VOTER"] = "IN_VOTER"; PIIEntity2["IN_PASSPORT"] = "IN_PASSPORT"; PIIEntity2["FI_PERSONAL_IDENTITY_CODE"] = "FI_PERSONAL_IDENTITY_CODE"; return PIIEntity2; })(PIIEntity || {}); const allEntities = Object.values(PIIEntity); const PII_NAME_MAP = { ["CREDIT_CARD" /* CREDIT_CARD */]: "Credit Card", ["CRYPTO" /* CRYPTO */]: "Crypto", ["DATE_TIME" /* DATE_TIME */]: "Date Time", ["EMAIL_ADDRESS" /* EMAIL_ADDRESS */]: "Email Address", ["IBAN_CODE" /* IBAN_CODE */]: "IBAN Code", ["IP_ADDRESS" /* IP_ADDRESS */]: "IP Address", ["LOCATION" /* LOCATION */]: "Location", ["PHONE_NUMBER" /* PHONE_NUMBER */]: "Phone Number", ["MEDICAL_LICENSE" /* MEDICAL_LICENSE */]: "Medical License", ["US_BANK_NUMBER" /* US_BANK_NUMBER */]: "US Bank Number", ["US_DRIVER_LICENSE" /* US_DRIVER_LICENSE */]: "US Driver License", ["US_ITIN" /* US_ITIN */]: "US ITIN", ["US_PASSPORT" /* US_PASSPORT */]: "US Passport", ["US_SSN" /* US_SSN */]: "US SSN", ["UK_NHS" /* UK_NHS */]: "UK NHS", ["UK_NINO" /* UK_NINO */]: "UK NINO", ["ES_NIF" /* ES_NIF */]: "ES NIF", ["ES_NIE" /* ES_NIE */]: "ES NIE", ["IT_FISCAL_CODE" /* IT_FISCAL_CODE */]: "IT Fiscal Code", ["IT_DRIVER_LICENSE" /* IT_DRIVER_LICENSE */]: "IT Driver License", ["IT_VAT_CODE" /* IT_VAT_CODE */]: "IT VAT Code", ["IT_PASSPORT" /* IT_PASSPORT */]: "IT Passport", ["IT_IDENTITY_CARD" /* IT_IDENTITY_CARD */]: "IT Identity Card", ["PL_PESEL" /* PL_PESEL */]: "PL PESEL", ["SG_NRIC_FIN" /* SG_NRIC_FIN */]: "SG NRIC FIN", ["SG_UEN" /* SG_UEN */]: "SG UEN", ["AU_ABN" /* AU_ABN */]: "AU ABN", ["AU_ACN" /* AU_ACN */]: "AU ACN", ["AU_TFN" /* AU_TFN */]: "AU TFN", ["AU_MEDICARE" /* AU_MEDICARE */]: "AU Medicare", ["IN_PAN" /* IN_PAN */]: "IN PAN", ["IN_AADHAAR" /* IN_AADHAAR */]: "IN AADHAAR", ["IN_VEHICLE_REGISTRATION" /* IN_VEHICLE_REGISTRATION */]: "IN Vehicle Registration", ["IN_VOTER" /* IN_VOTER */]: "IN Voter", ["IN_PASSPORT" /* IN_PASSPORT */]: "IN Passport", ["FI_PERSONAL_IDENTITY_CODE" /* FI_PERSONAL_IDENTITY_CODE */]: "FI Personal Identity Code" }; const DEFAULT_PII_PATTERNS = { ["CREDIT_CARD" /* CREDIT_CARD */]: /\b\d{4}[-\s]?\d{4}[-\s]?\d{4}[-\s]?\d{4}\b/g, ["CRYPTO" /* CRYPTO */]: /\b[13][a-km-zA-HJ-NP-Z1-9]{25,34}\b/g, ["DATE_TIME" /* DATE_TIME */]: /\b(0[1-9]|1[0-2])[\/\-](0[1-9]|[12]\d|3[01])[\/\-](19|20)\d{2}\b/g, ["EMAIL_ADDRESS" /* EMAIL_ADDRESS */]: /\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Z|a-z]{2,}\b/g, ["IBAN_CODE" /* IBAN_CODE */]: /\b[A-Z]{2}[0-9]{2}[A-Z0-9]{4}[0-9]{7}([A-Z0-9]?){0,16}\b/g, ["IP_ADDRESS" /* IP_ADDRESS */]: /\b(?:[0-9]{1,3}\.){3}[0-9]{1,3}\b/g, ["LOCATION" /* LOCATION */]: /\b[A-Za-z\s]+(?:Street|St|Avenue|Ave|Road|Rd|Boulevard|Blvd|Drive|Dr|Lane|Ln|Place|Pl|Court|Ct|Way|Highway|Hwy)\b/g, ["PHONE_NUMBER" /* PHONE_NUMBER */]: /\b[\+]?[(]?[0-9]{3}[)]?[-\s\.]?[0-9]{3}[-\s\.]?[0-9]{4,6}\b/g, ["MEDICAL_LICENSE" /* MEDICAL_LICENSE */]: /\b[A-Z]{2}\d{6}\b/g, // USA ["US_BANK_NUMBER" /* US_BANK_NUMBER */]: /\b\d{8,17}\b/g, ["US_DRIVER_LICENSE" /* US_DRIVER_LICENSE */]: /\b[A-Z]\d{7}\b/g, ["US_ITIN" /* US_ITIN */]: /\b9\d{2}-\d{2}-\d{4}\b/g, ["US_PASSPORT" /* US_PASSPORT */]: /\b[A-Z]\d{8}\b/g, ["US_SSN" /* US_SSN */]: /\b\d{3}-\d{2}-\d{4}\b|\b\d{9}\b/g, // UK ["UK_NHS" /* UK_NHS */]: /\b\d{3} \d{3} \d{4}\b/g, ["UK_NINO" /* UK_NINO */]: /\b[A-Z]{2}\d{6}[A-Z]\b/g, // Spain ["ES_NIF" /* ES_NIF */]: /\b[A-Z]\d{8}\b/g, ["ES_NIE" /* ES_NIE */]: /\b[A-Z]\d{8}\b/g, // Italy ["IT_FISCAL_CODE" /* IT_FISCAL_CODE */]: /\b[A-Z]{6}\d{2}[A-Z]\d{2}[A-Z]\d{3}[A-Z]\b/g, ["IT_DRIVER_LICENSE" /* IT_DRIVER_LICENSE */]: /\b[A-Z]{2}\d{7}\b/g, ["IT_VAT_CODE" /* IT_VAT_CODE */]: /\bIT\d{11}\b/g, ["IT_PASSPORT" /* IT_PASSPORT */]: /\b[A-Z]{2}\d{7}\b/g, ["IT_IDENTITY_CARD" /* IT_IDENTITY_CARD */]: /\b[A-Z]{2}\d{7}\b/g, // Poland ["PL_PESEL" /* PL_PESEL */]: /\b\d{11}\b/g, // Singapore ["SG_NRIC_FIN" /* SG_NRIC_FIN */]: /\b[A-Z]\d{7}[A-Z]\b/g, ["SG_UEN" /* SG_UEN */]: /\b\d{8}[A-Z]\b|\b\d{9}[A-Z]\b/g, // Australia ["AU_ABN" /* AU_ABN */]: /\b\d{2} \d{3} \d{3} \d{3}\b/g, ["AU_ACN" /* AU_ACN */]: /\b\d{3} \d{3} \d{3}\b/g, ["AU_TFN" /* AU_TFN */]: /\b\d{9}\b/g, ["AU_MEDICARE" /* AU_MEDICARE */]: /\b\d{4} \d{5} \d{1}\b/g, // India ["IN_PAN" /* IN_PAN */]: /\b[A-Z]{5}\d{4}[A-Z]\b/g, ["IN_AADHAAR" /* IN_AADHAAR */]: /\b\d{4} \d{4} \d{4}\b/g, ["IN_VEHICLE_REGISTRATION" /* IN_VEHICLE_REGISTRATION */]: /\b[A-Z]{2}\d{2}[A-Z]{2}\d{4}\b/g, ["IN_VOTER" /* IN_VOTER */]: /\b[A-Z]{3}\d{7}\b/g, ["IN_PASSPORT" /* IN_PASSPORT */]: /\b[A-Z]\d{7}\b/g, // Finland ["FI_PERSONAL_IDENTITY_CODE" /* FI_PERSONAL_IDENTITY_CODE */]: /\b\d{6}[+-A]\d{3}[A-Z0-9]\b/g }; function detectPii(text, config) { if (!text) { return { mapping: {}, analyzerResults: [] }; } const grouped = {}; const analyzerResults = []; const matchAgainstPattern = (name, pattern) => { const flags = pattern.flags.includes("g") ? pattern.flags : pattern.flags + "g"; const regex = new RegExp(pattern.source, flags); let match; while ((match = regex.exec(text)) !== null) { const entityType = name; const start = match.index; const end = match.index + match[0].length; if (!grouped[entityType]) { grouped[entityType] = []; } grouped[entityType].push(text.substring(start, end)); analyzerResults.push({ entityType, text: text.substring(start, end) }); } }; const entities = config.entities ?? allEntities; for (const entity of entities) { const pattern = DEFAULT_PII_PATTERNS[entity]; if (pattern) { matchAgainstPattern(entity, pattern); } } if (config.customRegex?.length) { for (const regex of config.customRegex) { matchAgainstPattern(regex.name, (0, import_common.parseRegex)(regex.value)); } } return { mapping: grouped, analyzerResults }; } const createPiiCheckFn = (config) => { return (input) => { const detection = detectPii(input, config); const piiFound = detection.mapping && Object.keys(detection.mapping).length > 0; return { guardrailName: "personalData", tripwireTriggered: piiFound, info: { maskEntities: detection.mapping, analyzerResults: detection.analyzerResults } }; }; }; const createCustomRegexCheckFn = (config) => { return (input) => { const detection = detectPii(input, { customRegex: config.customRegex, entities: [] }); const customRegexFound = detection.mapping && Object.keys(detection.mapping).length > 0; return { guardrailName: "customRegex", tripwireTriggered: customRegexFound, info: { maskEntities: detection.mapping, analyzerResults: detection.analyzerResults } }; }; }; // Annotate the CommonJS export names for ESM import in node: 0 && (module.exports = { PIIEntity, PII_NAME_MAP, createCustomRegexCheckFn, createPiiCheckFn }); //# sourceMappingURL=pii.js.map