tafic
Version:
To ASCII First Impression Converter - normalizes text to closest first impression of reader based on ASCII set.
1 lines • 28.7 kB
Source Map (JSON)
{"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\":[\"ʼn\",\"ŋ\",\"ƞ\",\"ȵ\",\"ɲ\",\"ɳ\",\"ɴ\",\"ή\",\"η\",\"π\",\"и\",\"л\",\"п\",\"ղ\",\"ภ\",\"ᵰ\",\"ᶇ\",\"ᾔ\",\"ⲛ\"]},\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"]}