{"version":3,"sources":["../src/index.ts","../src/tools/HardCodedMap/index.ts","../src/tools/ZeroWidthRegExp.ts"],"sourcesContent":["import { graphemeSegments } from 'unicode-segmenter/grapheme';\r\nimport Homoglypher from \"homoglypher\";\r\nimport EmojiRegexFactory from 'emoji-regex';\r\n\r\nimport HardCodedMap from \"./tools/HardCodedMap/index.js\";\r\nimport ZeroWidthRegExp from \"./tools/ZeroWidthRegExp.js\";\r\n\r\n//\r\n\r\nexport interface Options {\r\n    skipHardcodedMapping?: boolean;\r\n\r\n    removeLeftovers?: boolean;\r\n    onLeftovers?: ((nonASCII: string) => void) | null;\r\n}\r\n\r\nexport { TAFIC };\r\n\r\n//\r\n\r\nconst DefaultOptions: Required<Options> = {\r\n    skipHardcodedMapping: false,\r\n\r\n    removeLeftovers: true,\r\n    onLeftovers: null,\r\n};\r\n\r\n//\r\n\r\nexport default class TAFIC {\r\n    private static readonly Homoglypher = new Homoglypher();\r\n    private static readonly EmojiRegex = EmojiRegexFactory();\r\n\r\n    private static readonly RegExp_ALL_ASCII_IN_STR = /[\\x00-\\x7F]+/g;\r\n    private static readonly RegExp_ALL_NONASCII_IN_STR = /[^\\x00-\\x7F]+/g;\r\n    private static readonly RegExp_ACCENTS = /\\p{Mn}/gu;\r\n\r\n    //\r\n\r\n    static Normalize(str: string, o?: Options): string {\r\n        const skipHardcodedMapping = o?.skipHardcodedMapping ?? DefaultOptions.skipHardcodedMapping;\r\n        const removeLeftovers = o?.removeLeftovers ?? DefaultOptions.removeLeftovers;\r\n\r\n        //\r\n\r\n        str = this.SeparateAndRemoveDiacriticsForHCMapping(str);\r\n\r\n        //\r\n\r\n        let graphemes = this.GetGraphemes(str);\r\n\r\n        //\r\n\r\n        if (!skipHardcodedMapping)\r\n            graphemes = this.ApplyHardcodedMapRules(graphemes)\r\n\r\n        //\r\n\r\n        graphemes = this.RemoveZeroWidthCharacters(graphemes);\r\n        str = graphemes.join(\"\");\r\n\r\n        //\r\n\r\n        str = this.ApplyBuiltinCompatibilities(str);\r\n\r\n        //\r\n\r\n        str = this.Homoglypher.normalize(str, { skipCustom: true });\r\n\r\n        //\r\n\r\n        if (o?.onLeftovers) {\r\n            this.RegExp_ALL_ASCII_IN_STR.lastIndex = 0;\r\n            const nonASCII = str.replace(this.RegExp_ALL_ASCII_IN_STR, '');\r\n\r\n            if (nonASCII.length > 0)\r\n                o.onLeftovers(nonASCII);\r\n        }\r\n\r\n        //\r\n\r\n        const result = (removeLeftovers ? this.RemoveNonASCII(str) : str).trim();\r\n\r\n        //\r\n\r\n        return result;\r\n    }\r\n\r\n    //\r\n\r\n    private static GetGraphemes(str: string): string[] {\r\n        const segments = graphemeSegments(str);\r\n\r\n        const result: string[] = [];\r\n\r\n        for (const s of segments)\r\n            result.push(s.segment);\r\n\r\n        return result;\r\n    }\r\n\r\n    private static IsGraphemeOnlyASCII(grapheme: string): boolean {\r\n        this.RegExp_ALL_NONASCII_IN_STR.lastIndex = 0;\r\n        return !this.RegExp_ALL_NONASCII_IN_STR.test(grapheme);\r\n    }\r\n\r\n    private static IsStringOnlyEmoji(str: string): boolean {\r\n        const matches = str.match(this.EmojiRegex);\r\n        return matches !== null && matches.join('') === str;\r\n    }\r\n\r\n    //\r\n\r\n    private static SeparateAndRemoveDiacriticsForHCMapping(str: string) {\r\n        str = str.normalize(\"NFD\"); // Separate various diacritics for easier hcmap mapping\r\n\r\n        this.RegExp_ACCENTS.lastIndex = 0;\r\n        return str.replace(this.RegExp_ACCENTS, ''); // removing them\r\n    }\r\n\r\n    private static ApplyHardcodedMapRules(graphemes: string[]) {\r\n        const hcmapMappedGlyphs = (\r\n            graphemes.map(g => {\r\n                return HardCodedMap.get(g) ?? g\r\n            })\r\n        );\r\n\r\n        return hcmapMappedGlyphs;\r\n    }\r\n\r\n    private static RemoveZeroWidthCharacters(graphemes: string[]) {\r\n        return graphemes.map(g => {\r\n            if (this.IsGraphemeOnlyASCII(g) || this.IsStringOnlyEmoji(g))\r\n                return g;\r\n\r\n            return g.replace(ZeroWidthRegExp, '');\r\n        });\r\n    }\r\n\r\n    private static ApplyBuiltinCompatibilities(str: string): string {\r\n        return str.normalize('NFKC');\r\n    }\r\n\r\n    private static RemoveNonASCII(str: string): string {\r\n        this.RegExp_ALL_NONASCII_IN_STR.lastIndex = 0;\r\n        return str.replace(this.RegExp_ALL_NONASCII_IN_STR, '');\r\n    }\r\n}","export interface HardCodedUnit {\r\n    replacement: string;\r\n    similarities: string[]\r\n}\r\n\r\n//\r\n\r\n// usage example: {replacement: \"a\", similarities: [\"à\", \"á\", \"â\", \"ä\", \"ã\", \"å\", \"ā\", \"ą\", \"æ\"]},\r\nexport const HardCoded: HardCodedUnit[] = [\r\n    {\"replacement\":\"_\",\"similarities\":[\"˷\",\"˽\",\"▂\"]},\r\n    {\"replacement\":\"-\",\"similarities\":[\"ꟷ\",\"〜\",\"¬\",\"֊\",\"ᅩ\",\"ᅳ\",\"—\",\"⌢\",\"─\",\"━\",\"╾\",\"▪\",\"ー\", \"⸺\"]},\r\n    {\"replacement\":\";\",\"similarities\":[\"⁏\"]},\r\n    {\"replacement\":\":\",\"similarities\":[\"⠃\",\"⠌\",\"⠰\",\"⡈\",\"⁝\"]},\r\n    {\"replacement\":\"!\",\"similarities\":[\"❗\",\"❗️\",\"❣\",\"⣛\"]},\r\n    {\"replacement\":\"?\",\"similarities\":[\"¿\",\"؟\"]},\r\n    {\"replacement\":\".\",\"similarities\":[\"⬝\",\"∙\",\"⦁\",\"᛫\",\"‧\",\"⸳\",\"ꞏ\",\"·\",\"ˑ\",\"˯\",\"˳\",\"•\",\"⋅\",\"⠄\",\"⠐\",\"⠠\",\"⡀\",\"⢀\",\"⸱\",\"。\",\"・\",\"｡\"]},\r\n    {\"replacement\":\",\",\"similarities\":[\"､\",\"܉\",\"⸴\",\"ܝ\",\"¸\",\"ˏ\",\"˒\",\"˓\",\"˔\",\"ˬ\",\"˰\",\"˱\",\"˲\",\"˻\",\"˼\",\"˿\",\"⢄\",\"⢠\",\"⢤\",\"⣄\",\"⣠\",\"、\"]},\r\n    {\"replacement\":\"'\",\"similarities\":[\"៸\",\"˙\",\"˹\",\"˺\",\"⠁\",\"⠈\",\"⠊\",\"⠋\",\"⠘\",\"⠙\"]},\r\n    {\"replacement\":\"\\\"\",\"similarities\":[\"˵\",\"˶\",\"”\",\"„\"]},\r\n    {\"replacement\":\"(\",\"similarities\":[\"【\"]},\r\n    {\"replacement\":\")\",\"similarities\":[\"】\"]},\r\n    {\"replacement\":\"[\",\"similarities\":[\"⦏\"]},\r\n    {\"replacement\":\"]\",\"similarities\":[\"⦎\"]},\r\n    {\"replacement\":\"*\",\"similarities\":[\"҉\",\"※\",\"☀\",\"☆\",\"⛥\",\"✩\",\"✮\",\"✱\"]},\r\n    {\"replacement\":\"/\",\"similarities\":[\"༼\"]},\r\n    {\"replacement\":\"\\\\\",\"similarities\":[\"༽\"]},\r\n    {\"replacement\":\"%\",\"similarities\":[\"÷\"]},\r\n    {\"replacement\":\"^\",\"similarities\":[\"ᄉ\",\"ᄌ\"]},\r\n    {\"replacement\":\"<\",\"similarities\":[\"ᗒ\",\"〈\",\"《\"]},\r\n    {\"replacement\":\"=\",\"similarities\":[\"˭\",\"═\",\"ニ\"]},\r\n    {\"replacement\":\">\",\"similarities\":[\"ᗕ\",\"〉\",\"》\"]},\r\n    {\"replacement\":\"|\",\"similarities\":[\"৷\",\"⏐\",\"¦\",\"ᅡ\",\"ᅣ\",\"ᅥ\",\"ᅵ\",\"╎\",\"⠇\",\"⠸\",\"⡆\",\"⡇\",\"⢰\",\"⢸\",\"⋮\",\"︴\"]},\r\n    {\"replacement\":\"$\",\"similarities\":[\"💲\",\"ֆ\"]},\r\n    {\"replacement\":\"0\",\"similarities\":[\"0️⃣\",\"0⃣\",\"⓿\",\"🄌\",\"⓪\",\"🄋\",\"θ\",\"ᆷ\",\"᱐\",\"囗\"]},\r\n    {\"replacement\":\"1\",\"similarities\":[\"1️⃣\",\"1⃣\",\"❶\",\"➊\",\"①\",\"➀\"]},\r\n    {\"replacement\":\"2\",\"similarities\":[\"2️⃣\",\"2⃣\",\"❷\",\"➋\",\"②\",\"➁\",\"ƨ\",\"ᄅ\",\"ᆯ\",\"己\"]},\r\n    {\"replacement\":\"3\",\"similarities\":[\"3️⃣\",\"3⃣\",\"❸\",\"➌\",\"③\",\"➂\",\"Э\",\"з\",\"э\",\"ℨ\",\"ꝫ\"]},\r\n    {\"replacement\":\"4\",\"similarities\":[\"4️⃣\",\"4⃣\",\"❹\",\"➍\",\"④\",\"➃\"]},\r\n    {\"replacement\":\"5\",\"similarities\":[\"5️⃣\",\"5⃣\",\"❺\",\"➎\",\"⑤\",\"➄\",\"ƽ\",\"⣫\",\"丂\"]},\r\n    {\"replacement\":\"6\",\"similarities\":[\"6️⃣\",\"6⃣\",\"❻\",\"➏\",\"⑥\",\"➅\"]},\r\n    {\"replacement\":\"7\",\"similarities\":[\"7️⃣\",\"7⃣\",\"❼\",\"➐\",\"⑦\",\"➆\",\"ク\",\"タ\",\"ワ\"]},\r\n    {\"replacement\":\"8\",\"similarities\":[\"8️⃣\",\"8⃣\",\"❽\",\"➑\",\"⑧\",\"➇\",\"⽇\"]},\r\n    {\"replacement\":\"9\",\"similarities\":[\"9️⃣\",\"9⃣\",\"❾\",\"➒\",\"⑨\",\"➈\",\"⣻\"]},\r\n    {\"replacement\":\"a\",\"similarities\":[\"ᴀ\",\"ᶏ\",\"⍶\",\"▴\",\"ꬰ\",\"▲\"]},\r\n    {\"replacement\":\"A\",\"similarities\":[\"⩜\",\"ᗋ\",\"🇦\",\"Δ\",\"Λ\",\"λ\",\"д\",\"ค\",\"Ꭿ\",\"ᗩ\",\"₳\",\"人\",\"𐌀\",\"🅰\",\"🅰️\"]},\r\n    {\"replacement\":\"b\",\"similarities\":[\"ƀ\",\"ƃ\",\"ɓ\",\"ʙ\",\"Ъ\",\"в\",\"ъ\",\"ь\",\"ᴃ\",\"ᵬ\",\"ᶀ\",\"ⲃ\",\"ち\"]},\r\n    {\"replacement\":\"B\",\"similarities\":[\"ß\",\"Ɓ\",\"Ƀ\",\"฿\",\"፪\",\"Ⲃ\",\"乃\",\"🅱️\"]},\r\n    {\"replacement\":\"c\",\"similarities\":[\"¢\",\"©\",\"ƈ\",\"ɕ\",\"ς\",\"ϲ\",\"ᄃ\",\"￠\"]},\r\n    {\"replacement\":\"C\",\"similarities\":[\"Ƈ\",\"ʗ\",\"Ϲ\",\"ር\",\"Ꮳ\",\"ᑕ\",\"₵\",\"⊂\",\"匚\",\"Ꞓ\",\"🅲\"]},\r\n    {\"replacement\":\"d\",\"similarities\":[\"đ\",\"ȡ\",\"ɖ\",\"ɗ\",\"Ԁ\",\"ᴅ\",\"ᵭ\",\"ᶁ\",\"ᶑ\"]},\r\n    {\"replacement\":\"D\",\"similarities\":[\"⫐\",\"🇩\",\"Ð\",\"Đ\",\"Ɗ\"]},\r\n    {\"replacement\":\"e\",\"similarities\":[\"ɐ\",\"ⴒ\",\"ǝ\",\"ə\",\"ᶒ\",\"ⱸ\"]},\r\n    {\"replacement\":\"E\",\"similarities\":[\"∈\",\"🇪\",\"£\",\"Ǝ\",\"Ɛ\",\"ɛ\",\"Ξ\",\"έ\",\"ε\",\"ϵ\",\"Є\",\"є\",\"ع\",\"ᗴ\",\"ᙓ\",\"ᴇ\",\"ᶓ\",\"€\",\"∍\",\"≋\",\"ⲉ\",\"乇\",\"𐌄\"]},\r\n    {\"replacement\":\"f\",\"similarities\":[\"ƒ\",\"ғ\",\"ᶂ\",\"ꜰ\"]},\r\n    {\"replacement\":\"F\",\"similarities\":[\"Ƒ\",\"Ꝼ\"]},\r\n    {\"replacement\":\"g\",\"similarities\":[\"ᏽ\",\"ǥ\",\"ɠ\",\"ɢ\"]},\r\n    {\"replacement\":\"G\",\"similarities\":[\"Ᏽ\",\"🇬\",\"Ɠ\",\"Ǥ\",\"₲\"]},\r\n    {\"replacement\":\"h\",\"similarities\":[\"ħ\",\"ɦ\",\"ʜ\",\"ⱨ\",\"ん\"]},\r\n    {\"replacement\":\"H\",\"similarities\":[\"ӊ\",\"н\",\"ᅢ\",\"Ⱨ\"]},\r\n    {\"replacement\":\"i\",\"similarities\":[\"¡\",\"ɨ\",\"ᶖ\",\"⫯\",\"ⲓ\",\"ꪱ\"]},\r\n    {\"replacement\":\"I\",\"similarities\":[\"Ɨ\",\"І\",\"Ї\",\"工\"]},\r\n    {\"replacement\":\"j\",\"similarities\":[\"ȷ\",\"ɉ\",\"ɟ\",\"ʝ\",\"د\",\"ر\",\"ᴊ\",\"⡸\",\"⣨\"]},\r\n    {\"replacement\":\"J\",\"similarities\":[\"ᒙ\",\"Ɉ\",\"ك\",\"ᓚ\",\"╯\",\"⣼\",\"丁\"]},\r\n    {\"replacement\":\"k\",\"similarities\":[\"ƙ\",\"κ\",\"к\",\"ќ\",\"ҝ\",\"ҟ\",\"ӄ\",\"ᴋ\",\"ᶄ\",\"ⱪ\",\"ⲕ\",\"ꝁ\",\"ꝃ\",\"ꝅ\"]},\r\n    {\"replacement\":\"K\",\"similarities\":[\"Ƙ\",\"Ҝ\",\"₭\",\"Ⱪ\",\"Ꝁ\",\"Ꝃ\"]},\r\n    {\"replacement\":\"l\",\"similarities\":[\"ᶩ\",\"ɭ\",\"𐑊\",\"ŀ\",\"ł\",\"ƚ\",\"ȴ\",\"ɫ\",\"ɬ\",\"ɭ\",\"ʟ\",\"ᥣ\",\"ᴌ\",\"ᶅ\",\"╰\",\"❙\",\"❚\",\"ⱡ\",\"ꝉ\",\"ꞁ\"]},\r\n    {\"replacement\":\"L\",\"similarities\":[\"լ\",\"┗\",\"ட\",\"ᒷ\",\"𐑃\",\"Ŀ\",\"Ł\",\"Ƚ\",\"Լ\",\"ᄂ\",\"ᆫ\",\"∟\",\"└\",\"⠧\",\"⠼\",\"⣆\",\"⣇\",\"⣧\",\"⣸\",\"Ⱡ\",\"Ɫ\",\"し\",\"ㄥ\",\"Ꝇ\",\"Ꝉ\",\"𐌋\",\"🇱\",\"ᒺ\"]},\r\n    {\"replacement\":\"m\",\"similarities\":[\"⫙\",\"ӎ\",\"ɱ\",\"м\",\"๓\",\"ᴍ\",\"ᵯ\",\"ᶆ\",\"₥\"]},\r\n    {\"replacement\":\"M\",\"similarities\":[\"𐊿\",\"ϻ\",\"Ӎ\",\"ᙏ\",\"ʍ\",\"ᛗ\",\"Ɱ\",\"ꮇ\",\"𐊎\",\"𐌼\",\"🇲\"]},\r\n    {\"replacement\":\"n\",\"similarities\":[\"ŉ\",\"ŋ\",\"ƞ\",\"ȵ\",\"ɲ\",\"ɳ\",\"ɴ\",\"ή\",\"η\",\"π\",\"и\",\"л\",\"п\",\"ղ\",\"ภ\",\"ᵰ\",\"ᶇ\",\"ᾔ\",\"ⲛ\"]},\r\n    {\"replacement\":\"N\",\"similarities\":[\"Ɲ\",\"Ƞ\",\"П\",\"ຖ\",\"ᘉ\",\"₦\",\"ﬡ\"]},\r\n    {\"replacement\":\"o\",\"similarities\":[\"🇴\",\"ʘ\",\"°\",\"ð\",\"ø\",\"ǿ\",\"ɵ\",\"́\",\"δ\",\"҈\",\"࿁\",\"ᄆ\",\"ᄋ\",\"∘\",\"◦\",\"▫\",\"◎\",\"●\",\"◕\",\"⚈\",\"❍\",\"ⱺ\",\"ロ\",\"ꝋ\",\"ꝍ\"]},\r\n    {\"replacement\":\"O\",\"similarities\":[\"Ø\",\"Ɵ\",\"Ǿ\",\"⭘\",\"◯\",\"Ꝋ\",\"Ꝍ\",\"𑄶\"]},\r\n    {\"replacement\":\"p\",\"similarities\":[\"℗\",\"þ\",\"ƥ\",\"ƿ\",\"ҏ\",\"ք\",\"ᴘ\",\"ᵱ\",\"ᵽ\",\"ᶈ\",\"⠟\",\"ꝑ\",\"ꝓ\",\"ꝕ\"]},\r\n    {\"replacement\":\"P\",\"similarities\":[\"Ⴒ\",\"ᑷ\",\"ᖘ\",\"Þ\",\"Ƥ\",\"Ƿ\",\"Ҏ\",\"ק\",\"م\",\"ᑬ\",\"ᕵ\",\"ᖰ\",\"‽\",\"₱\",\"℘\",\"⡟\",\"⡿\",\"Ᵽ\",\"卩\",\"尸\",\"Ꝑ\",\"Ꝓ\",\"Ꝕ\",\"🅿️\",\"🇵\"]},\r\n    {\"replacement\":\"q\",\"similarities\":[\"¶\",\"ɋ\",\"ᶐ\",\"ꝗ\",\"ꟼ\"]},\r\n    {\"replacement\":\"r\",\"similarities\":[\"®\",\"ſ\",\"ɍ\",\"ɼ\",\"ɽ\",\"ɾ\",\"ʀ\",\"Г\",\"ѓ\",\"ґ\",\"፫\",\"ᵲ\",\"ᵳ\",\"ᶉ\",\"ẛ\",\"⠏\",\"⡏\",\"ꞅ\"]},\r\n    {\"replacement\":\"R\",\"similarities\":[\"Ɍ\",\"Я\",\"я\",\"Ɽ\",\"尺\",\"🇷\"]},\r\n    {\"replacement\":\"s\",\"similarities\":[\"ȿ\",\"ʂ\",\"ي\",\"ᵴ\",\"ᶊ\",\"⸉\"]},\r\n    {\"replacement\":\"S\",\"similarities\":[\"§\",\"క\",\"ട\",\"Ⴝ\",\"⟆\",\"𐌔\",\"🆂\"]},\r\n    {\"replacement\":\"t\",\"similarities\":[\"ŧ\",\"ƫ\",\"ƭ\",\"ȶ\",\"ʈ\",\"τ\",\"т\",\"է\",\"ᖶ\",\"ᴛ\",\"ᵵ\",\"†\",\"✝\",\"ⲧ\",\"テ\"]},\r\n    {\"replacement\":\"T\",\"similarities\":[\"┬\",\"⏉\",\"ፐ\",\"🇹\",\"Ŧ\",\"Ƭ\",\"Ʈ\",\"Ͳ\",\"ͳ\",\"፰\",\"₮\",\"╤\",\"╦\",\"☂\",\"〒\",\"す\"]},\r\n    {\"replacement\":\"u\",\"similarities\":[\"ʊ\",\"ц\",\"մ\",\"ت\",\"ن\",\"ย\",\"ᥙ\",\"ᴗ\",\"ᵾ\"]},\r\n    {\"replacement\":\"U\",\"similarities\":[\"ப\",\"꒤\",\"Ʉ\",\"Ա\",\"น\",\"፱\",\"ᑘ\",\"ᘎ\",\"⋓\",\"🇺\"]},\r\n    {\"replacement\":\"v\",\"similarities\":[\"ⱱ\",\"ⱴ\"]},\r\n    {\"replacement\":\"V\",\"similarities\":[\"∇\",\"✓\",\"✔\",\"✔️\"]},\r\n    {\"replacement\":\"w\",\"similarities\":[\"ω\",\"ⱳ\"]},\r\n    {\"replacement\":\"W\",\"similarities\":[\"Щ\",\"ш\",\"щ\",\"₩\",\"Ⱳ\",\"ꟽ\"]},\r\n    {\"replacement\":\"x\",\"similarities\":[\"ж\",\"ჯ\",\"ᶍ\"]},\r\n    {\"replacement\":\"X\",\"similarities\":[\"Ӽ\",\"乂\"]},\r\n    {\"replacement\":\"y\",\"similarities\":[\"⑂\",\"ⴤ\",\"ƴ\",\"ɏ\"]},\r\n    {\"replacement\":\"Y\",\"similarities\":[\"ߌ\",\"¥\",\"Ƴ\",\"Ɏ\",\"Ў\",\"Ỿ\"]},\r\n    {\"replacement\":\"z\",\"similarities\":[\"🇿\",\"ƶ\",\"ȥ\",\"ɀ\",\"ʐ\",\"ʑ\",\"ᵶ\",\"ᶎ\",\"ⱬ\",\"ⲍ\"]},\r\n    {\"replacement\":\"Z\",\"similarities\":[\"Ƶ\",\"Ȥ\",\"Ⴭ\",\"፯\",\"☡\",\"Ⱬ\",\"Ɀ\",\"Ⲍ\",\"乙\"]},\r\n    {\"replacement\":\"->\",\"similarities\":[\"→\",\"⟶\"]},\r\n    {\"replacement\":\"=>\",\"similarities\":[\"⟹\"]},\r\n    {\"replacement\":\", \",\"similarities\":[\"、\"]},\r\n    {\"replacement\":\"::\",\"similarities\":[\"⣒\"]},\r\n    {\"replacement\":\":.\",\"similarities\":[\"⣁\"]},\r\n    {\"replacement\":\"..\",\"similarities\":[\"⠤\",\"⣀\"]},\r\n    {\"replacement\":\"''\",\"similarities\":[\"⠉\"]},\r\n    {\"replacement\":\"/\\\\\",\"similarities\":[\"ハ\"]},\r\n    {\"replacement\":\"<-\",\"similarities\":[\"←\"]},\r\n    {\"replacement\":\"=)\",\"similarities\":[\"シ\",\"ッ\"]},\r\n    {\"replacement\":\"---\",\"similarities\":[\"⸻\"]},\r\n    {\"replacement\":\"AB\",\"similarities\":[\"🆎\"]},\r\n    {\"replacement\":\"bl\",\"similarities\":[\"ы\"]},\r\n    {\"replacement\":\"cl\",\"similarities\":[\"디\"]},\r\n    {\"replacement\":\"CL\",\"similarities\":[\"🆑\"]},\r\n    {\"replacement\":\"COOL\",\"similarities\":[\"🆒\"]},\r\n    {\"replacement\":\"FREE\",\"similarities\":[\"🆓\"]},\r\n    {\"replacement\":\"ID\",\"similarities\":[\"🆔\"]},\r\n    {\"replacement\":\"ij\",\"similarities\":[\"⺉\",\"リ\"]},\r\n    {\"replacement\":\"io\",\"similarities\":[\"ю\"]},\r\n    {\"replacement\":\"lt\",\"similarities\":[\"け\"]},\r\n    {\"replacement\":\"NEW\",\"similarities\":[\"🆕\"]},\r\n    {\"replacement\":\"NG\",\"similarities\":[\"🆖\"]},\r\n    {\"replacement\":\"OK\",\"similarities\":[\"🆗\"]},\r\n    {\"replacement\":\"RU\",\"similarities\":[\"🇷🇺\"]},\r\n    {\"replacement\":\"SOS\",\"similarities\":[\"🆘\"]},\r\n    {\"replacement\":\"UP!\",\"similarities\":[\"🆙\"]},\r\n    {\"replacement\":\"VS\",\"similarities\":[\"🆚\"]},\r\n];\r\n\r\n//\r\n\r\nconst HardCodedMap: Map<string, string> = (() => {\r\n    const map = new Map<string, string>();\r\n\r\n    for (const unit of HardCoded) {\r\n        for (const similiarity of unit.similarities)\r\n            map.set(similiarity, unit.replacement);\r\n    }\r\n\r\n    return map;\r\n})();\r\n\r\nexport default HardCodedMap;","type DataUnit = string | [string, string];\r\n\r\n//\r\n\r\nconst Data: DataUnit[] = [\r\n    ['200B', '200D'],  // ZW chars\r\n    \"200E\",\r\n    ['1BCA0', '1BCA3'], // Shorthand controls\r\n    ['FFF9', 'FFFB'], // Interlinear annotation\r\n    '034F', '061C',\r\n    '115F', '1160',\r\n    '17B4', '17B5',\r\n    '180E', '200C', '2060',\r\n    '2061', '2062', '2063',\r\n    '2028', '2029', '202F',\r\n    '2800', '3164',\r\n    'FEFF', 'FFA0',\r\n    'FE0F', // Variation selector - forces emoji representation e.g. \"❗️\" becomes two chars: emoji + FE0F\r\n];\r\n\r\n//\r\n\r\nexport default (() => {\r\n    const pattern = Data\r\n        .map(entry => {\r\n            if (Array.isArray(entry)) {\r\n                const [start, end] = entry;\r\n                return `\\\\u{${start}}-\\\\u{${end}}`;\r\n            }\r\n            else {\r\n                return `\\\\u{${entry}}`;\r\n            }\r\n        })\r\n        .join('');\r\n\r\n    return new RegExp(`[${pattern}]`, 'gu');\r\n})();"],"mappings":"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","names":["Homoglypher","EmojiRegexFactory"]}