feat: initial release of @mobiletic/anonymizer
Framework-agnostic PII anonymization extracted from Mobiletic's chatbot. Pluggable LLM detection + configurable regex fallback, deterministic coreference, and streaming-safe de-anonymization. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
29
src/presets.ts
Normal file
29
src/presets.ts
Normal file
@@ -0,0 +1,29 @@
|
||||
import type { PatternDef } from './types.js';
|
||||
|
||||
/**
|
||||
* Swiss preset — the structured identifiers most relevant to the Swiss nLPD.
|
||||
* Order matters: specific patterns (AVS, IBAN) come before generic ones.
|
||||
*/
|
||||
const swiss: PatternDef[] = [
|
||||
{ tag: 'AVS', re: /\b756\.\d{4}\.\d{4}\.\d{2}\b/g }, // Swiss social security (AVS/AHV)
|
||||
{ tag: 'IBAN', re: /\bCH\d{2}[0-9A-Z]{17}\b/gi }, // Swiss IBAN
|
||||
{ tag: 'EMAIL', re: /\b[\w.+-]+@[\w-]+\.[\w.-]+\b/g },
|
||||
{ tag: 'TEL', re: /(?:\+41|0)(?:[\s.-]?\d){9}\b/g }, // Swiss phone number
|
||||
{ tag: 'DATE', re: /\b\d{1,2}[./-]\d{1,2}[./-]\d{2,4}\b/g },
|
||||
];
|
||||
|
||||
/**
|
||||
* Generic preset — locale-agnostic identifiers useful as a starting point
|
||||
* anywhere. Extend or compose with your own {@link PatternDef}s as needed.
|
||||
*/
|
||||
const generic: PatternDef[] = [
|
||||
{ tag: 'EMAIL', re: /\b[\w.+-]+@[\w-]+\.[\w.-]+\b/g },
|
||||
{ tag: 'IBAN', re: /\b[A-Z]{2}\d{2}[0-9A-Z]{11,30}\b/g },
|
||||
{ tag: 'CREDIT_CARD', re: /\b(?:\d[ -]?){13,16}\b/g },
|
||||
{ tag: 'IPV4', re: /\b(?:\d{1,3}\.){3}\d{1,3}\b/g },
|
||||
{ tag: 'TEL', re: /\b(?:\+?\d{1,3}[\s.-]?)?(?:\(?\d{2,4}\)?[\s.-]?){2,4}\d{2,4}\b/g },
|
||||
{ tag: 'DATE', re: /\b\d{1,2}[./-]\d{1,2}[./-]\d{2,4}\b/g },
|
||||
];
|
||||
|
||||
/** Built-in pattern sets for the regex fallback. */
|
||||
export const presets = { swiss, generic };
|
||||
Reference in New Issue
Block a user