euredact 0.0.1 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,628 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.COUNTRY_CONFIGS = void 0;
4
+ const types_js_1 = require("../../types.js");
5
+ /**
6
+ * Helper to create a PatternDef with sensible defaults.
7
+ */
8
+ function p(entityType, pattern, validator = null, description = "", contextKeywords = [], requiresContext = false) {
9
+ return { entityType, pattern, validator, description, contextKeywords, requiresContext };
10
+ }
11
+ // ---------------------------------------------------------------------------
12
+ // DOB context keywords (reused across SHARED patterns)
13
+ // ---------------------------------------------------------------------------
14
+ const DOB_CONTEXT = [
15
+ "geboren", "geboortedatum", "date de naissance", "né le", "née le",
16
+ "né(e) le", "nee le", "nee(e) le", "date of birth", "DOB",
17
+ "Geburtsdatum", "geboren am", "geboren op", "nascido", "nacido",
18
+ "data di nascita", "nato il", "nata il", "geb.", "geb.datum", "geb ",
19
+ "birth date", "birthday", "naissance", "geboorte", "geburtstag",
20
+ ];
21
+ const DOB_ISO_CONTEXT = [
22
+ "geboren", "geboortedatum", "date de naissance", "né le", "née le",
23
+ "né(e) le", "nee le", "date of birth", "DOB", "Geburtsdatum",
24
+ "geboren am", "geboren op", "geb.", "birth date", "birthday",
25
+ "naissance", "geboorte",
26
+ ];
27
+ const DATE_OF_DEATH_CONTEXT = [
28
+ "overleden", "overlijdensdatum", "date de décès", "décédé le",
29
+ "date of death", "Sterbedatum", "verstorben am", "gestorven",
30
+ "death date", "died on", "mort le", "décès",
31
+ ];
32
+ // ---------------------------------------------------------------------------
33
+ // Country configurations
34
+ // ---------------------------------------------------------------------------
35
+ const SHARED = {
36
+ code: "SHARED",
37
+ name: "Shared EU Patterns",
38
+ patterns: [
39
+ p(types_js_1.EntityType.EMAIL, String.raw `\b[\w._%+\-]+@[\w.\-]+\.[a-zA-Z]{2,}\b`),
40
+ p(types_js_1.EntityType.BIC, String.raw `\b[A-Z]{4}[A-Z]{2}[A-Z0-9]{2}(?:[A-Z0-9]{3})?\b`, "bic"),
41
+ p(types_js_1.EntityType.CREDIT_CARD, String.raw `\b(?:4[0-9]{3}[\s\-]?[0-9]{4}[\s\-]?[0-9]{4}[\s\-]?[0-9]{4}|5[1-5][0-9]{2}[\s\-]?[0-9]{4}[\s\-]?[0-9]{4}[\s\-]?[0-9]{4}|3[47][0-9]{2}[\s\-]?[0-9]{6}[\s\-]?[0-9]{5})\b`, "luhn"),
42
+ p(types_js_1.EntityType.VIN, String.raw `\b[A-HJ-NPR-Z0-9]{17}\b`, "vin"),
43
+ p(types_js_1.EntityType.IP_ADDRESS, String.raw `\b(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\b`),
44
+ p(types_js_1.EntityType.IPV6_ADDRESS, String.raw `\b(?:[0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}\b|\b(?:[0-9a-fA-F]{1,4}:){1,7}:\b|\b(?:[0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}\b|\b::(?:[0-9a-fA-F]{1,4}:){0,5}[0-9a-fA-F]{1,4}\b`),
45
+ p(types_js_1.EntityType.MAC_ADDRESS, String.raw `\b(?:[0-9a-fA-F]{2}[:\-]){5}[0-9a-fA-F]{2}\b`, null, "colon/dash"),
46
+ p(types_js_1.EntityType.MAC_ADDRESS, String.raw `\b[0-9a-fA-F]{4}\.[0-9a-fA-F]{4}\.[0-9a-fA-F]{4}\b`, null, "Cisco"),
47
+ p(types_js_1.EntityType.IMEI, String.raw `\b\d{15}\b`, "imei"),
48
+ p(types_js_1.EntityType.IMEI, String.raw `\b\d{2}[\-\s]\d{6}[\-\s]\d{6}[\-\s]\d\b`, "imei", "formatted"),
49
+ p(types_js_1.EntityType.GPS_COORDINATES, String.raw `-?(?:[1-8]?\d(?:\.\d{4,})|90(?:\.0{4,}))\s*[,;/]\s*-?(?:1[0-7]\d(?:\.\d{4,})|180(?:\.0{4,})|\d{1,2}(?:\.\d{4,}))`),
50
+ p(types_js_1.EntityType.UUID, String.raw `\b[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-5][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}\b`),
51
+ p(types_js_1.EntityType.SOCIAL_HANDLE, String.raw `(?<!\w)@[a-zA-Z][a-zA-Z0-9_.]{1,29}\b`),
52
+ // --- Secret / API Key (known prefixes — always active) ---
53
+ p(types_js_1.EntityType.SECRET, String.raw `\bAKIA[A-Z0-9]{16}\b`, null, "AWS Access Key ID"),
54
+ p(types_js_1.EntityType.SECRET, String.raw `\bgh[poas]_[a-zA-Z0-9]{36,}\b`, null, "GitHub token"),
55
+ p(types_js_1.EntityType.SECRET, String.raw `\bgithub_pat_[a-zA-Z0-9_]{22,}\b`, null, "GitHub fine-grained PAT"),
56
+ p(types_js_1.EntityType.SECRET, String.raw `\bgl[a-z]t-[a-zA-Z0-9_\-]{20,}\b`, null, "GitLab token"),
57
+ p(types_js_1.EntityType.SECRET, String.raw `\bglpat-[a-zA-Z0-9_\-]{20,}\b`, null, "GitLab PAT"),
58
+ p(types_js_1.EntityType.SECRET, String.raw `\b[sp]k_(?:live|test)_[a-zA-Z0-9]{24,}\b`, null, "Stripe key"),
59
+ p(types_js_1.EntityType.SECRET, String.raw `\bsk-(?:ant-)?[a-zA-Z0-9\-_]{20,}\b`, null, "OpenAI/Anthropic key"),
60
+ p(types_js_1.EntityType.SECRET, String.raw `\bxox[bpas]-\d[\d\-]{10,}`, null, "Slack numeric token"),
61
+ p(types_js_1.EntityType.SECRET, String.raw `\bxox[bpas]-[a-zA-Z0-9\-]{10,}`, null, "Slack token"),
62
+ p(types_js_1.EntityType.SECRET, String.raw `\beyJ[a-zA-Z0-9_\-]+\.[a-zA-Z0-9_\-]+\.[a-zA-Z0-9_\-]+\b`, null, "JWT token"),
63
+ p(types_js_1.EntityType.SECRET, String.raw `\bSG\.[a-zA-Z0-9_\-]{22}\.[a-zA-Z0-9_\-]{43}\b`, null, "SendGrid key"),
64
+ p(types_js_1.EntityType.SECRET, String.raw `\bhvs\.[a-zA-Z0-9_\-]{20,}\b`, null, "Vault token"),
65
+ p(types_js_1.EntityType.SECRET, String.raw `\bkey-[a-f0-9]{20,}\b`, null, "Mailgun key"),
66
+ p(types_js_1.EntityType.SECRET, String.raw `\bnpm_[a-zA-Z0-9]{36,}\b`, null, "npm token"),
67
+ p(types_js_1.EntityType.SECRET, String.raw `\bAIza[a-zA-Z0-9_\-]{35}\b`, null, "Google API key"),
68
+ p(types_js_1.EntityType.SECRET, String.raw `\bdop_v1_[a-f0-9]{64}\b`, null, "DigitalOcean token"),
69
+ p(types_js_1.EntityType.SECRET, String.raw `\bAC[a-f0-9]{32}\b`, null, "Twilio Account SID"),
70
+ p(types_js_1.EntityType.SECRET, String.raw `\bxapp-\d[\d\-]{20,}`, null, "Slack app numeric token"),
71
+ p(types_js_1.EntityType.SECRET, String.raw `\bxapp-[a-zA-Z0-9\-]{20,}`, null, "Slack app token"),
72
+ p(types_js_1.EntityType.SECRET, String.raw `\bdapi[a-f0-9]{32,}\b`, null, "Databricks PAT"),
73
+ // --- Secret / API Key (connection strings with embedded credentials) ---
74
+ p(types_js_1.EntityType.SECRET, String.raw `(?:mongodb|mysql|postgres(?:ql)?|redis|amqp|rabbitmq):\/\/[^\s:]+:[^\s@]+@[^\s]+`, null, "Connection string with credentials"),
75
+ // --- Secret / API Key (assignment-based: KEY=value or KEY: value) ---
76
+ p(types_js_1.EntityType.SECRET, String.raw `(?<=[:=] )\S{8,}|(?<=[:=])\S{8,}`, "high_entropy", "Assigned secret value", [
77
+ "key", "token", "secret", "password", "credential",
78
+ "api_key", "apikey", "api-key", "auth", "bearer",
79
+ "aws_secret_access_key", "access_key", "private_key",
80
+ "wachtwoord", "mot de passe", "Passwort", "Schlüssel",
81
+ "clé", "sleutel", "lösenord", "hasło", "heslo",
82
+ "jelszó", "contraseña", "senha", "parola",
83
+ "AES_KEY", "ENCRYPTION_KEY", "SIGNING_KEY",
84
+ "ACCOUNT_SID", "AUTH_TOKEN", "TWILIO",
85
+ "RAILS_SECRET", "SECRET_KEY_BASE", "DATABASE_URL",
86
+ "NPM_TOKEN", "DIGITALOCEAN", "GOOGLE_API",
87
+ "kľúč", "nøkkel", "nyckel", "avain", "lykill",
88
+ "DB_PASS", "DB_PASSWORD", "DATASOURCE_PASSWORD",
89
+ "JWT_SIGNING", "SIGNING_KEY",
90
+ "passwd", "Kennwort",
91
+ ], true),
92
+ // --- Secret / API Key (entropy-based fallback for longer tokens) ---
93
+ p(types_js_1.EntityType.SECRET, String.raw `\b[A-Za-z0-9_\-+/]{24,}[A-Za-z0-9_\-+/=]*\b`, "high_entropy", "High-entropy token", [
94
+ "key", "token", "secret", "password", "credential",
95
+ "api_key", "apikey", "api-key", "auth", "bearer",
96
+ "aws_secret_access_key", "access_key", "private_key",
97
+ "wachtwoord", "mot de passe", "Passwort", "Schlüssel",
98
+ "clé", "sleutel", "lösenord", "hasło", "heslo",
99
+ "jelszó", "contraseña", "senha", "parola",
100
+ "kľúč", "nøkkel", "nyckel", "avain", "lykill",
101
+ ], true),
102
+ p(types_js_1.EntityType.DOB, String.raw `\b(?:0[1-9]|[12][0-9]|3[01])[/.\-](?:0[1-9]|1[0-2])[/.\-](?:19|20)\d{2}\b`, null, "DD/MM/YYYY", DOB_CONTEXT, true),
103
+ p(types_js_1.EntityType.DATE_OF_DEATH, String.raw `\b(?:0[1-9]|[12][0-9]|3[01])[/.\-](?:0[1-9]|1[0-2])[/.\-](?:19|20)\d{2}\b`, null, "", DATE_OF_DEATH_CONTEXT, true),
104
+ p(types_js_1.EntityType.DOB, String.raw `\b(?:19|20)\d{2}[/.\-](?:0[1-9]|1[0-2])[/.\-](?:0[1-9]|[12][0-9]|3[01])\b`, null, "ISO YYYY-MM-DD", DOB_ISO_CONTEXT, true),
105
+ ],
106
+ };
107
+ const NL = {
108
+ code: "NL",
109
+ name: "Netherlands",
110
+ patterns: [
111
+ p(types_js_1.EntityType.NATIONAL_ID, String.raw `\b[0-9]{9}\b`, "bsn"),
112
+ p(types_js_1.EntityType.NATIONAL_ID, String.raw `\b[0-9]{2,4}\.[0-9]{2,4}\.[0-9]{2,4}\b`, "bsn"),
113
+ p(types_js_1.EntityType.IBAN, String.raw `\bNL\d{2}\s?[A-Z]{4}\s?\d{4}\s?\d{4}\s?\d{2}\b`, "iban"),
114
+ p(types_js_1.EntityType.VAT, String.raw `\bNL\d{9}B\d{2}\b`, "vat_nl"),
115
+ p(types_js_1.EntityType.CHAMBER_OF_COMMERCE, String.raw `\b\d{8}\b`, "kvk", "", ["KvK", "Kamer van Koophandel", "kvk-nummer", "KVK-nummer", "handelsregister", "chamber of commerce"], true),
116
+ p(types_js_1.EntityType.PHONE, String.raw `\b0[1-9]\d[\s\-]?\d{3}[\s\-]?\d{4}\b`),
117
+ p(types_js_1.EntityType.PHONE, String.raw `\b0[1-9]\d{2}[\s\-]?\d{6,7}\b`),
118
+ p(types_js_1.EntityType.PHONE, String.raw `\b06[\s\-]?\d{4}[\s\-]?\d{4}\b`),
119
+ p(types_js_1.EntityType.PHONE, String.raw `\b06\d{8}\b`),
120
+ p(types_js_1.EntityType.PHONE, String.raw `\b06[\s\-]?\d{2}[\s\-]?\d{2}[\s\-]?\d{2}[\s\-]?\d{2}\b`),
121
+ p(types_js_1.EntityType.PHONE, String.raw `\b0[1-9]\d{1,2}[\s\-]?\d{2,3}[\s\-]?\d{2}[\s\-]?\d{2}\b`),
122
+ p(types_js_1.EntityType.PHONE, String.raw `\+31\s?[1-9]\d{0,2}[\s\-]?\d{3,4}[\s\-]?\d{3,4}\b`),
123
+ p(types_js_1.EntityType.PASSPORT, String.raw `\b[A-Z][A-Z0-9]{8}\b`, null, "", ["paspoort", "passport", "reisdocument", "travel document", "paspoortnummer", "identiteitsbewijs"], true),
124
+ p(types_js_1.EntityType.LICENSE_PLATE, String.raw `\b(?:[A-Z]{2}[\-\s]?\d{3}[\-\s]?[A-Z]|\d[\-\s]?[A-Z]{3}[\-\s]?\d{2}|\d{2}[\-\s]?[A-Z]{3}[\-\s]?\d|[A-Z]{2}[\-\s]?\d{2}[\-\s]?[A-Z]{2}|\d{2}[\-\s]?[A-Z]{2}[\-\s]?\d{2}|\d[\-\s]?[A-Z]{2}[\-\s]?\d{3})\b`),
125
+ p(types_js_1.EntityType.POSTAL_CODE, String.raw `\b[1-9]\d{3}\s?[A-Z]{2}\b`),
126
+ ],
127
+ };
128
+ const BE = {
129
+ code: "BE",
130
+ name: "Belgium",
131
+ patterns: [
132
+ p(types_js_1.EntityType.NATIONAL_ID, String.raw `\b\d{2}\.?\d{2}\.?\d{2}[\-.]?\d{3}\.?\d{2}\b`, "belgian_nn"),
133
+ p(types_js_1.EntityType.IBAN, String.raw `\bBE\d{2}\s?\d{4}\s?\d{4}\s?\d{4}\b`, "iban"),
134
+ p(types_js_1.EntityType.VAT, String.raw `\bBE\s?0\d{3}\.?\d{3}\.?\d{3}\b`, "belgian_vat"),
135
+ p(types_js_1.EntityType.CHAMBER_OF_COMMERCE, String.raw `\b0\d{3}\.?\d{3}\.?\d{3}\b`, null, "", ["KBO", "BCE", "ondernemingsnummer", "numéro d'entreprise", "enterprise number", "bedrijfsnummer"], true),
136
+ p(types_js_1.EntityType.PHONE, String.raw `\b0[1-9]\d{0,2}[/\s.\-]?\d{2,3}[.\s\-]?\d{2,3}[.\s\-]?\d{2,3}\b`),
137
+ p(types_js_1.EntityType.PHONE, String.raw `\+32\s?\d{1,3}[\s.\-]?\d{2,3}[\s.\-]?\d{2}[\s.\-]?\d{2}`),
138
+ p(types_js_1.EntityType.PASSPORT, String.raw `\b[A-Z]{2}\d{6}\b`, null, "", ["paspoort", "passport", "passeport", "reisdocument", "travel document", "document de voyage"], true),
139
+ p(types_js_1.EntityType.DRIVERS_LICENSE, String.raw `\b\d{10}\b`, null, "", ["rijbewijs", "permis de conduire", "driving licence", "driving license", "rijbewijsnummer"], true),
140
+ p(types_js_1.EntityType.LICENSE_PLATE, String.raw `\b[12][\-\s]?[A-Z]{3}[\-\s]?\d{3}\b`),
141
+ p(types_js_1.EntityType.POSTAL_CODE, String.raw `\b[1-9]\d{3}\b`, null, "", ["postcode", "code postal", "postnummer", "postal code", "zip", "B-", "adres", "adresse", "wonende", "woonplaats", "rue", "straat", "laan", "avenue", "boulevard", "plein", "steenweg", "chaussée", "domicilié", "gedomicilieerd", "Levering:", "siège"], true),
142
+ p(types_js_1.EntityType.POSTAL_CODE, String.raw `(?<=, )[1-9]\d{3}(?= [A-Z])`),
143
+ p(types_js_1.EntityType.HEALTHCARE_PROVIDER, String.raw `\b\d{1}[\-.]?\d{5}[\-.]?\d{2}[\-.]?\d{3}\b`, null, "", ["RIZIV", "INAMI", "arts", "médecin", "zorgverlener", "prestataire", "dokter", "doctor"], true),
144
+ ],
145
+ };
146
+ const DE = {
147
+ code: "DE",
148
+ name: "Germany",
149
+ patterns: [
150
+ p(types_js_1.EntityType.TAX_ID, String.raw `\b[1-9]\d{10}\b`, "german_tax_id"),
151
+ p(types_js_1.EntityType.TAX_ID, String.raw `\b[1-9]\d[\s.]?\d{3}[\s.]?\d{3}[\s.]?\d{3}\b`, "german_tax_id"),
152
+ p(types_js_1.EntityType.NATIONAL_ID, String.raw `\b[CFGHJKLMNPRTVWXYZ][0-9A-Z]{8,9}\b`, null, "", ["Personalausweis", "Personalausweisnummer", "Ausweis", "Ausweisnummer", "Ausweis-Nr", "identity card", "Identitätskarte", "Perso", "PA-Nummer"], true),
153
+ p(types_js_1.EntityType.IBAN, String.raw `\bDE\d{2}\s?\d{4}\s?\d{4}\s?\d{4}\s?\d{4}\s?\d{2}\b`, "iban"),
154
+ p(types_js_1.EntityType.VAT, String.raw `\bDE\s?\d{9}\b`, "vat_de"),
155
+ p(types_js_1.EntityType.PHONE, String.raw `\b0[1-9]\d{1,4}[\s/\-]?\d{3,8}\b`),
156
+ p(types_js_1.EntityType.PHONE, String.raw `\+49\s?\d{2,5}[\s/\-]?\d{3,8}\b`),
157
+ p(types_js_1.EntityType.PASSPORT, String.raw `\b[CFGHJK][0-9A-Z]{8,9}\b`, null, "", ["Reisepass", "passport", "Passnummer", "Reisepassnummer", "Reisepass Nummer", "Reisepass-Nr", "Pass Nr"], true),
158
+ p(types_js_1.EntityType.LICENSE_PLATE, String.raw `\b[A-ZÄÖÜ]{1,3}[\s\-]?[A-Z]{1,2}[\s\-]?\d{1,4}[EH]?\b`),
159
+ p(types_js_1.EntityType.POSTAL_CODE, String.raw `\b\d{5}\b`, null, "", ["PLZ", "Postleitzahl", "postal code", "postcode", "Anschrift", "Adresse", "Wohnort", "Ort", "Stadt", "wohnt", "wohnhaft", "Straße", "Str.", "Weg", "Platz", "Allee", "Ring"], true),
160
+ p(types_js_1.EntityType.CHAMBER_OF_COMMERCE, String.raw `\bHR[AB]\s?\d{4,6}\b`),
161
+ p(types_js_1.EntityType.SSN, String.raw `\b\d{2}[\s]?\d{6}[\s]?[A-Z][\s]?\d{3}\b`, null, "", ["Rentenversicherung", "RV-Nummer", "Sozialversicherung", "SV-Nummer", "Versicherungsnummer", "Rentenversicherungsnummer", "Sozialversicherungsnummer"], true),
162
+ p(types_js_1.EntityType.TAX_ID, String.raw `\b\d{2,3}/\d{3,4}/\d{4,5}\b`, null, "", ["Steuernummer", "St.-Nr", "StNr", "Finanzamt", "Steuer"], true),
163
+ p(types_js_1.EntityType.TAX_ID, String.raw `\b\d{13}\b`, null, "", ["Steuernummer", "St.-Nr", "StNr", "Finanzamt", "Steuer"], true),
164
+ p(types_js_1.EntityType.HEALTH_INSURANCE, String.raw `\b[A-Z]\d{9}\b`, null, "", ["Versichertennummer", "Krankenversicherung", "KV-Nummer", "Krankenkasse", "GKV", "Versichertenkarte", "Versicherter", "Versicherte", "KVNR", "Krankenversichertennummer"], true),
165
+ ],
166
+ };
167
+ const AT = {
168
+ code: "AT",
169
+ name: "Austria",
170
+ patterns: [
171
+ p(types_js_1.EntityType.NATIONAL_ID, String.raw `\b\d{4}\s?\d{6}\b`, "austrian_svnr"),
172
+ p(types_js_1.EntityType.IBAN, String.raw `\bAT\d{2}\s?\d{4}\s?\d{4}\s?\d{4}\s?\d{4}\b`, "iban"),
173
+ p(types_js_1.EntityType.VAT, String.raw `\bATU\d{8}\b`),
174
+ p(types_js_1.EntityType.PHONE, String.raw `\b0\d{3,4}[\s\-]?\d{5,8}\b`),
175
+ p(types_js_1.EntityType.PHONE, String.raw `\+43\s?\d{3,4}[\s\-]?\d{5,8}`),
176
+ p(types_js_1.EntityType.LICENSE_PLATE, String.raw `\b[A-ZÄÖÜ]{1,2}\s?\d{1,5}\s?[A-Z]{1,2}\b`, null, "", ["Kennzeichen", "Nummernschild", "Kfz-Kennzeichen"], true),
177
+ p(types_js_1.EntityType.POSTAL_CODE, String.raw `\b[1-9]\d{3}\b`, null, "", ["PLZ", "Postleitzahl", "Adresse", "Anschrift", "Straße", "Str.", "Gasse", "Weg", "Platz", "Postal:", "Wohnort"], true),
178
+ p(types_js_1.EntityType.POSTAL_CODE, String.raw `(?<=, )[1-9]\d{3}(?= [A-Z])`),
179
+ ],
180
+ };
181
+ const CH = {
182
+ code: "CH",
183
+ name: "Switzerland",
184
+ patterns: [
185
+ p(types_js_1.EntityType.NATIONAL_ID, String.raw `\b756\.\d{4}\.\d{4}\.\d{2}\b`, "swiss_ahv"),
186
+ p(types_js_1.EntityType.NATIONAL_ID, String.raw `\b756\d{10}\b`, "swiss_ahv"),
187
+ p(types_js_1.EntityType.CHAMBER_OF_COMMERCE, String.raw `\bCHE[\-\s]?\d{3}\.?\d{3}\.?\d{3}\b`),
188
+ p(types_js_1.EntityType.VAT, String.raw `\bCHE[\-\s]?\d{3}\.?\d{3}\.?\d{3}\s?(?:MWST|TVA|IVA)\b`),
189
+ p(types_js_1.EntityType.IBAN, String.raw `\bCH\d{2}\s?[A-Z0-9]{4}\s?[A-Z0-9]{4}\s?[A-Z0-9]{4}\s?[A-Z0-9]{4}\s?[A-Z0-9]\b`, "iban"),
190
+ p(types_js_1.EntityType.PHONE, String.raw `\b0\d{2}\s?\d{3}\s?\d{2}\s?\d{2}\b`),
191
+ p(types_js_1.EntityType.PHONE, String.raw `\+41\s?\d{2}\s?\d{3}\s?\d{2}\s?\d{2}`),
192
+ p(types_js_1.EntityType.LICENSE_PLATE, String.raw `\b[A-Z]{2}\s?\d{1,6}\b`, null, "", ["Kontrollschild", "Nummernschild", "plaque", "immatriculation", "Kennzeichen"], true),
193
+ p(types_js_1.EntityType.POSTAL_CODE, String.raw `\b[1-9]\d{3}\b`, null, "", ["PLZ", "Postleitzahl", "code postal", "NPA", "Adresse", "Anschrift", "adresse", "rue", "Straße", "Str.", "Gasse", "chemin", "Postal:", "Wohnort"], true),
194
+ p(types_js_1.EntityType.POSTAL_CODE, String.raw `(?<=, )[1-9]\d{3}(?= [A-Z])`),
195
+ ],
196
+ };
197
+ const FR = {
198
+ code: "FR",
199
+ name: "France",
200
+ patterns: [
201
+ p(types_js_1.EntityType.NATIONAL_ID, String.raw `\b[12]\s?\d{2}\s?(?:0[1-9]|1[0-2]|[2-9]\d)\s?\d{2}[0-9AB]?\s?\d{3}\s?\d{3}\s?\d{2}\b`, "french_nir"),
202
+ p(types_js_1.EntityType.NATIONAL_ID, String.raw `\b\d{12}\b`, null, "", ["carte d'identité", "CNI", "carte nationale", "identity card", "pièce d'identité"], true),
203
+ p(types_js_1.EntityType.IBAN, String.raw `\bFR\d{2}\s?\d{4}\s?\d{4}\s?\d{4}\s?\d{4}\s?\d{4}\s?\d{3}\b`, "iban"),
204
+ p(types_js_1.EntityType.VAT, String.raw `\bFR\s?[0-9A-HJ-NP-Z]{2}\s?\d{9}\b`, "vat_fr"),
205
+ p(types_js_1.EntityType.PHONE, String.raw `\b0[1-9][\s.\-]?\d{2}[\s.\-]?\d{2}[\s.\-]?\d{2}[\s.\-]?\d{2}\b`),
206
+ p(types_js_1.EntityType.PHONE, String.raw `\+33\s?[1-9][\s.\-]?\d{2}[\s.\-]?\d{2}[\s.\-]?\d{2}[\s.\-]?\d{2}`),
207
+ p(types_js_1.EntityType.PASSPORT, String.raw `\b\d{2}[A-Z]{2}\d{5}\b`, null, "", ["passeport", "passport", "numéro de passeport"], true),
208
+ p(types_js_1.EntityType.LICENSE_PLATE, String.raw `\b[A-Z]{2}[\-\s]?\d{3}[\-\s]?[A-Z]{2}\b`),
209
+ p(types_js_1.EntityType.POSTAL_CODE, String.raw `\b(?:0[1-9]|[1-8]\d|9[0-5]|97[1-6])\d{3}\b`, null, "", ["code postal", "CP", "postal code", "postcode", "adresse", "domicilié", "résidant", "rue", "avenue", "boulevard", "place", "chemin", "allée", "impasse", "ville"], true),
210
+ p(types_js_1.EntityType.CHAMBER_OF_COMMERCE, String.raw `\b\d{3}\s?\d{3}\s?\d{3}\b`, null, "", ["SIREN", "siren", "RCS", "entreprise", "immatricul", "numéro d'entreprise", "registre du commerce"], true),
211
+ p(types_js_1.EntityType.CHAMBER_OF_COMMERCE, String.raw `\b\d{3}\s?\d{3}\s?\d{3}\s?\d{5}\b`, null, "", ["SIRET", "siret", "établissement", "immatricul"], true),
212
+ p(types_js_1.EntityType.TAX_ID, String.raw `\b\d{13}\b`, null, "", ["numéro fiscal", "SPI", "référence fiscale", "avis d'impôt", "impôt sur le revenu", "déclaration fiscale", "fiscal"], true),
213
+ ],
214
+ };
215
+ const DK = {
216
+ code: "DK",
217
+ name: "Denmark",
218
+ patterns: [
219
+ p(types_js_1.EntityType.NATIONAL_ID, String.raw `\b(?:0[1-9]|[12]\d|3[01])(?:0[1-9]|1[0-2])\d{2}-\d{4}\b`),
220
+ p(types_js_1.EntityType.NATIONAL_ID, String.raw `\b(?:0[1-9]|[12]\d|3[01])(?:0[1-9]|1[0-2])\d{6}\b`, "danish_cpr"),
221
+ p(types_js_1.EntityType.IBAN, String.raw `\bDK\d{2}\s?\d{4}\s?\d{4}\s?\d{4}\s?\d{2}\b`, "iban"),
222
+ p(types_js_1.EntityType.VAT, String.raw `\bDK\s?\d{8}\b`, "danish_vat"),
223
+ p(types_js_1.EntityType.CHAMBER_OF_COMMERCE, String.raw `\b\d{8}\b`, "danish_vat", "", ["CVR", "CVR-nummer", "virksomhedsnummer", "virksomhedsregisteret"], true),
224
+ p(types_js_1.EntityType.PHONE, String.raw `\b[2-9]\d\s?\d{2}\s?\d{2}\s?\d{2}\b`),
225
+ p(types_js_1.EntityType.PHONE, String.raw `\+45\s?\d{2}\s?\d{2}\s?\d{2}\s?\d{2}`),
226
+ p(types_js_1.EntityType.LICENSE_PLATE, String.raw `\b[A-Z]{2}\s?\d{2}\s?\d{3}\b`, null, "", ["nummerplade", "registreringsnummer", "reg.nr", "køretøj"], true),
227
+ p(types_js_1.EntityType.POSTAL_CODE, String.raw `\b[1-9]\d{3}\b`, null, "", ["postnummer", "postby", "postnr", "adresse", "bopæl", "bopælsadresse", "gade", "vej", "allé", "plads", "torv", "stræde", "boulevard", "Arbejdssted"], true),
228
+ ],
229
+ };
230
+ const SE = {
231
+ code: "SE",
232
+ name: "Sweden",
233
+ patterns: [
234
+ p(types_js_1.EntityType.NATIONAL_ID, String.raw `\b\d{8}[-+]?\d{4}\b`, "swedish_pnr"),
235
+ p(types_js_1.EntityType.NATIONAL_ID, String.raw `\b\d{6}[-+]\d{4}\b`, "swedish_pnr"),
236
+ p(types_js_1.EntityType.NATIONAL_ID, String.raw `\b\d{10}\b`, "swedish_pnr"),
237
+ p(types_js_1.EntityType.IBAN, String.raw `\bSE\d{2}\s?\d{4}\s?\d{4}\s?\d{4}\s?\d{4}\s?\d{4}\b`, "iban"),
238
+ p(types_js_1.EntityType.VAT, String.raw `\bSE\d{12}\b`),
239
+ p(types_js_1.EntityType.PHONE, String.raw `\b0\d{1,3}[\-\s]?\d{2,3}[\s]?\d{2,3}[\s]?\d{2}\b`),
240
+ p(types_js_1.EntityType.PHONE, String.raw `\+46\s?\d{1,3}[\s\-]?\d{2,3}[\s\-]?\d{2,3}[\s\-]?\d{2}`),
241
+ p(types_js_1.EntityType.LICENSE_PLATE, String.raw `\b[A-Z]{3}\s?\d{2}[A-Z0-9]\b`),
242
+ p(types_js_1.EntityType.POSTAL_CODE, String.raw `\b\d{3}\s?\d{2}\b`, null, "", ["postnummer", "postort", "postkod", "adress", "bostadsadress", "gatuadress", "boende", "gatan", "vägen", "gata", "väg", "allé", "plats", "torg", "stigen", "Bostadsadress"], true),
243
+ p(types_js_1.EntityType.POSTAL_CODE, String.raw `\b\d{4}\s\d{2}\b`, null, "", ["postnummer", "postort", "postkod", "adress", "bostadsadress", "gatuadress", "boende", "gatan", "vägen", "gata", "väg", "allé"], true),
244
+ p(types_js_1.EntityType.POSTAL_CODE, String.raw `\b\d{6}\b`, null, "", ["postnummer", "postort", "postkod", "adress", "bostadsadress", "gatuadress", "boende", "gatan", "vägen", "gata", "väg", "allé"], true),
245
+ p(types_js_1.EntityType.CHAMBER_OF_COMMERCE, String.raw `\b\d{6}-?\d{4}\b`, null, "", ["organisationsnummer", "org.nr", "org nr", "Bolagsverket", "registreringsnummer"], true),
246
+ ],
247
+ };
248
+ const NO = {
249
+ code: "NO",
250
+ name: "Norway",
251
+ patterns: [
252
+ p(types_js_1.EntityType.NATIONAL_ID, String.raw `\b\d{11}\b`, "norwegian_fnr"),
253
+ p(types_js_1.EntityType.NATIONAL_ID, String.raw `\b\d{6}\s\d{5}\b`, "norwegian_fnr"),
254
+ p(types_js_1.EntityType.IBAN, String.raw `\bNO\d{2}\s?\d{4}\s?\d{4}\s?\d{3}\b`, "iban"),
255
+ p(types_js_1.EntityType.VAT, String.raw `\bNO\s?\d{9}\s?MVA\b`),
256
+ p(types_js_1.EntityType.CHAMBER_OF_COMMERCE, String.raw `\b[89]\d{8}\b`, "norwegian_org"),
257
+ p(types_js_1.EntityType.PHONE, String.raw `\b[2-9]\d\s?\d{2}\s?\d{2}\s?\d{2}\b`),
258
+ p(types_js_1.EntityType.PHONE, String.raw `\+47\s?\d{2}\s?\d{2}\s?\d{2}\s?\d{2}`),
259
+ p(types_js_1.EntityType.LICENSE_PLATE, String.raw `\b[A-Z]{2}\s?\d{5}\b`),
260
+ p(types_js_1.EntityType.POSTAL_CODE, String.raw `\b\d{4}\b`, null, "", ["postnummer", "poststed", "postnr", "adresse", "bostedsadresse", "gate", "vei", "veien", "gata", "plass", "stien", "allé"], true),
261
+ ],
262
+ };
263
+ const FI = {
264
+ code: "FI",
265
+ name: "Finland",
266
+ patterns: [
267
+ p(types_js_1.EntityType.NATIONAL_ID, String.raw `\b\d{6}[-+ABCDEFYXWVU]\d{3}[0-9A-FHJK-NPR-Y]\b`, "finnish_hetu"),
268
+ p(types_js_1.EntityType.IBAN, String.raw `\bFI\d{2}\s?\d{4}\s?\d{4}\s?\d{4}\s?\d{2}\b`, "iban"),
269
+ p(types_js_1.EntityType.VAT, String.raw `\bFI\d{8}\b`),
270
+ p(types_js_1.EntityType.CHAMBER_OF_COMMERCE, String.raw `\b\d{7}-\d\b`, "finnish_business_id"),
271
+ p(types_js_1.EntityType.PHONE, String.raw `\b0\d{1,2}\s?\d{3,4}\s?\d{3,4}\b`),
272
+ p(types_js_1.EntityType.PHONE, String.raw `\+358\s?\d{1,3}[\s\-]?\d{3,4}[\s\-]?\d{3,4}`),
273
+ p(types_js_1.EntityType.LICENSE_PLATE, String.raw `\b[A-Z]{2,3}[\-\s]?\d{3}\b`, null, "", ["rekisteritunnus", "rekisterinumero", "rekisterikilpi", "ajoneuvo"], true),
274
+ p(types_js_1.EntityType.POSTAL_CODE, String.raw `\b\d{5}\b`, null, "", ["postinumero", "postitoimipaikka", "osoite", "kotiosoite", "katuosoite"], true),
275
+ ],
276
+ };
277
+ const IS = {
278
+ code: "IS",
279
+ name: "Iceland",
280
+ patterns: [
281
+ p(types_js_1.EntityType.NATIONAL_ID, String.raw `\b\d{6}-?\d{4}\b`, "icelandic_kt"),
282
+ p(types_js_1.EntityType.IBAN, String.raw `\bIS\d{2}\s?\d{4}\s?\d{4}\s?\d{4}\s?\d{4}\s?\d{4}\s?\d{2}\b`, "iban"),
283
+ p(types_js_1.EntityType.PHONE, String.raw `\b[3-9]\d{2}\s\d{4}\b`),
284
+ p(types_js_1.EntityType.PHONE, String.raw `\b[3-9]\d{6}\b`, null, "", ["sími", "símanúmer", "farsími", "gsm", "phone", "tel", "hringja", "hringdu", "ná í", "nás á", "nás", "SMS", "sent to"], true),
285
+ p(types_js_1.EntityType.PHONE, String.raw `\+354\s?\d{3}\s?\d{4}`),
286
+ p(types_js_1.EntityType.LICENSE_PLATE, String.raw `\b[A-Z]{2}\s?\d{3}\b`, null, "", ["skráningarnúmer", "bílnúmer", "ökutæki", "bifreið", "plata"], true),
287
+ p(types_js_1.EntityType.POSTAL_CODE, String.raw `\b[1-9]\d{2}\b`, null, "", ["póstnúmer", "póstfang", "staður", "heimilisfang"], true),
288
+ ],
289
+ };
290
+ const IT = {
291
+ code: "IT",
292
+ name: "Italy",
293
+ patterns: [
294
+ p(types_js_1.EntityType.NATIONAL_ID, String.raw `\b[A-Z]{6}\d{2}[ABCDEHLMPRST]\d{2}[A-Z]\d{3}[A-Z]\b`, "italian_cf"),
295
+ p(types_js_1.EntityType.IBAN, String.raw `\bIT\d{2}\s?[A-Z]\d{3}\s?\d{4}\s?\d{4}\s?\d{4}\s?\d{4}\s?\d{3}\b`, "iban"),
296
+ p(types_js_1.EntityType.IBAN, String.raw `\bIT\d{2}[A-Z]\d{22}\b`, "iban"),
297
+ p(types_js_1.EntityType.VAT, String.raw `\bIT\d{11}\b`),
298
+ p(types_js_1.EntityType.PHONE, String.raw `\b3\d{2}[\s\-]?\d{3}[\s\-]?\d{4}\b`),
299
+ p(types_js_1.EntityType.PHONE, String.raw `\b0\d{1,3}[\s\-]?\d{6,8}\b`),
300
+ p(types_js_1.EntityType.PHONE, String.raw `\b0\d{1,2}[\s\-]\d{3}[\s\-]\d{4}\b`),
301
+ p(types_js_1.EntityType.PHONE, String.raw `\+39\s?\d{2,3}[\s\-]?\d{3,4}[\s\-]?\d{3,4}`),
302
+ p(types_js_1.EntityType.LICENSE_PLATE, String.raw `\b[A-Z]{2}\s?\d{3}\s?[A-Z]{2}\b`),
303
+ p(types_js_1.EntityType.POSTAL_CODE, String.raw `\b\d{5}\b`, null, "", ["CAP", "codice postale", "codice di avviamento", "indirizzo", "via", "viale", "piazza", "corso", "largo", "vicolo", "Domicilio", "domicilio", "Residenza", "residenza", "Postal:"], true),
304
+ ],
305
+ };
306
+ const ES = {
307
+ code: "ES",
308
+ name: "Spain",
309
+ patterns: [
310
+ p(types_js_1.EntityType.NATIONAL_ID, String.raw `\b\d{8}[A-Z]\b`, "spanish_dni"),
311
+ p(types_js_1.EntityType.NATIONAL_ID, String.raw `\b[XYZ]\d{7}[A-Z]\b`, "spanish_nie"),
312
+ p(types_js_1.EntityType.IBAN, String.raw `\bES\d{2}\s?\d{4}\s?\d{4}\s?\d{4}\s?\d{4}\s?\d{4}\b`, "iban"),
313
+ p(types_js_1.EntityType.VAT, String.raw `\bES[A-Z0-9]\d{7}[A-Z0-9]\b`),
314
+ p(types_js_1.EntityType.PHONE, String.raw `\b[679]\d{2}[\s\-]?\d{3}[\s\-]?\d{3}\b`),
315
+ p(types_js_1.EntityType.PHONE, String.raw `\b[679]\d{8}\b`),
316
+ p(types_js_1.EntityType.PHONE, String.raw `\b[679]\d[\s\-]?\d{3}[\s\-]?\d{2}[\s\-]?\d{2}\b`),
317
+ p(types_js_1.EntityType.PHONE, String.raw `\+34\s?[679]\d{2}[\s\-]?\d{3}[\s\-]?\d{3}`),
318
+ p(types_js_1.EntityType.LICENSE_PLATE, String.raw `\b\d{4}\s?[BCDFGHJKLMNPRSTVWXYZ]{3}\b`),
319
+ p(types_js_1.EntityType.POSTAL_CODE, String.raw `\b(?:0[1-9]|[1-4]\d|5[0-2])\d{3}\b`, null, "", ["código postal", "C.P.", "CP", "dirección", "domicilio", "calle", "avenida", "plaza", "paseo", "camino", "Postal:"], true),
320
+ ],
321
+ };
322
+ const PT = {
323
+ code: "PT",
324
+ name: "Portugal",
325
+ patterns: [
326
+ p(types_js_1.EntityType.NATIONAL_ID, String.raw `\b[1-35-9]\d{8}\b`, "portuguese_nif"),
327
+ p(types_js_1.EntityType.NATIONAL_ID, String.raw `\b[1-35-9]\d{2}[\s.]\d{3}[\s.]\d{3}\b`, "portuguese_nif"),
328
+ p(types_js_1.EntityType.IBAN, String.raw `\bPT\d{2}\s?\d{4}\s?\d{4}\s?\d{4}\s?\d{4}\s?\d{5}\b`, "iban"),
329
+ p(types_js_1.EntityType.VAT, String.raw `\bPT\d{9}\b`),
330
+ p(types_js_1.EntityType.PHONE, String.raw `\b[29]\d{2}[\s\-]?\d{3}[\s\-]?\d{3}\b`),
331
+ p(types_js_1.EntityType.PHONE, String.raw `\b[29]\d{8}\b`),
332
+ p(types_js_1.EntityType.PHONE, String.raw `\+351\s?[29]\d{2}[\s\-]?\d{3}[\s\-]?\d{3}`),
333
+ p(types_js_1.EntityType.LICENSE_PLATE, String.raw `\b[A-Z0-9]{2}-[A-Z0-9]{2}-[A-Z0-9]{2}\b`),
334
+ p(types_js_1.EntityType.POSTAL_CODE, String.raw `\b\d{4}-\d{3}\b`),
335
+ ],
336
+ };
337
+ const LU = {
338
+ code: "LU",
339
+ name: "Luxembourg",
340
+ patterns: [
341
+ p(types_js_1.EntityType.NATIONAL_ID, String.raw `\b(?:19|20)\d{2}\s(?:0[1-9]|1[0-2])\s(?:0[1-9]|[12]\d|3[01])\s\d{3}\s\d{2}\b`),
342
+ p(types_js_1.EntityType.NATIONAL_ID, String.raw `\b(?:19|20)\d{2}(?:0[1-9]|1[0-2])(?:0[1-9]|[12]\d|3[01])\d{5}\b`),
343
+ p(types_js_1.EntityType.IBAN, String.raw `\bLU\d{2}\s?[A-Z0-9]{4}\s?[A-Z0-9]{4}\s?[A-Z0-9]{4}\s?[A-Z0-9]{4}\b`, "iban"),
344
+ p(types_js_1.EntityType.VAT, String.raw `\bLU\s?\d{8}\b`, "vat_lu"),
345
+ p(types_js_1.EntityType.PHONE, String.raw `\b(?:2[0-9]|[4-9]\d)[\s\-]?\d{2}[\s\-]?\d{2}[\s\-]?\d{2}\b`),
346
+ p(types_js_1.EntityType.PHONE, String.raw `\b(?:2[0-9]|[4-9]\d)\d{6}\b`),
347
+ p(types_js_1.EntityType.PHONE, String.raw `\b6[2-9]\d[\s\-]?\d{3}[\s\-]?\d{3}\b`),
348
+ p(types_js_1.EntityType.PHONE, String.raw `\+352\s?\d{2,3}[\s\-]?\d{2,3}[\s\-]?\d{2,4}`),
349
+ p(types_js_1.EntityType.POSTAL_CODE, String.raw `\bL[\-\s]?\d{4}\b`),
350
+ p(types_js_1.EntityType.LICENSE_PLATE, String.raw `\b[A-Z]{2}[\s\-]?\d{3,5}\b`, null, "", ["plaque", "immatriculation", "Kennzeichen", "nummerplaat", "véhicule", "voiture", "Fahrzeug", "immatriculé"], true),
351
+ p(types_js_1.EntityType.CHAMBER_OF_COMMERCE, String.raw `\b[ABCDEFGJ]\s?\d{4,6}\b`, null, "", ["RCS", "Registre de Commerce", "Handelsregister", "registre", "inscrit"], true),
352
+ ],
353
+ };
354
+ const PL = {
355
+ code: "PL",
356
+ name: "Poland",
357
+ patterns: [
358
+ p(types_js_1.EntityType.NATIONAL_ID, String.raw `\b\d{11}\b`, "polish_pesel"),
359
+ p(types_js_1.EntityType.TAX_ID, String.raw `\b\d{3}-?\d{3}-?\d{2}-?\d{2}\b`, "polish_nip"),
360
+ p(types_js_1.EntityType.IBAN, String.raw `\bPL\d{2}\s?\d{4}\s?\d{4}\s?\d{4}\s?\d{4}\s?\d{4}\s?\d{4}\b`, "iban"),
361
+ p(types_js_1.EntityType.IBAN, String.raw `\bPL\d{26}\b`, "iban"),
362
+ p(types_js_1.EntityType.VAT, String.raw `\bPL\d{10}\b`),
363
+ p(types_js_1.EntityType.PHONE, String.raw `\b[5-8]\d{2}[\s\-]?\d{3}[\s\-]?\d{3}\b`),
364
+ p(types_js_1.EntityType.PHONE, String.raw `\b[5-8]\d{8}\b`),
365
+ p(types_js_1.EntityType.PHONE, String.raw `\+48\s?[5-8]\d{2}[\s\-]?\d{3}[\s\-]?\d{3}`),
366
+ p(types_js_1.EntityType.POSTAL_CODE, String.raw `\b\d{2}-\d{3}\b`, null, "", ["kod pocztowy", "adres", "ulica", "Postal:", "Address:"]),
367
+ ],
368
+ };
369
+ const IE = {
370
+ code: "IE",
371
+ name: "Ireland",
372
+ patterns: [
373
+ p(types_js_1.EntityType.NATIONAL_ID, String.raw `\b\d{7}[A-W][ABWTXZ]?\b`, "irish_pps"),
374
+ p(types_js_1.EntityType.IBAN, String.raw `\bIE\d{2}\s?[A-Z]{4}\s?\d{4}\s?\d{4}\s?\d{4}\s?\d{2}\b`, "iban"),
375
+ p(types_js_1.EntityType.IBAN, String.raw `\bIE\d{2}[A-Z]{4}\d{14}\b`, "iban"),
376
+ p(types_js_1.EntityType.VAT, String.raw `\bIE\d{7}[A-Z]\b`),
377
+ p(types_js_1.EntityType.PHONE, String.raw `\b0[89]\d[\s\-]?\d{3}[\s\-]?\d{4}\b`),
378
+ p(types_js_1.EntityType.PHONE, String.raw `\b0[89]\d{8}\b`),
379
+ p(types_js_1.EntityType.PHONE, String.raw `\b0[1-9]\d{0,2}[\s\-]?\d{5,8}\b`),
380
+ p(types_js_1.EntityType.PHONE, String.raw `\+353\s?\d{1,3}[\s\-]?\d{3,4}[\s\-]?\d{3,4}`),
381
+ p(types_js_1.EntityType.POSTAL_CODE, String.raw `\b[A-Z]\d{2}\s?[A-Z0-9]{4}\b`, null, "", ["Eircode", "postcode", "postal code", "address", "Address:", "Postal:"], true),
382
+ ],
383
+ };
384
+ const UK = {
385
+ code: "UK",
386
+ name: "United Kingdom",
387
+ patterns: [
388
+ p(types_js_1.EntityType.NATIONAL_ID, String.raw `\b[A-CEGHJ-PR-TW-Z][A-CEGHJ-NPR-TW-Z]\s?\d{2}\s?\d{2}\s?\d{2}\s?[ABCD]\b`),
389
+ p(types_js_1.EntityType.HEALTH_INSURANCE, String.raw `\b\d{3}\s?\d{3}\s?\d{4}\b`, "uk_nhs", "", ["NHS", "NHS number", "health number", "NHS no"], true),
390
+ p(types_js_1.EntityType.IBAN, String.raw `\bGB\d{2}\s?[A-Z]{4}\s?\d{4}\s?\d{4}\s?\d{4}\s?\d{2}\b`, "iban"),
391
+ p(types_js_1.EntityType.IBAN, String.raw `\bGB\d{2}[A-Z]{4}\d{14}\b`, "iban"),
392
+ p(types_js_1.EntityType.VAT, String.raw `\bGB\d{9}\b`),
393
+ p(types_js_1.EntityType.PHONE, String.raw `\b07[4-9]\d{2}[\s\-]?\d{3}[\s\-]?\d{3}\b`),
394
+ p(types_js_1.EntityType.PHONE, String.raw `\b07[4-9]\d{8}\b`),
395
+ p(types_js_1.EntityType.PHONE, String.raw `\b0[12]\d{2}[\s\-]?\d{3}[\s\-]?\d{4}\b`),
396
+ p(types_js_1.EntityType.PHONE, String.raw `\b0[12]\d{2}[\s\-]?\d{4}[\s\-]?\d{4}\b`),
397
+ p(types_js_1.EntityType.PHONE, String.raw `\b0[12]\d{9,10}\b`),
398
+ p(types_js_1.EntityType.PHONE, String.raw `\+44\s?\d{2,4}[\s\-]?\d{3,4}[\s\-]?\d{3,4}`),
399
+ p(types_js_1.EntityType.POSTAL_CODE, String.raw `\b[A-Z]{1,2}\d[A-Z\d]?\s?\d[A-Z]{2}\b`),
400
+ ],
401
+ };
402
+ const BG = {
403
+ code: "BG",
404
+ name: "Bulgaria",
405
+ patterns: [
406
+ p(types_js_1.EntityType.NATIONAL_ID, String.raw `\b\d{10}\b`, "bulgarian_egn"),
407
+ p(types_js_1.EntityType.IBAN, String.raw `\bBG\d{2}\s?[A-Z]{4}\s?\d{4}\s?\d{4}\s?\d{4}\s?\d{2}\b`, "iban"),
408
+ p(types_js_1.EntityType.VAT, String.raw `\bBG\d{9,10}\b`),
409
+ p(types_js_1.EntityType.PHONE, String.raw `\b0?[89][789][\s\-]?\d{3}[\s\-]?\d{3,4}\b`),
410
+ p(types_js_1.EntityType.PHONE, String.raw `\b0?[89][789]\d{7,8}\b`),
411
+ p(types_js_1.EntityType.PHONE, String.raw `\+359\s?[89][789][\s\-]?\d{3}[\s\-]?\d{3,4}`),
412
+ p(types_js_1.EntityType.POSTAL_CODE, String.raw `\b[1-9]\d{3}\b`, null, "", ["пощенски код", "пощенски", "адрес", "ул.", "Postal:", "Address:"], true),
413
+ p(types_js_1.EntityType.POSTAL_CODE, String.raw `(?<=, )[1-9]\d{3}(?= [A-Z])`),
414
+ ],
415
+ };
416
+ const CY = {
417
+ code: "CY",
418
+ name: "Cyprus",
419
+ patterns: [
420
+ p(types_js_1.EntityType.NATIONAL_ID, String.raw `\b\d{8}[A-Z]\b`),
421
+ p(types_js_1.EntityType.IBAN, String.raw `\bCY\d{2}\s?\d{4}\s?\d{4}\s?\d{4}\s?\d{4}\s?\d{4}\s?\d{4}\b`, "iban"),
422
+ p(types_js_1.EntityType.IBAN, String.raw `\bCY\d{26}\b`, "iban"),
423
+ p(types_js_1.EntityType.VAT, String.raw `\bCY\d{8}[A-Z]\b`),
424
+ p(types_js_1.EntityType.PHONE, String.raw `\b[29]\d{3}[\s\-]?\d{4}\b`),
425
+ p(types_js_1.EntityType.PHONE, String.raw `\b[29]\d[\s\-]?\d{3}[\s\-]?\d{3}\b`),
426
+ p(types_js_1.EntityType.PHONE, String.raw `\b[29]\d{7}\b`),
427
+ p(types_js_1.EntityType.PHONE, String.raw `\+357\s?[29]\d[\s\-]?\d{3}[\s\-]?\d{3,4}`),
428
+ p(types_js_1.EntityType.POSTAL_CODE, String.raw `\b[1-9]\d{3}\b`, null, "", ["Τ.Κ.", "ταχυδρομικός", "address", "Address:", "Postal:", "διεύθυνση"], true),
429
+ p(types_js_1.EntityType.POSTAL_CODE, String.raw `(?<=, )[1-9]\d{3}(?= [A-Z])`),
430
+ ],
431
+ };
432
+ const CZ = {
433
+ code: "CZ",
434
+ name: "Czech Republic",
435
+ patterns: [
436
+ p(types_js_1.EntityType.NATIONAL_ID, String.raw `\b\d{6}/?\d{3,4}\b`, "czech_birth_number"),
437
+ p(types_js_1.EntityType.IBAN, String.raw `\bCZ\d{2}\s?\d{4}\s?\d{4}\s?\d{4}\s?\d{4}\s?\d{4}\b`, "iban"),
438
+ p(types_js_1.EntityType.IBAN, String.raw `\bCZ\d{22}\b`, "iban"),
439
+ p(types_js_1.EntityType.VAT, String.raw `\bCZ\d{8,10}\b`),
440
+ p(types_js_1.EntityType.PHONE, String.raw `\b[67]\d{2}[\s\-]?\d{3}[\s\-]?\d{3}\b`),
441
+ p(types_js_1.EntityType.PHONE, String.raw `\b[67]\d{8}\b`),
442
+ p(types_js_1.EntityType.PHONE, String.raw `\+420\s?[67]\d{2}[\s\-]?\d{3}[\s\-]?\d{3}`),
443
+ p(types_js_1.EntityType.POSTAL_CODE, String.raw `\b\d{3}\s?\d{2}\b`, null, "", ["PSČ", "poštovní", "adresa", "ulice", "Postal:", "Address:"], true),
444
+ ],
445
+ };
446
+ const SK = {
447
+ code: "SK",
448
+ name: "Slovakia",
449
+ patterns: [
450
+ p(types_js_1.EntityType.NATIONAL_ID, String.raw `\b\d{6}/?\d{3,4}\b`, "czech_birth_number"),
451
+ p(types_js_1.EntityType.IBAN, String.raw `\bSK\d{2}\s?\d{4}\s?\d{4}\s?\d{4}\s?\d{4}\s?\d{4}\b`, "iban"),
452
+ p(types_js_1.EntityType.IBAN, String.raw `\bSK\d{22}\b`, "iban"),
453
+ p(types_js_1.EntityType.VAT, String.raw `\bSK\d{10}\b`),
454
+ p(types_js_1.EntityType.PHONE, String.raw `\b0?9\d{2}[\s\-]?\d{3}[\s\-]?\d{3}\b`),
455
+ p(types_js_1.EntityType.PHONE, String.raw `\+421\s?9\d{2}[\s\-]?\d{3}[\s\-]?\d{3}`),
456
+ p(types_js_1.EntityType.POSTAL_CODE, String.raw `\b\d{3}\s?\d{2}\b`, null, "", ["PSČ", "poštové", "adresa", "ulica", "Postal:", "Address:"], true),
457
+ ],
458
+ };
459
+ const EE = {
460
+ code: "EE",
461
+ name: "Estonia",
462
+ patterns: [
463
+ p(types_js_1.EntityType.NATIONAL_ID, String.raw `\b[1-6]\d{10}\b`, "estonian_id"),
464
+ p(types_js_1.EntityType.IBAN, String.raw `\bEE\d{2}\s?\d{4}\s?\d{4}\s?\d{4}\s?\d{4}\b`, "iban"),
465
+ p(types_js_1.EntityType.IBAN, String.raw `\bEE\d{18}\b`, "iban"),
466
+ p(types_js_1.EntityType.VAT, String.raw `\bEE\d{9}\b`),
467
+ p(types_js_1.EntityType.PHONE, String.raw `\b5\d{3}[\s\-]?\d{4}\b`),
468
+ p(types_js_1.EntityType.PHONE, String.raw `\b5\d{7}\b`),
469
+ p(types_js_1.EntityType.PHONE, String.raw `\+372\s?5\d{3}[\s\-]?\d{3,4}`),
470
+ p(types_js_1.EntityType.POSTAL_CODE, String.raw `\b\d{5}\b`, null, "", ["postiindeks", "sihtnumber", "aadress", "address", "Address:", "Postal:"], true),
471
+ ],
472
+ };
473
+ const LT = {
474
+ code: "LT",
475
+ name: "Lithuania",
476
+ patterns: [
477
+ p(types_js_1.EntityType.NATIONAL_ID, String.raw `\b[1-6]\d{10}\b`, "estonian_id"),
478
+ p(types_js_1.EntityType.IBAN, String.raw `\bLT\d{2}\s?\d{4}\s?\d{4}\s?\d{4}\s?\d{4}\b`, "iban"),
479
+ p(types_js_1.EntityType.IBAN, String.raw `\bLT\d{18}\b`, "iban"),
480
+ p(types_js_1.EntityType.VAT, String.raw `\bLT\d{9,12}\b`),
481
+ p(types_js_1.EntityType.PHONE, String.raw `\b6\d{2}[\s\-]?\d{2}[\s\-]?\d{3}\b`),
482
+ p(types_js_1.EntityType.PHONE, String.raw `\b6\d{7}\b`),
483
+ p(types_js_1.EntityType.PHONE, String.raw `\b8[\s\-]?6\d{2}[\s\-]?\d{2}[\s\-]?\d{3}\b`),
484
+ p(types_js_1.EntityType.PHONE, String.raw `\+370\s?6\d{2}[\s\-]?\d{2}[\s\-]?\d{3}`),
485
+ p(types_js_1.EntityType.POSTAL_CODE, String.raw `\bLT-\d{5}\b`),
486
+ ],
487
+ };
488
+ const LV = {
489
+ code: "LV",
490
+ name: "Latvia",
491
+ patterns: [
492
+ p(types_js_1.EntityType.NATIONAL_ID, String.raw `\b\d{6}-\d{5}\b`),
493
+ p(types_js_1.EntityType.NATIONAL_ID, String.raw `\b(?:0[1-9]|[12]\d|3[01])(?:0[1-9]|1[0-2])\d{7}\b`, null, "", ["personas kods", "PK", "identifikācijas"], true),
494
+ p(types_js_1.EntityType.IBAN, String.raw `\bLV\d{2}\s?[A-Z]{4}\s?\d{4}\s?\d{4}\s?\d{4}\s?\d\b`, "iban"),
495
+ p(types_js_1.EntityType.IBAN, String.raw `\bLV\d{2}[A-Z]{4}\d{13}\b`, "iban"),
496
+ p(types_js_1.EntityType.VAT, String.raw `\bLV\d{11}\b`),
497
+ p(types_js_1.EntityType.PHONE, String.raw `\b[2]\d{3}[\s\-]?\d{4}\b`),
498
+ p(types_js_1.EntityType.PHONE, String.raw `\b[2]\d{7}\b`),
499
+ p(types_js_1.EntityType.PHONE, String.raw `\+371\s?[2]\d{3}[\s\-]?\d{3,4}`),
500
+ p(types_js_1.EntityType.POSTAL_CODE, String.raw `\bLV-\d{4}\b`),
501
+ ],
502
+ };
503
+ const HR = {
504
+ code: "HR",
505
+ name: "Croatia",
506
+ patterns: [
507
+ p(types_js_1.EntityType.NATIONAL_ID, String.raw `\b\d{11}\b`, "croatian_oib"),
508
+ p(types_js_1.EntityType.IBAN, String.raw `\bHR\d{2}\s?\d{4}\s?\d{4}\s?\d{4}\s?\d{4}\s?\d{3}\b`, "iban"),
509
+ p(types_js_1.EntityType.IBAN, String.raw `\bHR\d{2}\s\d{4}\s\d{4}\s\d{4}\s\d{5}\b`, "iban"),
510
+ p(types_js_1.EntityType.IBAN, String.raw `\bHR\d{19}\b`, "iban"),
511
+ p(types_js_1.EntityType.VAT, String.raw `\bHR\d{11}\b`),
512
+ p(types_js_1.EntityType.PHONE, String.raw `\b0?9[12579][\s\-]?\d{3}[\s\-]?\d{3,4}\b`),
513
+ p(types_js_1.EntityType.PHONE, String.raw `\b0?9[12579]\d{7,8}\b`),
514
+ p(types_js_1.EntityType.PHONE, String.raw `\+385\s?9[12579][\s\-]?\d{3}[\s\-]?\d{3,4}`),
515
+ p(types_js_1.EntityType.POSTAL_CODE, String.raw `\b[1-5]\d{4}\b`, null, "", ["poštanski broj", "poštanski", "adresa", "ulica", "Postal:", "Address:"], true),
516
+ ],
517
+ };
518
+ const HU = {
519
+ code: "HU",
520
+ name: "Hungary",
521
+ patterns: [
522
+ p(types_js_1.EntityType.NATIONAL_ID, String.raw `\b\d{9}\b`, "hungarian_taj"),
523
+ p(types_js_1.EntityType.NATIONAL_ID, String.raw `\b\d{3}\s\d{3}\s\d{3}\b`, "hungarian_taj"),
524
+ p(types_js_1.EntityType.TAX_ID, String.raw `\b8\d{9}\b`, null, "", ["adóazonosító", "adószám", "adóazonosító jel"], true),
525
+ p(types_js_1.EntityType.VAT, String.raw `\bHU\d{8,11}\b`, null, "", ["adószám", "ÁFA"]),
526
+ p(types_js_1.EntityType.IBAN, String.raw `\bHU\d{2}\s?\d{4}\s?\d{4}\s?\d{4}\s?\d{4}\s?\d{4}\s?\d{4}\b`, "iban"),
527
+ p(types_js_1.EntityType.IBAN, String.raw `\bHU\d{26}\b`, "iban"),
528
+ p(types_js_1.EntityType.PHONE, String.raw `\b06\s?\d{1,2}[\s\-]?\d{3}[\s\-]?\d{3,4}\b`),
529
+ p(types_js_1.EntityType.PHONE, String.raw `\+36\s?\d{1,2}[\s\-]?\d{3}[\s\-]?\d{3,4}`),
530
+ p(types_js_1.EntityType.POSTAL_CODE, String.raw `\b[1-9]\d{3}\b`, null, "", ["irányítószám", "postai", "cím", "utca", "Postal:", "Address:"], true),
531
+ p(types_js_1.EntityType.POSTAL_CODE, String.raw `(?<=, )[1-9]\d{3}(?= [A-Z])`),
532
+ ],
533
+ };
534
+ const RO = {
535
+ code: "RO",
536
+ name: "Romania",
537
+ patterns: [
538
+ p(types_js_1.EntityType.NATIONAL_ID, String.raw `\b[1-8]\d{12}\b`, "romanian_cnp"),
539
+ p(types_js_1.EntityType.IBAN, String.raw `\bRO\d{2}[A-Z]{4}\d{16}\b`, "iban"),
540
+ p(types_js_1.EntityType.VAT, String.raw `\bRO\d{2,10}\b`),
541
+ p(types_js_1.EntityType.PHONE, String.raw `\b0?7[2-9]\d{1}[\s\-]?\d{3}[\s\-]?\d{3,4}\b`),
542
+ p(types_js_1.EntityType.PHONE, String.raw `\b0?7[2-9]\d{7,8}\b`),
543
+ p(types_js_1.EntityType.PHONE, String.raw `\+40\s?7[2-9]\d{1}[\s\-]?\d{3}[\s\-]?\d{3,4}`),
544
+ p(types_js_1.EntityType.POSTAL_CODE, String.raw `\b\d{6}\b`, null, "", ["cod poștal", "cod postal", "adresă", "strada", "Postal:", "Address:"], true),
545
+ ],
546
+ };
547
+ const EL = {
548
+ code: "EL",
549
+ name: "Greece",
550
+ patterns: [
551
+ p(types_js_1.EntityType.TAX_ID, String.raw `\b\d{9}\b`, "greek_afm"),
552
+ p(types_js_1.EntityType.NATIONAL_ID, String.raw `\b\d{11}\b`, "greek_amka"),
553
+ p(types_js_1.EntityType.IBAN, String.raw `\bGR\d{2}\s?\d{4}\s?\d{4}\s?\d{4}\s?\d{4}\s?\d{4}\s?\d{3}\b`, "iban"),
554
+ p(types_js_1.EntityType.IBAN, String.raw `\bGR\d{25}\b`, "iban"),
555
+ p(types_js_1.EntityType.VAT, String.raw `\bEL\d{9}\b`),
556
+ p(types_js_1.EntityType.PHONE, String.raw `\b69\d[\s\-]?\d{3,4}[\s\-]?\d{4}\b`),
557
+ p(types_js_1.EntityType.PHONE, String.raw `\b69\d{8}\b`),
558
+ p(types_js_1.EntityType.PHONE, String.raw `\b2\d{1,3}[\s\-]?\d{3,4}[\s\-]?\d{3,4}\b`),
559
+ p(types_js_1.EntityType.PHONE, String.raw `\+30\s?\d{2,4}[\s\-]?\d{3,4}[\s\-]?\d{3,4}`),
560
+ p(types_js_1.EntityType.POSTAL_CODE, String.raw `\b\d{3}\s?\d{2}\b`, null, "", ["Τ.Κ.", "ταχυδρομικός", "address", "Address:", "Postal:", "διεύθυνση", "οδός"], true),
561
+ ],
562
+ };
563
+ const SI = {
564
+ code: "SI",
565
+ name: "Slovenia",
566
+ patterns: [
567
+ p(types_js_1.EntityType.NATIONAL_ID, String.raw `\b\d{13}\b`, "slovenian_emso"),
568
+ p(types_js_1.EntityType.IBAN, String.raw `\bSI\d{2}\s?\d{4}\s?\d{4}\s?\d{4}\s?\d{3}\b`, "iban"),
569
+ p(types_js_1.EntityType.IBAN, String.raw `\bSI\d{17}\b`, "iban"),
570
+ p(types_js_1.EntityType.VAT, String.raw `\bSI\d{8}\b`),
571
+ p(types_js_1.EntityType.PHONE, String.raw `\b0?[34567]\d{1}[\s\-]?\d{3}[\s\-]?\d{3}\b`),
572
+ p(types_js_1.EntityType.PHONE, String.raw `\b0?[34567]\d{7}\b`),
573
+ p(types_js_1.EntityType.PHONE, String.raw `\+386\s?[34567]\d{1}[\s\-]?\d{3}[\s\-]?\d{3}`),
574
+ p(types_js_1.EntityType.POSTAL_CODE, String.raw `\b[1-9]\d{3}\b`, null, "", ["poštna številka", "poštna", "naslov", "ulica", "Postal:", "Address:"], true),
575
+ p(types_js_1.EntityType.POSTAL_CODE, String.raw `(?<=, )[1-9]\d{3}(?= [A-Z])`),
576
+ ],
577
+ };
578
+ const MT = {
579
+ code: "MT",
580
+ name: "Malta",
581
+ patterns: [
582
+ p(types_js_1.EntityType.NATIONAL_ID, String.raw `\b\d{5,7}[MGAPLHBZ]\b`),
583
+ p(types_js_1.EntityType.IBAN, String.raw `\bMT\d{2}\s?[A-Z]{4}\s?\d{4}\s?\d{4}\s?[A-Z0-9]{4}\s?[A-Z0-9]{4}\s?[A-Z0-9]{4}\s?[A-Z0-9]{3}\b`, "iban"),
584
+ p(types_js_1.EntityType.IBAN, String.raw `\bMT\d{2}[A-Z]{4}\d{5}[A-Z0-9]{18}\b`, "iban"),
585
+ p(types_js_1.EntityType.VAT, String.raw `\bMT\d{8}\b`),
586
+ p(types_js_1.EntityType.PHONE, String.raw `\b[79]\d{3}[\s\-]?\d{4}\b`),
587
+ p(types_js_1.EntityType.PHONE, String.raw `\b[79]\d{7}\b`),
588
+ p(types_js_1.EntityType.PHONE, String.raw `\+356\s?[79]\d{3}[\s\-]?\d{3,4}`),
589
+ p(types_js_1.EntityType.POSTAL_CODE, String.raw `\b[A-Z]{3}\s?\d{4}\b`, null, "", ["kodiċi postali", "postcode", "address", "Address:", "Postal:"], true),
590
+ ],
591
+ };
592
+ // ---------------------------------------------------------------------------
593
+ // Export all configs as a single Record
594
+ // ---------------------------------------------------------------------------
595
+ exports.COUNTRY_CONFIGS = {
596
+ SHARED,
597
+ NL,
598
+ BE,
599
+ DE,
600
+ AT,
601
+ CH,
602
+ FR,
603
+ DK,
604
+ SE,
605
+ NO,
606
+ FI,
607
+ IS,
608
+ IT,
609
+ ES,
610
+ PT,
611
+ LU,
612
+ PL,
613
+ IE,
614
+ UK,
615
+ BG,
616
+ CY,
617
+ CZ,
618
+ SK,
619
+ EE,
620
+ LT,
621
+ LV,
622
+ HR,
623
+ HU,
624
+ RO,
625
+ EL,
626
+ SI,
627
+ MT,
628
+ };