lotin-kirill 0.1.0 → 0.1.2

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.
package/README.md CHANGED
@@ -7,7 +7,7 @@
7
7
  [![](https://img.shields.io/bundlephobia/minzip/lotin-kirill)](https://bundlephobia.com/result?p=lotin-kirill)
8
8
  [![](https://img.shields.io/npm/l/lotin-kirill)](https://npmjs.com/lotin-kirill)
9
9
 
10
- Transliterator for Uzbek words with high accuracy (from latin alphabet to cyrillic and vice versa).
10
+ Transliterator for Uzbek words with high accuracy (from latin alphabet to cyrillic and vice versa). Used at [transliterator.uz](https://transliterator.uz/)
11
11
 
12
12
  ### [O‘zbek tilida o‘qish](https://github.com/diyorbek/lotin-kirill/blob/master/README_UZ.md)
13
13
 
@@ -67,7 +67,7 @@ const cyrillicWord = transliterator.toCyrillic("e'lon");
67
67
  console.log(cyrillicWord); // -> 'эълон'
68
68
  ```
69
69
 
70
- ### Text (multiple words) tranliteration:
70
+ ### Text (multiple words) transliteration:
71
71
 
72
72
  `textToLatin(text: string): string`
73
73
 
@@ -85,7 +85,7 @@ console.log(cyrillicText); // -> 'Жуда узун лотинча текст.'
85
85
 
86
86
  ### Exceptional words
87
87
 
88
- You can initialize the transliterator object with exceptional words list:
88
+ You can initialize the transliterator object with an exceptional words list:
89
89
 
90
90
  ```js
91
91
  import Transliterator from 'lotin-kirill';
@@ -125,21 +125,21 @@ const latinWord = transliterator.toLatin('октябрда');
125
125
  console.log(latinWord); // -> 'oktabrda' (not 'oktyabrda')
126
126
  ```
127
127
 
128
- You can extend the exceptionals list after initialization of the transliterator.
128
+ You can extend the exceptionals list after the initialization of the transliterator.
129
129
 
130
130
  ```js
131
131
  transliterator.extendExceptionals([['nol', 'ноль']]);
132
132
  ```
133
133
 
134
- Or purge all of the exceptionals added to trasnliterator.
134
+ Or purge all of the exceptionals added to transliterator.
135
135
 
136
136
  ```js
137
137
  transliterator.purgeExceptionals();
138
138
  ```
139
139
 
140
- ### Pure trasnliterator functions
140
+ ### Pure transliterator functions
141
141
 
142
- There are pure transliterator functions which operates only on basic transliteration rules. These functions don't lookup words in exceptionals list.
142
+ There are pure transliterator functions which operate only on basic transliteration rules. These functions don't look up words in exceptionals list.
143
143
 
144
144
  `cyrillicToLatin(word: string): string`
145
145
 
package/README_UZ.md ADDED
@@ -0,0 +1,158 @@
1
+ # Lotin-Kirill
2
+
3
+ [![](https://github.com/diyorbek/lotin-kirill/workflows/Build/badge.svg?branch=main)](https://github.com/diyorbek/lotin-kirill/actions)
4
+ [![](https://codecov.io/gh/diyorbek/lotin-kirill/branch/main/graph/badge.svg)](https://codecov.io/gh/diyorbek/lotin-kirill)
5
+ [![](https://img.shields.io/npm/v/lotin-kirill)](https://npmjs.com/lotin-kirill)
6
+ [![](https://img.shields.io/npm/types/lotin-kirill)](https://npmjs.com/lotin-kirill)
7
+ [![](https://img.shields.io/bundlephobia/minzip/lotin-kirill)](https://bundlephobia.com/result?p=lotin-kirill)
8
+ [![](https://img.shields.io/npm/l/lotin-kirill)](https://npmjs.com/lotin-kirill)
9
+
10
+ O‘zbek tilidagi so‘zlarni yuqori aniqlikda transliteratsiya qiluvchi kutubxona. So‘zlarni lotin alifbosidan kirillga va aksincha o‘girish.
11
+
12
+ ### [Read in English](https://github.com/diyorbek/lotin-kirill/blob/master/README.md)
13
+
14
+ ## O‘rnatish
15
+
16
+ NPM
17
+
18
+ ```
19
+ npm install lotin-kirill --save
20
+ ```
21
+
22
+ Yarn
23
+
24
+ ```bash
25
+ yarn add lotin-kirill
26
+ ```
27
+
28
+ UNPKG
29
+
30
+ ```html
31
+ <script src="https://unpkg.com/lotin-kirill/dist-umd/index.min.js"></script>
32
+ ```
33
+
34
+ ## Foydalanish
35
+
36
+ Initsializatsiya:
37
+
38
+ ```js
39
+ import Transliterator from 'lotin-kirill';
40
+
41
+ const transliterator = new Transliterator();
42
+ ```
43
+
44
+ UNPKG orqali ulaganda:
45
+
46
+ ```html
47
+ <script src="https://unpkg.com/lotin-kirill/dist-umd/index.min.js"></script>
48
+ <script>
49
+ const Transliterator = lotinKirill.default;
50
+ const transliterator = new Transliterator();
51
+ </script>
52
+ ```
53
+
54
+ ### So‘zma-so‘z o‘girish:
55
+
56
+ `toLatin(word: string): string`
57
+
58
+ `toCyrillic(word: string): string`
59
+
60
+ Naʼmuna
61
+
62
+ ```js
63
+ const latinWord = transliterator.toLatin('мотивация');
64
+ console.log(latinWord); // -> 'motivatsiya'
65
+
66
+ const cyrillicWord = transliterator.toCyrillic("e'lon");
67
+ console.log(cyrillicWord); // -> 'эълон'
68
+ ```
69
+
70
+ ### Tekstni (bir necha so‘zdan iborat) o‘girish:
71
+
72
+ `textToLatin(text: string): string`
73
+
74
+ `textToCyrillic(text: string): string`
75
+
76
+ Naʼmuna
77
+
78
+ ```js
79
+ const latinText = transliterator.textToLatin('Жуда узун кириллча текст.');
80
+ console.log(latinText); // -> 'Juda uzun kirillcha tekst.'
81
+
82
+ const cyrillicText = transliterator.textToCyrillic('Juda uzun lotincha tekst.');
83
+ console.log(cyrillicText); // -> 'Жуда узун лотинча текст.'
84
+ ```
85
+
86
+ ### Istisno so‘zlar
87
+
88
+ Transliterator obyektini istisno so‘zlar ro‘yhati bilan initsializatsiya qilishingiz mumkin:
89
+
90
+ ```js
91
+ import Transliterator from 'lotin-kirill';
92
+
93
+ const transliterator = new Transliterator([
94
+ // [lotincha, kirillcha]
95
+ ['oktabr', 'октябрь'],
96
+ ['Google', 'Google'],
97
+ ]);
98
+
99
+ const cyrillicWord = transliterator.toCyrillic('oktabr');
100
+ console.log(cyrillicWord); // -> 'октябрь' ('октабр' emas)
101
+ ```
102
+
103
+ Bir istisno juftligi kirill va lotin transliteratsiyasi uchun yetarli.
104
+
105
+ ```js
106
+ // Bu ham ishlaydi
107
+ const latinWord = transliterator.toLatin('октябрь');
108
+ console.log(latinWord); // -> 'oktabr' (not 'oktyabr')
109
+ ```
110
+
111
+ Agar istisno jusfligi bir xil so‘zlardan iborat bo‘lsa, o‘sha so‘z o‘girilmaydi.
112
+
113
+ ```js
114
+ const cyrillicWord = transliterator.toCyrillic('Google');
115
+ console.log(cyrillicWord); // -> 'Google'
116
+ ```
117
+
118
+ Istisnoli so‘zlar qo‘shimcha qo‘shilgan holatida ham to‘g‘ri o‘giriladi.
119
+
120
+ **Faqat old qo'shimchalar bundan mustasno!** So‘zning old qo‘shimcha qo‘shilgan varianti alohida istisno sifatida qo‘shilishi kerak.
121
+
122
+ ```js
123
+ // Bu ham ishlaydi
124
+ const latinWord = transliterator.toLatin('октябрда');
125
+ console.log(latinWord); // -> 'oktabrda' ('oktyabrda' emas)
126
+ ```
127
+
128
+ Istisno ro‘yhatini initsializatsiyadan keyin ham kengaytirish mumkin.
129
+
130
+ ```js
131
+ transliterator.extendExceptionals([['nol', 'ноль']]);
132
+ ```
133
+
134
+ Yoki ro‘yhatni butunlay tozalash mumkin.
135
+
136
+ ```js
137
+ transliterator.purgeExceptionals();
138
+ ```
139
+
140
+ ### Asl transliteratsiya funksiyalari
141
+
142
+ Kutubxonada so‘zlarni transliteratsiyaning faqat fundamental qoidalari asosoida ishlovchi asl transliteratsiya funksiyalari mavjud. Bu funksiyalar berilgan so‘zni istisno ro‘yhati bilan solishtirmaydi.
143
+
144
+ `cyrillicToLatin(word: string): string`
145
+
146
+ `latinToCyrillic(word: string): string`
147
+
148
+ ```js
149
+ import Transliterator, { cyrillicToLatin, latinToCyrillic } from 'lotin-kirill';
150
+
151
+ const transliterator = new Transliterator([['oktabr', 'октябрь']]);
152
+
153
+ console.log(transliterator.toLatin('октябрь')); // -> 'oktabr'
154
+ console.log(cyrillicToLatin('октябрь')); // -> 'oktyabr'
155
+
156
+ console.log(transliterator.toCyrillic('oktabr')); // -> 'октябрь'
157
+ console.log(latinToCyrillic('oktabr')); // -> 'октабр'
158
+ ```
package/package.json CHANGED
@@ -1,14 +1,14 @@
1
1
  {
2
2
  "name": "lotin-kirill",
3
+ "version": "0.1.2",
3
4
  "description": "Transform Uzbek latin characters into Uzbek-cyrillic characters or vice versa. O'zbekcha so'zlarni lotin alifbosidan kirill alifbosiga (yoki aksincha) o'girish.",
4
- "version": "0.1.0",
5
+ "author": "Diyorbek Sadullaev <diyorbek3377@gmail.com>",
5
6
  "license": "MIT",
6
- "files": [
7
- "dist-*/",
8
- "bin/"
9
- ],
10
- "pika": true,
11
- "sideEffects": false,
7
+ "homepage": "https://github.com/diyorbek/lotin-kirill",
8
+ "repository": {
9
+ "type": "git",
10
+ "url": "https://github.com/diyorbek/lotin-kirill.git"
11
+ },
12
12
  "keywords": [
13
13
  "lotin",
14
14
  "kirill",
@@ -17,13 +17,19 @@
17
17
  "transliteratsiya",
18
18
  "o'zbekcha"
19
19
  ],
20
- "homepage": "https://github.com/diyorbek/lotin-kirill",
21
- "repository": {
22
- "type": "git",
23
- "url": "https://github.com/diyorbek/lotin-kirill.git"
24
- },
25
- "dependencies": {
26
- "anchorme": "^2.1.2"
20
+ "files": [
21
+ "./pkg"
22
+ ],
23
+ "scripts": {
24
+ "build": "pika build",
25
+ "typecheck": "tsc --noEmit --skipLibCheck",
26
+ "format": "prettier --write .",
27
+ "lint": "eslint . --ext .ts",
28
+ "test": "jest --coverage",
29
+ "preversion": "yarn typecheck && yarn lint",
30
+ "version": "yarn build",
31
+ "postversion": "git push && git push --tags",
32
+ "prepublishOnly": "yarn typecheck && yarn lint && yarn build"
27
33
  },
28
34
  "devDependencies": {
29
35
  "@pika/pack": "^0.5.0",
@@ -46,9 +52,36 @@
46
52
  "ts-jest": "^26.5.3",
47
53
  "typescript": "^4.2.3"
48
54
  },
49
- "esnext": "dist-src/index.js",
50
- "main": "dist-node/index.js",
51
- "types": "dist-types/index.d.ts",
52
- "unpkg": "dist-umd/index.min.js",
53
- "jsdelivr": "dist-umd/index.min.js"
55
+ "dependencies": {
56
+ "anchorme": "^2.1.2"
57
+ },
58
+ "@pika/pack": {
59
+ "pipeline": [
60
+ [
61
+ "@pika/plugin-standard-pkg",
62
+ {
63
+ "exclude": [
64
+ "__tests__/**/*"
65
+ ]
66
+ }
67
+ ],
68
+ [
69
+ "@pika/plugin-build-node"
70
+ ],
71
+ [
72
+ "@pika/plugin-build-types"
73
+ ],
74
+ [
75
+ "pika-plugin-build-legacy-browser",
76
+ {
77
+ "name": "lotinKirill",
78
+ "sourcemap": false,
79
+ "entrypoint": [
80
+ "unpkg",
81
+ "jsdelivr"
82
+ ]
83
+ }
84
+ ]
85
+ ]
86
+ }
54
87
  }
package/pkg/README.md ADDED
@@ -0,0 +1,158 @@
1
+ # Lotin-Kirill
2
+
3
+ [![](https://github.com/diyorbek/lotin-kirill/workflows/Build/badge.svg?branch=main)](https://github.com/diyorbek/lotin-kirill/actions)
4
+ [![](https://codecov.io/gh/diyorbek/lotin-kirill/branch/main/graph/badge.svg)](https://codecov.io/gh/diyorbek/lotin-kirill)
5
+ [![](https://img.shields.io/npm/v/lotin-kirill)](https://npmjs.com/lotin-kirill)
6
+ [![](https://img.shields.io/npm/types/lotin-kirill)](https://npmjs.com/lotin-kirill)
7
+ [![](https://img.shields.io/bundlephobia/minzip/lotin-kirill)](https://bundlephobia.com/result?p=lotin-kirill)
8
+ [![](https://img.shields.io/npm/l/lotin-kirill)](https://npmjs.com/lotin-kirill)
9
+
10
+ Transliterator for Uzbek words with high accuracy (from latin alphabet to cyrillic and vice versa). Used at [transliterator.uz](https://transliterator.uz/)
11
+
12
+ ### [O‘zbek tilida o‘qish](https://github.com/diyorbek/lotin-kirill/blob/master/README_UZ.md)
13
+
14
+ ## Installation
15
+
16
+ NPM
17
+
18
+ ```
19
+ npm install lotin-kirill --save
20
+ ```
21
+
22
+ Yarn
23
+
24
+ ```bash
25
+ yarn add lotin-kirill
26
+ ```
27
+
28
+ UNPKG
29
+
30
+ ```html
31
+ <script src="https://unpkg.com/lotin-kirill/dist-umd/index.min.js"></script>
32
+ ```
33
+
34
+ ## Usage
35
+
36
+ Initialize the engine:
37
+
38
+ ```js
39
+ import Transliterator from 'lotin-kirill';
40
+
41
+ const transliterator = new Transliterator();
42
+ ```
43
+
44
+ When using UNPKG distribution:
45
+
46
+ ```html
47
+ <script src="https://unpkg.com/lotin-kirill/dist-umd/index.min.js"></script>
48
+ <script>
49
+ const Transliterator = lotinKirill.default;
50
+ const transliterator = new Transliterator();
51
+ </script>
52
+ ```
53
+
54
+ ### Single word transliteration:
55
+
56
+ `toLatin(word: string): string`
57
+
58
+ `toCyrillic(word: string): string`
59
+
60
+ Example
61
+
62
+ ```js
63
+ const latinWord = transliterator.toLatin('мотивация');
64
+ console.log(latinWord); // -> 'motivatsiya'
65
+
66
+ const cyrillicWord = transliterator.toCyrillic("e'lon");
67
+ console.log(cyrillicWord); // -> 'эълон'
68
+ ```
69
+
70
+ ### Text (multiple words) transliteration:
71
+
72
+ `textToLatin(text: string): string`
73
+
74
+ `textToCyrillic(text: string): string`
75
+
76
+ Example
77
+
78
+ ```js
79
+ const latinText = transliterator.textToLatin('Жуда узун кириллча текст.');
80
+ console.log(latinText); // -> 'Juda uzun kirillcha tekst.'
81
+
82
+ const cyrillicText = transliterator.textToCyrillic('Juda uzun lotincha tekst.');
83
+ console.log(cyrillicText); // -> 'Жуда узун лотинча текст.'
84
+ ```
85
+
86
+ ### Exceptional words
87
+
88
+ You can initialize the transliterator object with an exceptional words list:
89
+
90
+ ```js
91
+ import Transliterator from 'lotin-kirill';
92
+
93
+ const transliterator = new Transliterator([
94
+ // [latinWord, cyrillicWord]
95
+ ['oktabr', 'октябрь'],
96
+ ['Google', 'Google'],
97
+ ]);
98
+
99
+ const cyrillicWord = transliterator.toCyrillic('oktabr');
100
+ console.log(cyrillicWord); // -> 'октябрь' (not 'октабр')
101
+ ```
102
+
103
+ One exceptional pair is enough for both cyrilllic and latin transliterations.
104
+
105
+ ```js
106
+ // This also works
107
+ const latinWord = transliterator.toLatin('октябрь');
108
+ console.log(latinWord); // -> 'oktabr' (not 'oktyabr')
109
+ ```
110
+
111
+ If exceptional pair is a pair of same words, the word is not transliterated.
112
+
113
+ ```js
114
+ const cyrillicWord = transliterator.toCyrillic('Google');
115
+ console.log(cyrillicWord); // -> 'Google'
116
+ ```
117
+
118
+ Exceptional words with sufixes are also detected.
119
+
120
+ **Variants of a word with prefixes should be added as separate exceptionals!**
121
+
122
+ ```js
123
+ // This also works
124
+ const latinWord = transliterator.toLatin('октябрда');
125
+ console.log(latinWord); // -> 'oktabrda' (not 'oktyabrda')
126
+ ```
127
+
128
+ You can extend the exceptionals list after the initialization of the transliterator.
129
+
130
+ ```js
131
+ transliterator.extendExceptionals([['nol', 'ноль']]);
132
+ ```
133
+
134
+ Or purge all of the exceptionals added to transliterator.
135
+
136
+ ```js
137
+ transliterator.purgeExceptionals();
138
+ ```
139
+
140
+ ### Pure transliterator functions
141
+
142
+ There are pure transliterator functions which operate only on basic transliteration rules. These functions don't look up words in exceptionals list.
143
+
144
+ `cyrillicToLatin(word: string): string`
145
+
146
+ `latinToCyrillic(word: string): string`
147
+
148
+ ```js
149
+ import Transliterator, { cyrillicToLatin, latinToCyrillic } from 'lotin-kirill';
150
+
151
+ const transliterator = new Transliterator([['oktabr', 'октябрь']]);
152
+
153
+ console.log(transliterator.toLatin('октябрь')); // -> 'oktabr'
154
+ console.log(cyrillicToLatin('октябрь')); // -> 'oktyabr'
155
+
156
+ console.log(transliterator.toCyrillic('oktabr')); // -> 'октябрь'
157
+ console.log(latinToCyrillic('oktabr')); // -> 'октабр'
158
+ ```
@@ -176,6 +176,49 @@ function isRomanNumber(word) {
176
176
  return /^M{0,4}(CM|CD|D?C{0,3})(XC|XL|L?X{0,3})(IX|IV|V?I{0,3})(\.|\))?$/.test(word);
177
177
  }
178
178
 
179
+ const CH_MATCHER = /Ч/gi;
180
+ const SH_MATCHER = /Ш/gi;
181
+ const YE_START_MATCHER = /^Е/gi;
182
+ const YE_MATCHER = /Е/gi;
183
+ const YO_MATCHER = /Ё/gi;
184
+ const YU_MATCHER = /Ю/gi;
185
+ const YA_MATCHER = /Я/gi;
186
+ const YE_REPETITIVE = /е{3,}/gi;
187
+ const YE_AFTER_SOFT_MATCHER = /[ьъ]е/gi;
188
+ const YE_AFTER_VOWEL_MATCHER = /[аоэеиуўёюяaeiou]е/gi;
189
+ const TS_AFTER_VOWEL_MATCHER = /[аоэеиуўёюяaeiou]ц/gi;
190
+ const O_AFTER_SOFT_MATCHER = /ьо/gi;
191
+ const S_H_MATCHER = /сҳ/gi;
192
+ const APOSTROPHE_COLLISION_MATCHER = /[ўғ]ъ/gi;
193
+
194
+ function normalizeYeRepetitive(matchString) {
195
+ return matchString.replace(YE_MATCHER, str => CYRILLIC_CHARACTERS[str] || str);
196
+ }
197
+
198
+ function normalizeYeAfterSoft(matchString) {
199
+ return normalizeCase('ye', matchString.charAt(1));
200
+ }
201
+
202
+ function normalizeYeAfterVowel(matchString) {
203
+ return matchString.charAt(0) + normalizeCase('ye', matchString.charAt(1));
204
+ }
205
+
206
+ function normalizeYoAfterSoft(matchString) {
207
+ return normalizeCase('yo', matchString.charAt(1));
208
+ }
209
+
210
+ function normalizeApostropheCollision(matchString) {
211
+ return matchString.charAt(0);
212
+ }
213
+
214
+ function normalizeTsAfterVowel(matchString) {
215
+ return matchString.charAt(0) + normalizeCase('ts', matchString.charAt(1));
216
+ }
217
+
218
+ function normalizeS_H(matchString) {
219
+ return normalizeCase('s', matchString.charAt(0)) + APOSTROPHE + normalizeCase('h', matchString.charAt(1));
220
+ }
221
+
179
222
  function normalizeBigramCasing(word, matcher, latinBigram) {
180
223
  return word.replace(matcher, (matchString, index) => {
181
224
  if (isLowerCase(matchString)) {
@@ -198,15 +241,15 @@ function normalizeBigramCasing(word, matcher, latinBigram) {
198
241
  }
199
242
 
200
243
  function replaceSpecials(word) {
201
- word = normalizeBigramCasing(word, /Ч/gi, 'CH');
202
- word = normalizeBigramCasing(word, /Ш/gi, 'SH');
203
- word = normalizeBigramCasing(word, /^Е/gi, 'YE');
204
- word = normalizeBigramCasing(word, /Ё/gi, 'YO');
205
- word = normalizeBigramCasing(word, /Ю/gi, 'YU');
206
- word = normalizeBigramCasing(word, /Я/gi, 'YA'); // Don't split into bigram if repetitive sequence of `e`s is 3+
207
-
208
- word = word.replace(/е{3,}/gi, matchString => matchString.replace(/е/gi, str => CYRILLIC_CHARACTERS[str] || str));
209
- return word.replace(/[ьъ]е/gi, str => normalizeCase('ye', str.charAt(1))).replace(/[аоэеиуўёюяaeiou]е/gi, str => str.charAt(0) + normalizeCase('ye', str.charAt(1))).replace(/ьо/gi, matchString => normalizeCase('yo', matchString.charAt(1))).replace(/[ўғ]ъ/gi, matchString => matchString.charAt(0)).replace(/[аоэеиуўёюяaeiou]ц/gi, str => str.charAt(0) + normalizeCase('ts', str.charAt(1)));
244
+ word = normalizeBigramCasing(word, CH_MATCHER, 'CH');
245
+ word = normalizeBigramCasing(word, SH_MATCHER, 'SH');
246
+ word = normalizeBigramCasing(word, YE_START_MATCHER, 'YE');
247
+ word = normalizeBigramCasing(word, YO_MATCHER, 'YO');
248
+ word = normalizeBigramCasing(word, YU_MATCHER, 'YU');
249
+ word = normalizeBigramCasing(word, YA_MATCHER, 'YA'); // Don't split into bigram if repetitive sequence of `e`s is 3+
250
+
251
+ word = word.replace(YE_REPETITIVE, normalizeYeRepetitive);
252
+ return word.replace(YE_AFTER_SOFT_MATCHER, normalizeYeAfterSoft).replace(YE_AFTER_VOWEL_MATCHER, normalizeYeAfterVowel).replace(O_AFTER_SOFT_MATCHER, normalizeYoAfterSoft).replace(APOSTROPHE_COLLISION_MATCHER, normalizeApostropheCollision).replace(TS_AFTER_VOWEL_MATCHER, normalizeTsAfterVowel).replace(S_H_MATCHER, normalizeS_H);
210
253
  }
211
254
 
212
255
  function cyrillicToLatin(word) {
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":["../dist-src/characters.js","../dist-src/utils.js","../dist-src/cyrillic.js","../dist-src/exceptionalsCollection.js","../dist-src/latin.js","../dist-src/index.js"],"sourcesContent":["export const APOSTROPHE = '\\u02bc';\nexport const TURNED_COMMA = '\\u2018';\nexport const LATIN_CHARACTERS = {\n ['A']: 'А',\n ['a']: 'а',\n ['B']: 'Б',\n ['b']: 'б',\n ['D']: 'Д',\n ['d']: 'д',\n ['E']: 'Е',\n ['e']: 'е',\n ['F']: 'Ф',\n ['f']: 'ф',\n ['G']: 'Г',\n ['g']: 'г',\n ['H']: 'Ҳ',\n ['h']: 'ҳ',\n ['I']: 'И',\n ['i']: 'и',\n ['J']: 'Ж',\n ['j']: 'ж',\n ['K']: 'К',\n ['k']: 'к',\n ['L']: 'Л',\n ['l']: 'л',\n ['M']: 'М',\n ['m']: 'м',\n ['N']: 'Н',\n ['n']: 'н',\n ['O']: 'О',\n ['o']: 'о',\n ['P']: 'П',\n ['p']: 'п',\n ['Q']: 'Қ',\n ['q']: 'қ',\n ['R']: 'Р',\n ['r']: 'р',\n ['S']: 'С',\n ['s']: 'с',\n ['T']: 'Т',\n ['t']: 'т',\n ['U']: 'У',\n ['u']: 'у',\n ['V']: 'В',\n ['v']: 'в',\n ['X']: 'Х',\n ['x']: 'х',\n ['Y']: 'Й',\n ['y']: 'й',\n ['Z']: 'З',\n ['z']: 'з'\n};\nexport const CYRILLIC_CHARACTERS = {\n ['А']: 'A',\n ['а']: 'a',\n ['Б']: 'B',\n ['б']: 'b',\n ['Д']: 'D',\n ['д']: 'd',\n ['Е']: 'E',\n ['е']: 'e',\n ['Ф']: 'F',\n ['ф']: 'f',\n ['Г']: 'G',\n ['г']: 'g',\n ['Ҳ']: 'H',\n ['ҳ']: 'h',\n ['И']: 'I',\n ['и']: 'i',\n ['Ж']: 'J',\n ['ж']: 'j',\n ['К']: 'K',\n ['к']: 'k',\n ['Л']: 'L',\n ['л']: 'l',\n ['М']: 'M',\n ['м']: 'm',\n ['Н']: 'N',\n ['н']: 'n',\n ['О']: 'O',\n ['о']: 'o',\n ['П']: 'P',\n ['п']: 'p',\n ['Қ']: 'Q',\n ['қ']: 'q',\n ['Р']: 'R',\n ['р']: 'r',\n ['С']: 'S',\n ['с']: 's',\n ['Т']: 'T',\n ['т']: 't',\n ['У']: 'U',\n ['у']: 'u',\n ['В']: 'V',\n ['в']: 'v',\n ['Х']: 'X',\n ['х']: 'x',\n ['Й']: 'Y',\n ['й']: 'y',\n ['З']: 'Z',\n ['з']: 'z',\n ['Ў']: `O${TURNED_COMMA}`,\n ['ў']: `o${TURNED_COMMA}`,\n ['Ғ']: `G${TURNED_COMMA}`,\n ['ғ']: `g${TURNED_COMMA}`,\n ['Ш']: 'Sh',\n ['ш']: 'sh',\n ['Ч']: 'Ch',\n ['ч']: 'ch',\n ['Ё']: 'Yo',\n ['ё']: 'yo',\n ['Ц']: 'S',\n ['ц']: 's',\n ['Ь']: '',\n ['ь']: '',\n ['Э']: 'E',\n ['э']: 'e',\n ['Ю']: 'Yu',\n ['ю']: 'yu',\n ['Я']: 'Ya',\n ['я']: 'ya',\n ['Ъ']: APOSTROPHE,\n ['ъ']: APOSTROPHE\n};\nexport const CYRILLIC_LETTER = `\\u0400-\\u04FF`;\nexport const CYRILLIC_VOVEL = `аоэеиуўёюя`;\nexport const LATIN_LETTER = `a-z`;\nexport const LATIN_VOVEL = `aeiou`;","import anchorme from 'anchorme';\nexport function isLowerCase(char) {\n return char.toLowerCase() === char;\n}\nexport function normalizeCase(char, assimilateTo) {\n return isLowerCase(assimilateTo) ? char.toLowerCase() : char.toUpperCase();\n}\nexport function capitalize(word) {\n return word.charAt(0).toUpperCase() + word.substring(1).toLowerCase();\n} // Detect only alphabetical letters, excluding apostrophe(')\n\nexport function isLetter(char) {\n if (typeof char === 'string') {\n return /^[a-z\\u0400-\\u04FF]+$/i.test(char);\n }\n\n return false;\n}\nexport function isVovel(char) {\n return /[аоэеиуўёюяaeiou]/i.test(char);\n}\nexport function isURL(word) {\n return anchorme.list(word).length > 0;\n}\nexport function escapeRegex(expString) {\n return expString.replace(/[-\\/\\\\^$*+?.()|[\\]{}]/g, '\\\\$&');\n}\nexport function endsWithSoftSign(word) {\n return /ь$/i.test(word);\n}\nexport function isRomanNumber(word) {\n return /^M{0,4}(CM|CD|D?C{0,3})(XC|XL|L?X{0,3})(IX|IV|V?I{0,3})(\\.|\\))?$/.test(word);\n}","import { APOSTROPHE, CYRILLIC_CHARACTERS } from \"./characters.js\";\nimport { capitalize, isLetter, isLowerCase, normalizeCase } from \"./utils.js\";\nconst CH_MATCHER = /Ч/gi;\nconst SH_MATCHER = /Ш/gi;\nconst YE_START_MATCHER = /^Е/gi;\nconst YE_MATCHER = /Е/gi;\nconst YO_MATCHER = /Ё/gi;\nconst YU_MATCHER = /Ю/gi;\nconst YA_MATCHER = /Я/gi;\nconst YE_REPETITIVE = /е{3,}/gi;\nconst YE_AFTER_SOFT_MATCHER = /[ьъ]е/gi;\nconst YE_AFTER_VOWEL_MATCHER = /[аоэеиуўёюяaeiou]е/gi;\nconst TS_AFTER_VOWEL_MATCHER = /[аоэеиуўёюяaeiou]ц/gi;\nconst O_AFTER_SOFT_MATCHER = /ьо/gi;\nconst S_H_MATCHER = /сҳ/gi;\nconst APOSTROPHE_COLLISION_MATCHER = /[ўғ]ъ/gi;\n\nfunction normalizeYeRepetitive(matchString) {\n return matchString.replace(YE_MATCHER, str => CYRILLIC_CHARACTERS[str] || str);\n}\n\nfunction normalizeYeAfterSoft(matchString) {\n return normalizeCase('ye', matchString.charAt(1));\n}\n\nfunction normalizeYeAfterVowel(matchString) {\n return matchString.charAt(0) + normalizeCase('ye', matchString.charAt(1));\n}\n\nfunction normalizeYoAfterSoft(matchString) {\n return normalizeCase('yo', matchString.charAt(1));\n}\n\nfunction normalizeApostropheCollision(matchString) {\n return matchString.charAt(0);\n}\n\nfunction normalizeTsAfterVowel(matchString) {\n return matchString.charAt(0) + normalizeCase('ts', matchString.charAt(1));\n}\n\nfunction normalizeS_H(matchString) {\n return normalizeCase('s', matchString.charAt(0)) + APOSTROPHE + normalizeCase('h', matchString.charAt(1));\n}\n\nfunction normalizeBigramCasing(word, matcher, latinBigram) {\n return word.replace(matcher, (matchString, index) => {\n if (isLowerCase(matchString)) {\n return latinBigram.toLowerCase();\n }\n\n if (!isLetter(word[index - 1]) && !isLetter(word[index + 1])) {\n return capitalize(latinBigram);\n } // Assimilate to the next letter\n\n\n const assimilator = isLetter(word[index + 1]) && word[index + 1];\n\n if (assimilator) {\n return isLowerCase(assimilator) ? capitalize(latinBigram) : latinBigram.toUpperCase();\n }\n\n return latinBigram.toUpperCase();\n });\n}\n\nfunction replaceSpecials(word) {\n word = normalizeBigramCasing(word, CH_MATCHER, 'CH');\n word = normalizeBigramCasing(word, SH_MATCHER, 'SH');\n word = normalizeBigramCasing(word, YE_START_MATCHER, 'YE');\n word = normalizeBigramCasing(word, YO_MATCHER, 'YO');\n word = normalizeBigramCasing(word, YU_MATCHER, 'YU');\n word = normalizeBigramCasing(word, YA_MATCHER, 'YA'); // Don't split into bigram if repetitive sequence of `e`s is 3+\n\n word = word.replace(YE_REPETITIVE, normalizeYeRepetitive);\n return word.replace(YE_AFTER_SOFT_MATCHER, normalizeYeAfterSoft).replace(YE_AFTER_VOWEL_MATCHER, normalizeYeAfterVowel).replace(O_AFTER_SOFT_MATCHER, normalizeYoAfterSoft).replace(APOSTROPHE_COLLISION_MATCHER, normalizeApostropheCollision).replace(TS_AFTER_VOWEL_MATCHER, normalizeTsAfterVowel).replace(S_H_MATCHER, normalizeS_H);\n}\n\nexport function cyrillicToLatin(word) {\n const escapedWord = replaceSpecials(word);\n let out = '';\n\n for (const char of escapedWord) {\n if (char in CYRILLIC_CHARACTERS) {\n out += CYRILLIC_CHARACTERS[char];\n } else {\n out += char;\n }\n }\n\n return out;\n}","import { capitalize, endsWithSoftSign, escapeRegex, isLowerCase } from \"./utils.js\";\n/*\n Exceptional word pairs works bidirectional even if\n transliteration from cyrillic to latin is usually\n possible without exceptions list. Sepatating list \n into 2 (one for latin, the other for cyrillc) make\n things complicated. \n \n Proposal can be introducing optional 3rd item to \n `ExceptionalWordPair` which will indicate \n bidirectional, only `latin->cyrillic` or only \n `cyrillic->latin` transliteration. This way look-ups \n in exceptionals list can be avoided where unecessary.\n*/\n\nexport class ExceptionalsCollection {\n collection = [];\n\n constructor(exceptions = []) {\n this.extend(exceptions);\n }\n\n extend(exceptions) {\n // TODO: Optimize for duplicates\n exceptions.forEach(pair => {\n if (pair && pair[0] && pair[1]) {\n this.collection.push(...this.generateWordCasingVariants(pair));\n }\n });\n }\n\n purge() {\n this.collection = [];\n }\n\n generateWordCasingVariants([latin, cyrillic]) {\n return [[latin.toLowerCase(), cyrillic.toLowerCase()], [latin.toUpperCase(), cyrillic.toUpperCase()], [capitalize(latin), capitalize(cyrillic)]];\n }\n\n getCase(exceptionalPair, source) {\n const exceptionSource = source === 'latin' ? 0 : 1;\n const exceptionTarget = source === 'latin' ? 1 : 0;\n return {\n exceptionalWord: exceptionalPair[exceptionSource],\n replacement: exceptionalPair[exceptionTarget]\n };\n }\n\n normalizeEndSoftSign(exceptional) {\n const {\n replacement\n } = exceptional;\n exceptional.replacement = replacement.substring(0, replacement.length - 1);\n }\n\n findInCollection(word, source) {\n let exceptional;\n let alternative; // If the word is typed with wrong letter-casing, default to lower-case or capitalize\n\n const shouldDefaultToLowerCase = isLowerCase(word.charAt(0));\n const altCasingMatch = shouldDefaultToLowerCase ? word.toLowerCase() : capitalize(word);\n\n for (const exceptionalPair of this.collection) {\n const {\n exceptionalWord,\n replacement\n } = this.getCase(exceptionalPair, source);\n\n if (word.startsWith(exceptionalWord)) {\n exceptional = {\n exceptionalWord,\n replacement\n };\n\n if (source === 'latin' && endsWithSoftSign(replacement) && word.length !== exceptionalWord.length) {\n this.normalizeEndSoftSign(exceptional);\n }\n\n return {\n exceptional\n };\n }\n\n if (altCasingMatch.startsWith(exceptionalWord)) {\n alternative = {\n exceptionalWord,\n replacement\n };\n }\n }\n\n return {\n alternative\n };\n }\n\n decideMatcher(exceptional, alternative) {\n if (exceptional !== undefined) {\n return exceptional.exceptionalWord;\n }\n\n if (alternative !== undefined) {\n // Using RegExp in \"case-insensetive\" mode to match exceptional\n // with its alternative casing\n return new RegExp(escapeRegex(alternative.exceptionalWord), 'gi');\n }\n }\n\n findCase(word, source) {\n const {\n exceptional,\n alternative\n } = this.findInCollection(word, source);\n const matcher = this.decideMatcher(exceptional, alternative);\n const replacement = exceptional?.replacement || alternative?.replacement;\n\n if (matcher && replacement) {\n return {\n matcher,\n replacement\n };\n }\n }\n\n}","import { LATIN_CHARACTERS } from \"./characters.js\";\nimport { normalizeCase } from \"./utils.js\";\n\nfunction transliterateBigram(word, matcher, cyrillicBigram) {\n return word.replace(matcher, matchString => {\n return normalizeCase(cyrillicBigram, matchString[0]);\n });\n}\n\nfunction transliterateApostrophe(word) {\n const apostrophe = 'ъ';\n return word.replace(/[ʻʼ’'`‘´]/g, (_, index) => {\n // Prioritize assimilation to the next letter\n const assimilator = word[index + 1] || word[index - 1];\n\n if (assimilator) {\n return normalizeCase(apostrophe, assimilator);\n }\n\n return apostrophe.toLowerCase();\n });\n}\n\nfunction transliterateSpecialLetters(word) {\n word = word.replace(/tsi(on|ya)/gi, matchString => {\n return transliterateBigram(matchString, /ts/i, 'ц');\n });\n /* \n Replace with 'Э' if:\n 1. word starts with 'E'\n 2. 'E' comes after non-letter symbol\n 3. cyrillic letter \n */\n\n word = word.replace(/^e|[\\W]e/gi, matchString => {\n return transliterateBigram(matchString, /e/i, 'э');\n });\n word = word.replace(/e{2}/gi, matchString => {\n return matchString[0] + normalizeCase('э', matchString[1]);\n });\n word = transliterateBigram(word, /ch/gi, 'ч');\n word = transliterateBigram(word, /sh/gi, 'ш');\n word = transliterateBigram(word, /g[ʻʼ’'`‘´]/gi, 'ғ');\n word = transliterateBigram(word, /o[ʻʼ’'`‘´]/gi, 'ў');\n word = transliterateBigram(word, /ye/gi, 'е');\n word = transliterateBigram(word, /yo/gi, 'ё');\n word = transliterateBigram(word, /yu/gi, 'ю');\n word = transliterateBigram(word, /ya/gi, 'я'); // handle non-bigram \"S'H\" => \"СҲ\" combination\n\n word = word.replace(/s[ʻʼ’'`‘´]h/gi, matchString => {\n const s = LATIN_CHARACTERS[matchString[0]] || matchString[0];\n const h = LATIN_CHARACTERS[matchString[2]] || matchString[2];\n return s + h;\n });\n word = transliterateApostrophe(word);\n return word;\n}\n\nexport function latinToCyrillic(word) {\n const escapedWord = transliterateSpecialLetters(word);\n let out = '';\n\n for (const char of escapedWord) {\n if (char in LATIN_CHARACTERS) {\n out += LATIN_CHARACTERS[char];\n } else {\n out += char;\n }\n }\n\n return out;\n}","import { cyrillicToLatin } from \"./cyrillic.js\";\nimport { ExceptionalsCollection } from \"./exceptionalsCollection.js\";\nimport { latinToCyrillic } from \"./latin.js\";\nimport { isRomanNumber, isURL } from \"./utils.js\";\nexport default class Transliterator {\n exceptionalsCollection = new ExceptionalsCollection();\n\n constructor(exceptions = []) {\n this.extendExceptionals(exceptions);\n }\n\n extendExceptionals(exceptions) {\n this.exceptionalsCollection.extend(exceptions);\n }\n\n purgeExceptionals() {\n this.exceptionalsCollection.purge();\n }\n\n getTransliterator(source) {\n return source === 'latin' ? latinToCyrillic : cyrillicToLatin;\n }\n\n replaceExceptionals(word, exceptional, replacement, transliterator) {\n let chunks = word.split(exceptional);\n chunks = chunks.map((chunk, i) => {\n const isLastChunk = i === chunks.length - 1;\n return transliterator(chunk) + (isLastChunk ? '' : replacement);\n });\n return chunks.join('');\n }\n\n handleExceptional(word, source) {\n const exceptional = this.exceptionalsCollection.findCase(word, source);\n\n if (exceptional) {\n return this.replaceExceptionals(word, exceptional.matcher, exceptional.replacement, this.getTransliterator(source));\n }\n }\n\n transliteratePureWord(word, source) {\n const transliterator = this.getTransliterator(source);\n return word.replace(/[ʻʼ’'`´‘a-z\\u0400-\\u04FF\\-]+/gi, pureWord => {\n const exceptionalWord = this.handleExceptional(pureWord, source);\n\n if (exceptionalWord) {\n return exceptionalWord;\n }\n\n return transliterator(pureWord);\n });\n }\n\n transliterateWord(word, source) {\n if (isURL(word)) {\n return word;\n }\n\n if (isRomanNumber(word)) {\n return word;\n }\n\n const exceptionalWord = this.handleExceptional(word, source);\n\n if (exceptionalWord) {\n return exceptionalWord;\n }\n\n return this.transliteratePureWord(word, source);\n }\n\n toCyrillic(word) {\n if (word instanceof Array) {\n return word.map(w => this.transliterateWord(w, 'latin'));\n } else if (typeof word === 'string') {\n return this.transliterateWord(word, 'latin');\n }\n }\n\n toLatin(word) {\n if (word instanceof Array) {\n return word.map(w => this.transliterateWord(w, 'cyrillic'));\n } else if (typeof word === 'string') {\n return this.transliterateWord(word, 'cyrillic');\n }\n }\n\n textToCyrillic(text) {\n return text.replace(/\\S+/g, word => this.transliterateWord(word, 'latin'));\n }\n\n textToLatin(text) {\n return text.replace(/\\S+/g, word => this.transliterateWord(word, 'cyrillic'));\n }\n\n}\nexport { cyrillicToLatin, latinToCyrillic };"],"names":["APOSTROPHE","TURNED_COMMA","LATIN_CHARACTERS","CYRILLIC_CHARACTERS","isLowerCase","char","toLowerCase","normalizeCase","assimilateTo","toUpperCase","capitalize","word","charAt","substring","isLetter","test","isURL","anchorme","list","length","escapeRegex","expString","replace","endsWithSoftSign","isRomanNumber","CH_MATCHER","SH_MATCHER","YE_START_MATCHER","YE_MATCHER","YO_MATCHER","YU_MATCHER","YA_MATCHER","YE_REPETITIVE","YE_AFTER_SOFT_MATCHER","YE_AFTER_VOWEL_MATCHER","TS_AFTER_VOWEL_MATCHER","O_AFTER_SOFT_MATCHER","S_H_MATCHER","APOSTROPHE_COLLISION_MATCHER","normalizeYeRepetitive","matchString","str","normalizeYeAfterSoft","normalizeYeAfterVowel","normalizeYoAfterSoft","normalizeApostropheCollision","normalizeTsAfterVowel","normalizeS_H","normalizeBigramCasing","matcher","latinBigram","index","assimilator","replaceSpecials","cyrillicToLatin","escapedWord","out","ExceptionalsCollection","constructor","exceptions","extend","forEach","pair","collection","push","generateWordCasingVariants","purge","latin","cyrillic","getCase","exceptionalPair","source","exceptionSource","exceptionTarget","exceptionalWord","replacement","normalizeEndSoftSign","exceptional","findInCollection","alternative","shouldDefaultToLowerCase","altCasingMatch","startsWith","decideMatcher","undefined","RegExp","findCase","transliterateBigram","cyrillicBigram","transliterateApostrophe","apostrophe","_","transliterateSpecialLetters","s","h","latinToCyrillic","Transliterator","extendExceptionals","exceptionalsCollection","purgeExceptionals","getTransliterator","replaceExceptionals","transliterator","chunks","split","map","chunk","i","isLastChunk","join","handleExceptional","transliteratePureWord","pureWord","transliterateWord","toCyrillic","Array","w","toLatin","textToCyrillic","text","textToLatin"],"mappings":"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"}
File without changes
@@ -0,0 +1,92 @@
1
+ import { APOSTROPHE, CYRILLIC_CHARACTERS } from "./characters.js";
2
+ import { capitalize, isLetter, isLowerCase, normalizeCase } from "./utils.js";
3
+ const CH_MATCHER = /Ч/gi;
4
+ const SH_MATCHER = /Ш/gi;
5
+ const YE_START_MATCHER = /^Е/gi;
6
+ const YE_MATCHER = /Е/gi;
7
+ const YO_MATCHER = /Ё/gi;
8
+ const YU_MATCHER = /Ю/gi;
9
+ const YA_MATCHER = /Я/gi;
10
+ const YE_REPETITIVE = /е{3,}/gi;
11
+ const YE_AFTER_SOFT_MATCHER = /[ьъ]е/gi;
12
+ const YE_AFTER_VOWEL_MATCHER = /[аоэеиуўёюяaeiou]е/gi;
13
+ const TS_AFTER_VOWEL_MATCHER = /[аоэеиуўёюяaeiou]ц/gi;
14
+ const O_AFTER_SOFT_MATCHER = /ьо/gi;
15
+ const S_H_MATCHER = /сҳ/gi;
16
+ const APOSTROPHE_COLLISION_MATCHER = /[ўғ]ъ/gi;
17
+
18
+ function normalizeYeRepetitive(matchString) {
19
+ return matchString.replace(YE_MATCHER, str => CYRILLIC_CHARACTERS[str] || str);
20
+ }
21
+
22
+ function normalizeYeAfterSoft(matchString) {
23
+ return normalizeCase('ye', matchString.charAt(1));
24
+ }
25
+
26
+ function normalizeYeAfterVowel(matchString) {
27
+ return matchString.charAt(0) + normalizeCase('ye', matchString.charAt(1));
28
+ }
29
+
30
+ function normalizeYoAfterSoft(matchString) {
31
+ return normalizeCase('yo', matchString.charAt(1));
32
+ }
33
+
34
+ function normalizeApostropheCollision(matchString) {
35
+ return matchString.charAt(0);
36
+ }
37
+
38
+ function normalizeTsAfterVowel(matchString) {
39
+ return matchString.charAt(0) + normalizeCase('ts', matchString.charAt(1));
40
+ }
41
+
42
+ function normalizeS_H(matchString) {
43
+ return normalizeCase('s', matchString.charAt(0)) + APOSTROPHE + normalizeCase('h', matchString.charAt(1));
44
+ }
45
+
46
+ function normalizeBigramCasing(word, matcher, latinBigram) {
47
+ return word.replace(matcher, (matchString, index) => {
48
+ if (isLowerCase(matchString)) {
49
+ return latinBigram.toLowerCase();
50
+ }
51
+
52
+ if (!isLetter(word[index - 1]) && !isLetter(word[index + 1])) {
53
+ return capitalize(latinBigram);
54
+ } // Assimilate to the next letter
55
+
56
+
57
+ const assimilator = isLetter(word[index + 1]) && word[index + 1];
58
+
59
+ if (assimilator) {
60
+ return isLowerCase(assimilator) ? capitalize(latinBigram) : latinBigram.toUpperCase();
61
+ }
62
+
63
+ return latinBigram.toUpperCase();
64
+ });
65
+ }
66
+
67
+ function replaceSpecials(word) {
68
+ word = normalizeBigramCasing(word, CH_MATCHER, 'CH');
69
+ word = normalizeBigramCasing(word, SH_MATCHER, 'SH');
70
+ word = normalizeBigramCasing(word, YE_START_MATCHER, 'YE');
71
+ word = normalizeBigramCasing(word, YO_MATCHER, 'YO');
72
+ word = normalizeBigramCasing(word, YU_MATCHER, 'YU');
73
+ word = normalizeBigramCasing(word, YA_MATCHER, 'YA'); // Don't split into bigram if repetitive sequence of `e`s is 3+
74
+
75
+ word = word.replace(YE_REPETITIVE, normalizeYeRepetitive);
76
+ return word.replace(YE_AFTER_SOFT_MATCHER, normalizeYeAfterSoft).replace(YE_AFTER_VOWEL_MATCHER, normalizeYeAfterVowel).replace(O_AFTER_SOFT_MATCHER, normalizeYoAfterSoft).replace(APOSTROPHE_COLLISION_MATCHER, normalizeApostropheCollision).replace(TS_AFTER_VOWEL_MATCHER, normalizeTsAfterVowel).replace(S_H_MATCHER, normalizeS_H);
77
+ }
78
+
79
+ export function cyrillicToLatin(word) {
80
+ const escapedWord = replaceSpecials(word);
81
+ let out = '';
82
+
83
+ for (const char of escapedWord) {
84
+ if (char in CYRILLIC_CHARACTERS) {
85
+ out += CYRILLIC_CHARACTERS[char];
86
+ } else {
87
+ out += char;
88
+ }
89
+ }
90
+
91
+ return out;
92
+ }
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
@@ -0,0 +1 @@
1
+ !function(u,A){"object"==typeof exports&&"undefined"!=typeof module?A(exports):"function"==typeof define&&define.amd?define(["exports"],A):A((u="undefined"!=typeof globalThis?globalThis:u||self).lotinKirill={})}(this,(function(u){"use strict";function A(u,A){if(!(u instanceof A))throw new TypeError("Cannot call a class as a function")}function e(u,A){for(var e=0;e<A.length;e++){var t=A[e];t.enumerable=t.enumerable||!1,t.configurable=!0,"value"in t&&(t.writable=!0),Object.defineProperty(u,t.key,t)}}function t(u,A,t){return A&&e(u.prototype,A),t&&e(u,t),u}function n(u,A,e){return A in u?Object.defineProperty(u,A,{value:e,enumerable:!0,configurable:!0,writable:!0}):u[A]=e,u}function E(u,A){if(u!==A)throw new TypeError("Cannot instantiate an arrow function")}function i(u,A){return function(u){if(Array.isArray(u))return u}(u)||function(u,A){var e=null==u?null:"undefined"!=typeof Symbol&&u[Symbol.iterator]||u["@@iterator"];if(null==e)return;var t,n,E=[],i=!0,r=!1;try{for(e=e.call(u);!(i=(t=e.next()).done)&&(E.push(t.value),!A||E.length!==A);i=!0);}catch(u){r=!0,n=u}finally{try{i||null==e.return||e.return()}finally{if(r)throw n}}return E}(u,A)||N(u,A)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function r(u){return function(u){if(Array.isArray(u))return C(u)}(u)||function(u){if("undefined"!=typeof Symbol&&null!=u[Symbol.iterator]||null!=u["@@iterator"])return Array.from(u)}(u)||N(u)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function N(u,A){if(u){if("string"==typeof u)return C(u,A);var e=Object.prototype.toString.call(u).slice(8,-1);return"Object"===e&&u.constructor&&(e=u.constructor.name),"Map"===e||"Set"===e?Array.from(u):"Arguments"===e||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(e)?C(u,A):void 0}}function C(u,A){(null==A||A>u.length)&&(A=u.length);for(var e=0,t=new Array(A);e<A;e++)t[e]=u[e];return t}function o(u,A){var e="undefined"!=typeof Symbol&&u[Symbol.iterator]||u["@@iterator"];if(!e){if(Array.isArray(u)||(e=N(u))||A&&u&&"number"==typeof u.length){e&&(u=e);var t=0,n=function(){};return{s:n,n:function(){return t>=u.length?{done:!0}:{done:!1,value:u[t++]}},e:function(u){throw u},f:n}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var E,i=!0,r=!1;return{s:function(){e=e.call(u)},n:function(){var u=e.next();return i=u.done,u},e:function(u){r=!0,E=u},f:function(){try{i||null==e.return||e.return()}finally{if(r)throw E}}}}var a,O,I=(n(a={},"A","А"),n(a,"a","а"),n(a,"B","Б"),n(a,"b","б"),n(a,"D","Д"),n(a,"d","д"),n(a,"E","Е"),n(a,"e","е"),n(a,"F","Ф"),n(a,"f","ф"),n(a,"G","Г"),n(a,"g","г"),n(a,"H","Ҳ"),n(a,"h","ҳ"),n(a,"I","И"),n(a,"i","и"),n(a,"J","Ж"),n(a,"j","ж"),n(a,"K","К"),n(a,"k","к"),n(a,"L","Л"),n(a,"l","л"),n(a,"M","М"),n(a,"m","м"),n(a,"N","Н"),n(a,"n","н"),n(a,"O","О"),n(a,"o","о"),n(a,"P","П"),n(a,"p","п"),n(a,"Q","Қ"),n(a,"q","қ"),n(a,"R","Р"),n(a,"r","р"),n(a,"S","С"),n(a,"s","с"),n(a,"T","Т"),n(a,"t","т"),n(a,"U","У"),n(a,"u","у"),n(a,"V","В"),n(a,"v","в"),n(a,"X","Х"),n(a,"x","х"),n(a,"Y","Й"),n(a,"y","й"),n(a,"Z","З"),n(a,"z","з"),a),R=(n(O={},"А","A"),n(O,"а","a"),n(O,"Б","B"),n(O,"б","b"),n(O,"Д","D"),n(O,"д","d"),n(O,"Е","E"),n(O,"е","e"),n(O,"Ф","F"),n(O,"ф","f"),n(O,"Г","G"),n(O,"г","g"),n(O,"Ҳ","H"),n(O,"ҳ","h"),n(O,"И","I"),n(O,"и","i"),n(O,"Ж","J"),n(O,"ж","j"),n(O,"К","K"),n(O,"к","k"),n(O,"Л","L"),n(O,"л","l"),n(O,"М","M"),n(O,"м","m"),n(O,"Н","N"),n(O,"н","n"),n(O,"О","O"),n(O,"о","o"),n(O,"П","P"),n(O,"п","p"),n(O,"Қ","Q"),n(O,"қ","q"),n(O,"Р","R"),n(O,"р","r"),n(O,"С","S"),n(O,"с","s"),n(O,"Т","T"),n(O,"т","t"),n(O,"У","U"),n(O,"у","u"),n(O,"В","V"),n(O,"в","v"),n(O,"Х","X"),n(O,"х","x"),n(O,"Й","Y"),n(O,"й","y"),n(O,"З","Z"),n(O,"з","z"),n(O,"Ў","O".concat("‘")),n(O,"ў","o".concat("‘")),n(O,"Ғ","G".concat("‘")),n(O,"ғ","g".concat("‘")),n(O,"Ш","Sh"),n(O,"ш","sh"),n(O,"Ч","Ch"),n(O,"ч","ch"),n(O,"Ё","Yo"),n(O,"ё","yo"),n(O,"Ц","S"),n(O,"ц","s"),n(O,"Ь",""),n(O,"ь",""),n(O,"Э","E"),n(O,"э","e"),n(O,"Ю","Yu"),n(O,"ю","yu"),n(O,"Я","Ya"),n(O,"я","ya"),n(O,"Ъ","ʼ"),n(O,"ъ","ʼ"),O),S="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{};function T(u){return u&&u.__esModule&&Object.prototype.hasOwnProperty.call(u,"default")?u.default:u}function l(u,A){return u(A={exports:{}},A.exports),A.exports}var B=l((function(u,A){Object.defineProperty(A,"__esModule",{value:!0}),A.TLDs="(AAA|AARP|ABARTH|ABB|ABBOTT|ABBVIE|ABC|ABLE|ABOGADO|ABUDHABI|AC|ACADEMY|ACCENTURE|ACCOUNTANT|ACCOUNTANTS|ACO|ACTOR|AD|ADAC|ADS|ADULT|AE|AEG|AERO|AETNA|AF|AFAMILYCOMPANY|AFL|AFRICA|AG|AGAKHAN|AGENCY|AI|AIG|AIGO|AIRBUS|AIRFORCE|AIRTEL|AKDN|AL|ALFAROMEO|ALIBABA|ALIPAY|ALLFINANZ|ALLSTATE|ALLY|ALSACE|ALSTOM|AM|AMERICANEXPRESS|AMERICANFAMILY|AMEX|AMFAM|AMICA|AMSTERDAM|ANALYTICS|ANDROID|ANQUAN|ANZ|AO|AOL|APARTMENTS|APP|APPLE|AQ|AQUARELLE|AR|ARAB|ARAMCO|ARCHI|ARMY|ARPA|ART|ARTE|AS|ASDA|ASIA|ASSOCIATES|AT|ATHLETA|ATTORNEY|AU|AUCTION|AUDI|AUDIBLE|AUDIO|AUSPOST|AUTHOR|AUTO|AUTOS|AVIANCA|AW|AWS|AX|AXA|AZ|AZURE|BA|BABY|BAIDU|BANAMEX|BANANAREPUBLIC|BAND|BANK|BAR|BARCELONA|BARCLAYCARD|BARCLAYS|BAREFOOT|BARGAINS|BASEBALL|BASKETBALL|BAUHAUS|BAYERN|BB|BBC|BBT|BBVA|BCG|BCN|BD|BE|BEATS|BEAUTY|BEER|BENTLEY|BERLIN|BEST|BESTBUY|BET|BF|BG|BH|BHARTI|BI|BIBLE|BID|BIKE|BING|BINGO|BIO|BIZ|BJ|BLACK|BLACKFRIDAY|BLOCKBUSTER|BLOG|BLOOMBERG|BLUE|BM|BMS|BMW|BN|BNPPARIBAS|BO|BOATS|BOEHRINGER|BOFA|BOM|BOND|BOO|BOOK|BOOKING|BOSCH|BOSTIK|BOSTON|BOT|BOUTIQUE|BOX|BR|BRADESCO|BRIDGESTONE|BROADWAY|BROKER|BROTHER|BRUSSELS|BS|BT|BUDAPEST|BUGATTI|BUILD|BUILDERS|BUSINESS|BUY|BUZZ|BV|BW|BY|BZ|BZH|CA|CAB|CAFE|CAL|CALL|CALVINKLEIN|CAM|CAMERA|CAMP|CANCERRESEARCH|CANON|CAPETOWN|CAPITAL|CAPITALONE|CAR|CARAVAN|CARDS|CARE|CAREER|CAREERS|CARS|CASA|CASE|CASEIH|CASH|CASINO|CAT|CATERING|CATHOLIC|CBA|CBN|CBRE|CBS|CC|CD|CEB|CENTER|CEO|CERN|CF|CFA|CFD|CG|CH|CHANEL|CHANNEL|CHARITY|CHASE|CHAT|CHEAP|CHINTAI|CHRISTMAS|CHROME|CHURCH|CI|CIPRIANI|CIRCLE|CISCO|CITADEL|CITI|CITIC|CITY|CITYEATS|CK|CL|CLAIMS|CLEANING|CLICK|CLINIC|CLINIQUE|CLOTHING|CLOUD|CLUB|CLUBMED|CM|CN|CO|COACH|CODES|COFFEE|COLLEGE|COLOGNE|COM|COMCAST|COMMBANK|COMMUNITY|COMPANY|COMPARE|COMPUTER|COMSEC|CONDOS|CONSTRUCTION|CONSULTING|CONTACT|CONTRACTORS|COOKING|COOKINGCHANNEL|COOL|COOP|CORSICA|COUNTRY|COUPON|COUPONS|COURSES|CPA|CR|CREDIT|CREDITCARD|CREDITUNION|CRICKET|CROWN|CRS|CRUISE|CRUISES|CSC|CU|CUISINELLA|CV|CW|CX|CY|CYMRU|CYOU|CZ|DABUR|DAD|DANCE|DATA|DATE|DATING|DATSUN|DAY|DCLK|DDS|DE|DEAL|DEALER|DEALS|DEGREE|DELIVERY|DELL|DELOITTE|DELTA|DEMOCRAT|DENTAL|DENTIST|DESI|DESIGN|DEV|DHL|DIAMONDS|DIET|DIGITAL|DIRECT|DIRECTORY|DISCOUNT|DISCOVER|DISH|DIY|DJ|DK|DM|DNP|DO|DOCS|DOCTOR|DOG|DOMAINS|DOT|DOWNLOAD|DRIVE|DTV|DUBAI|DUCK|DUNLOP|DUPONT|DURBAN|DVAG|DVR|DZ|EARTH|EAT|EC|ECO|EDEKA|EDU|EDUCATION|EE|EG|EMAIL|EMERCK|ENERGY|ENGINEER|ENGINEERING|ENTERPRISES|EPSON|EQUIPMENT|ER|ERICSSON|ERNI|ES|ESQ|ESTATE|ESURANCE|ET|ETISALAT|EU|EUROVISION|EUS|EVENTS|EXCHANGE|EXPERT|EXPOSED|EXPRESS|EXTRASPACE|FAGE|FAIL|FAIRWINDS|FAITH|FAMILY|FAN|FANS|FARM|FARMERS|FASHION|FAST|FEDEX|FEEDBACK|FERRARI|FERRERO|FI|FIAT|FIDELITY|FIDO|FILM|FINAL|FINANCE|FINANCIAL|FIRE|FIRESTONE|FIRMDALE|FISH|FISHING|FIT|FITNESS|FJ|FK|FLICKR|FLIGHTS|FLIR|FLORIST|FLOWERS|FLY|FM|FO|FOO|FOOD|FOODNETWORK|FOOTBALL|FORD|FOREX|FORSALE|FORUM|FOUNDATION|FOX|FR|FREE|FRESENIUS|FRL|FROGANS|FRONTDOOR|FRONTIER|FTR|FUJITSU|FUJIXEROX|FUN|FUND|FURNITURE|FUTBOL|FYI|GA|GAL|GALLERY|GALLO|GALLUP|GAME|GAMES|GAP|GARDEN|GAY|GB|GBIZ|GD|GDN|GE|GEA|GENT|GENTING|GEORGE|GF|GG|GGEE|GH|GI|GIFT|GIFTS|GIVES|GIVING|GL|GLADE|GLASS|GLE|GLOBAL|GLOBO|GM|GMAIL|GMBH|GMO|GMX|GN|GODADDY|GOLD|GOLDPOINT|GOLF|GOO|GOODYEAR|GOOG|GOOGLE|GOP|GOT|GOV|GP|GQ|GR|GRAINGER|GRAPHICS|GRATIS|GREEN|GRIPE|GROCERY|GROUP|GS|GT|GU|GUARDIAN|GUCCI|GUGE|GUIDE|GUITARS|GURU|GW|GY|HAIR|HAMBURG|HANGOUT|HAUS|HBO|HDFC|HDFCBANK|HEALTH|HEALTHCARE|HELP|HELSINKI|HERE|HERMES|HGTV|HIPHOP|HISAMITSU|HITACHI|HIV|HK|HKT|HM|HN|HOCKEY|HOLDINGS|HOLIDAY|HOMEDEPOT|HOMEGOODS|HOMES|HOMESENSE|HONDA|HORSE|HOSPITAL|HOST|HOSTING|HOT|HOTELES|HOTELS|HOTMAIL|HOUSE|HOW|HR|HSBC|HT|HU|HUGHES|HYATT|HYUNDAI|IBM|ICBC|ICE|ICU|ID|IE|IEEE|IFM|IKANO|IL|IM|IMAMAT|IMDB|IMMO|IMMOBILIEN|IN|INC|INDUSTRIES|INFINITI|INFO|ING|INK|INSTITUTE|INSURANCE|INSURE|INT|INTEL|INTERNATIONAL|INTUIT|INVESTMENTS|IO|IPIRANGA|IQ|IR|IRISH|IS|ISMAILI|IST|ISTANBUL|IT|ITAU|ITV|IVECO|JAGUAR|JAVA|JCB|JCP|JE|JEEP|JETZT|JEWELRY|JIO|JLL|JM|JMP|JNJ|JO|JOBS|JOBURG|JOT|JOY|JP|JPMORGAN|JPRS|JUEGOS|JUNIPER|KAUFEN|KDDI|KE|KERRYHOTELS|KERRYLOGISTICS|KERRYPROPERTIES|KFH|KG|KH|KI|KIA|KIM|KINDER|KINDLE|KITCHEN|KIWI|KM|KN|KOELN|KOMATSU|KOSHER|KP|KPMG|KPN|KR|KRD|KRED|KUOKGROUP|KW|KY|KYOTO|KZ|LA|LACAIXA|LAMBORGHINI|LAMER|LANCASTER|LANCIA|LAND|LANDROVER|LANXESS|LASALLE|LAT|LATINO|LATROBE|LAW|LAWYER|LB|LC|LDS|LEASE|LECLERC|LEFRAK|LEGAL|LEGO|LEXUS|LGBT|LI|LIDL|LIFE|LIFEINSURANCE|LIFESTYLE|LIGHTING|LIKE|LILLY|LIMITED|LIMO|LINCOLN|LINDE|LINK|LIPSY|LIVE|LIVING|LIXIL|LK|LLC|LLP|LOAN|LOANS|LOCKER|LOCUS|LOFT|LOL|LONDON|LOTTE|LOTTO|LOVE|LPL|LPLFINANCIAL|LR|LS|LT|LTD|LTDA|LU|LUNDBECK|LUPIN|LUXE|LUXURY|LV|LY|MA|MACYS|MADRID|MAIF|MAISON|MAKEUP|MAN|MANAGEMENT|MANGO|MAP|MARKET|MARKETING|MARKETS|MARRIOTT|MARSHALLS|MASERATI|MATTEL|MBA|MC|MCKINSEY|MD|ME|MED|MEDIA|MEET|MELBOURNE|MEME|MEMORIAL|MEN|MENU|MERCKMSD|METLIFE|MG|MH|MIAMI|MICROSOFT|MIL|MINI|MINT|MIT|MITSUBISHI|MK|ML|MLB|MLS|MM|MMA|MN|MO|MOBI|MOBILE|MODA|MOE|MOI|MOM|MONASH|MONEY|MONSTER|MORMON|MORTGAGE|MOSCOW|MOTO|MOTORCYCLES|MOV|MOVIE|MP|MQ|MR|MS|MSD|MT|MTN|MTR|MU|MUSEUM|MUTUAL|MV|MW|MX|MY|MZ|NA|NAB|NAGOYA|NAME|NATIONWIDE|NATURA|NAVY|NBA|NC|NE|NEC|NET|NETBANK|NETFLIX|NETWORK|NEUSTAR|NEW|NEWHOLLAND|NEWS|NEXT|NEXTDIRECT|NEXUS|NF|NFL|NG|NGO|NHK|NI|NICO|NIKE|NIKON|NINJA|NISSAN|NISSAY|NL|NO|NOKIA|NORTHWESTERNMUTUAL|NORTON|NOW|NOWRUZ|NOWTV|NP|NR|NRA|NRW|NTT|NU|NYC|NZ|OBI|OBSERVER|OFF|OFFICE|OKINAWA|OLAYAN|OLAYANGROUP|OLDNAVY|OLLO|OM|OMEGA|ONE|ONG|ONL|ONLINE|ONYOURSIDE|OOO|OPEN|ORACLE|ORANGE|ORG|ORGANIC|ORIGINS|OSAKA|OTSUKA|OTT|OVH|PA|PAGE|PANASONIC|PARIS|PARS|PARTNERS|PARTS|PARTY|PASSAGENS|PAY|PCCW|PE|PET|PF|PFIZER|PG|PH|PHARMACY|PHD|PHILIPS|PHONE|PHOTO|PHOTOGRAPHY|PHOTOS|PHYSIO|PICS|PICTET|PICTURES|PID|PIN|PING|PINK|PIONEER|PIZZA|PK|PL|PLACE|PLAY|PLAYSTATION|PLUMBING|PLUS|PM|PN|PNC|POHL|POKER|POLITIE|PORN|POST|PR|PRAMERICA|PRAXI|PRESS|PRIME|PRO|PROD|PRODUCTIONS|PROF|PROGRESSIVE|PROMO|PROPERTIES|PROPERTY|PROTECTION|PRU|PRUDENTIAL|PS|PT|PUB|PW|PWC|PY|QA|QPON|QUEBEC|QUEST|QVC|RACING|RADIO|RAID|RE|READ|REALESTATE|REALTOR|REALTY|RECIPES|RED|REDSTONE|REDUMBRELLA|REHAB|REISE|REISEN|REIT|RELIANCE|REN|RENT|RENTALS|REPAIR|REPORT|REPUBLICAN|REST|RESTAURANT|REVIEW|REVIEWS|REXROTH|RICH|RICHARDLI|RICOH|RIGHTATHOME|RIL|RIO|RIP|RMIT|RO|ROCHER|ROCKS|RODEO|ROGERS|ROOM|RS|RSVP|RU|RUGBY|RUHR|RUN|RW|RWE|RYUKYU|SA|SAARLAND|SAFE|SAFETY|SAKURA|SALE|SALON|SAMSCLUB|SAMSUNG|SANDVIK|SANDVIKCOROMANT|SANOFI|SAP|SARL|SAS|SAVE|SAXO|SB|SBI|SBS|SC|SCA|SCB|SCHAEFFLER|SCHMIDT|SCHOLARSHIPS|SCHOOL|SCHULE|SCHWARZ|SCIENCE|SCJOHNSON|SCOR|SCOT|SD|SE|SEARCH|SEAT|SECURE|SECURITY|SEEK|SELECT|SENER|SERVICES|SES|SEVEN|SEW|SEX|SEXY|SFR|SG|SH|SHANGRILA|SHARP|SHAW|SHELL|SHIA|SHIKSHA|SHOES|SHOP|SHOPPING|SHOUJI|SHOW|SHOWTIME|SHRIRAM|SI|SILK|SINA|SINGLES|SITE|SJ|SK|SKI|SKIN|SKY|SKYPE|SL|SLING|SM|SMART|SMILE|SN|SNCF|SO|SOCCER|SOCIAL|SOFTBANK|SOFTWARE|SOHU|SOLAR|SOLUTIONS|SONG|SONY|SOY|SPACE|SPORT|SPOT|SPREADBETTING|SR|SRL|SS|ST|STADA|STAPLES|STAR|STATEBANK|STATEFARM|STC|STCGROUP|STOCKHOLM|STORAGE|STORE|STREAM|STUDIO|STUDY|STYLE|SU|SUCKS|SUPPLIES|SUPPLY|SUPPORT|SURF|SURGERY|SUZUKI|SV|SWATCH|SWIFTCOVER|SWISS|SX|SY|SYDNEY|SYMANTEC|SYSTEMS|SZ|TAB|TAIPEI|TALK|TAOBAO|TARGET|TATAMOTORS|TATAR|TATTOO|TAX|TAXI|TC|TCI|TD|TDK|TEAM|TECH|TECHNOLOGY|TEL|TEMASEK|TENNIS|TEVA|TF|TG|TH|THD|THEATER|THEATRE|TIAA|TICKETS|TIENDA|TIFFANY|TIPS|TIRES|TIROL|TJ|TJMAXX|TJX|TK|TKMAXX|TL|TM|TMALL|TN|TO|TODAY|TOKYO|TOOLS|TOP|TORAY|TOSHIBA|TOTAL|TOURS|TOWN|TOYOTA|TOYS|TR|TRADE|TRADING|TRAINING|TRAVEL|TRAVELCHANNEL|TRAVELERS|TRAVELERSINSURANCE|TRUST|TRV|TT|TUBE|TUI|TUNES|TUSHU|TV|TVS|TW|TZ|UA|UBANK|UBS|UG|UK|UNICOM|UNIVERSITY|UNO|UOL|UPS|US|UY|UZ|VA|VACATIONS|VANA|VANGUARD|VC|VE|VEGAS|VENTURES|VERISIGN|VERSICHERUNG|VET|VG|VI|VIAJES|VIDEO|VIG|VIKING|VILLAS|VIN|VIP|VIRGIN|VISA|VISION|VIVA|VIVO|VLAANDEREN|VN|VODKA|VOLKSWAGEN|VOLVO|VOTE|VOTING|VOTO|VOYAGE|VU|VUELOS|WALES|WALMART|WALTER|WANG|WANGGOU|WATCH|WATCHES|WEATHER|WEATHERCHANNEL|WEBCAM|WEBER|WEBSITE|WED|WEDDING|WEIBO|WEIR|WF|WHOSWHO|WIEN|WIKI|WILLIAMHILL|WIN|WINDOWS|WINE|WINNERS|WME|WOLTERSKLUWER|WOODSIDE|WORK|WORKS|WORLD|WOW|WS|WTC|WTF|XBOX|XEROX|XFINITY|XIHUAN|XIN|XN--11B4C3D|XN--1CK2E1B|XN--1QQW23A|XN--2SCRJ9C|XN--30RR7Y|XN--3BST00M|XN--3DS443G|XN--3E0B707E|XN--3HCRJ9C|XN--3OQ18VL8PN36A|XN--3PXU8K|XN--42C2D9A|XN--45BR5CYL|XN--45BRJ9C|XN--45Q11C|XN--4GBRIM|XN--54B7FTA0CC|XN--55QW42G|XN--55QX5D|XN--5SU34J936BGSG|XN--5TZM5G|XN--6FRZ82G|XN--6QQ986B3XL|XN--80ADXHKS|XN--80AO21A|XN--80AQECDR1A|XN--80ASEHDB|XN--80ASWG|XN--8Y0A063A|XN--90A3AC|XN--90AE|XN--90AIS|XN--9DBQ2A|XN--9ET52U|XN--9KRT00A|XN--B4W605FERD|XN--BCK1B9A5DRE4C|XN--C1AVG|XN--C2BR7G|XN--CCK2B3B|XN--CG4BKI|XN--CLCHC0EA0B2G2A9GCD|XN--CZR694B|XN--CZRS0T|XN--CZRU2D|XN--D1ACJ3B|XN--D1ALF|XN--E1A4C|XN--ECKVDTC9D|XN--EFVY88H|XN--FCT429K|XN--FHBEI|XN--FIQ228C5HS|XN--FIQ64B|XN--FIQS8S|XN--FIQZ9S|XN--FJQ720A|XN--FLW351E|XN--FPCRJ9C3D|XN--FZC2C9E2C|XN--FZYS8D69UVGM|XN--G2XX48C|XN--GCKR3F0F|XN--GECRJ9C|XN--GK3AT1E|XN--H2BREG3EVE|XN--H2BRJ9C|XN--H2BRJ9C8C|XN--HXT814E|XN--I1B6B1A6A2E|XN--IMR513N|XN--IO0A7I|XN--J1AEF|XN--J1AMH|XN--J6W193G|XN--JLQ61U9W7B|XN--JVR189M|XN--KCRX77D1X4A|XN--KPRW13D|XN--KPRY57D|XN--KPU716F|XN--KPUT3I|XN--L1ACC|XN--LGBBAT1AD8J|XN--MGB9AWBF|XN--MGBA3A3EJT|XN--MGBA3A4F16A|XN--MGBA7C0BBN0A|XN--MGBAAKC7DVF|XN--MGBAAM7A8H|XN--MGBAB2BD|XN--MGBAH1A3HJKRD|XN--MGBAI9AZGQP6J|XN--MGBAYH7GPA|XN--MGBBH1A|XN--MGBBH1A71E|XN--MGBC0A9AZCG|XN--MGBCA7DZDO|XN--MGBCPQ6GPA1A|XN--MGBERP4A5D4AR|XN--MGBGU82A|XN--MGBI4ECEXP|XN--MGBPL2FH|XN--MGBT3DHD|XN--MGBTX2B|XN--MGBX4CD0AB|XN--MIX891F|XN--MK1BU44C|XN--MXTQ1M|XN--NGBC5AZD|XN--NGBE9E0A|XN--NGBRX|XN--NODE|XN--NQV7F|XN--NQV7FS00EMA|XN--NYQY26A|XN--O3CW4H|XN--OGBPF8FL|XN--OTU796D|XN--P1ACF|XN--P1AI|XN--PBT977C|XN--PGBS0DH|XN--PSSY2U|XN--Q7CE6A|XN--Q9JYB4C|XN--QCKA1PMC|XN--QXA6A|XN--QXAM|XN--RHQV96G|XN--ROVU88B|XN--RVC1E0AM3E|XN--S9BRJ9C|XN--SES554G|XN--T60B56A|XN--TCKWE|XN--TIQ49XQYJ|XN--UNUP4Y|XN--VERMGENSBERATER-CTB|XN--VERMGENSBERATUNG-PWB|XN--VHQUV|XN--VUQ861B|XN--W4R85EL8FHU5DNRA|XN--W4RS40L|XN--WGBH1C|XN--WGBL6A|XN--XHQ521B|XN--XKC2AL3HYE2A|XN--XKC2DL3A5EE0H|XN--Y9A3AQ|XN--YFRO4I67O|XN--YGBI2AMMX|XN--ZFR164B|XXX|XYZ|YACHTS|YAHOO|YAMAXUN|YANDEX|YE|YODOBASHI|YOGA|YOKOHAMA|YOU|YOUTUBE|YT|YUN|ZA|ZAPPOS|ZARA|ZERO|ZIP|ZM|ZONE|ZUERICH|ZW|TEST)"}));T(B),B.TLDs;var s=l((function(u,A){Object.defineProperty(A,"__esModule",{value:!0}),A.openingParenthesis="([\"'{",A.closingParenthesis=")]\"'}",A.parenthesis=A.openingParenthesis.split("").map((function(u,e){return""+u+A.closingParenthesis.charAt(e)})),A.htmlAttributes=["src","data","href","cite","formaction","icon","manifest","poster","codebase","background","profile","usemap","itemtype","action","longdesc","classid","archive"],A.nonLatinAlphabetRanges="\\u0041-\\u005A\\u0061-\\u007A\\u00AA\\u00B5\\u00BA\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0370-\\u0374\\u0376\\u0377\\u037A-\\u037D\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5\\u03F7-\\u0481\\u048A-\\u0527\\u0531-\\u0556\\u0559\\u0561-\\u0587\\u05D0-\\u05EA\\u05F0-\\u05F2\\u0620-\\u064A\\u066E\\u066F\\u0671-\\u06D3\\u06D5\\u06E5\\u06E6\\u06EE\\u06EF\\u06FA-\\u06FC\\u06FF\\u0710\\u0712-\\u072F\\u074D-\\u07A5\\u07B1\\u07CA-\\u07EA\\u07F4\\u07F5\\u07FA\\u0800-\\u0815\\u081A\\u0824\\u0828\\u0840-\\u0858\\u08A0\\u08A2-\\u08AC\\u0904-\\u0939\\u093D\\u0950\\u0958-\\u0961\\u0971-\\u0977\\u0979-\\u097F\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BD\\u09CE\\u09DC\\u09DD\\u09DF-\\u09E1\\u09F0\\u09F1\\u0A05-\\u0A0A\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39\\u0A59-\\u0A5C\\u0A5E\\u0A72-\\u0A74\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABD\\u0AD0\\u0AE0\\u0AE1\\u0B05-\\u0B0C\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3D\\u0B5C\\u0B5D\\u0B5F-\\u0B61\\u0B71\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BD0\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C33\\u0C35-\\u0C39\\u0C3D\\u0C58\\u0C59\\u0C60\\u0C61\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBD\\u0CDE\\u0CE0\\u0CE1\\u0CF1\\u0CF2\\u0D05-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D3A\\u0D3D\\u0D4E\\u0D60\\u0D61\\u0D7A-\\u0D7F\\u0D85-\\u0D96\\u0D9A-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0E01-\\u0E30\\u0E32\\u0E33\\u0E40-\\u0E46\\u0E81\\u0E82\\u0E84\\u0E87\\u0E88\\u0E8A\\u0E8D\\u0E94-\\u0E97\\u0E99-\\u0E9F\\u0EA1-\\u0EA3\\u0EA5\\u0EA7\\u0EAA\\u0EAB\\u0EAD-\\u0EB0\\u0EB2\\u0EB3\\u0EBD\\u0EC0-\\u0EC4\\u0EC6\\u0EDC-\\u0EDF\\u0F00\\u0F40-\\u0F47\\u0F49-\\u0F6C\\u0F88-\\u0F8C\\u1000-\\u102A\\u103F\\u1050-\\u1055\\u105A-\\u105D\\u1061\\u1065\\u1066\\u106E-\\u1070\\u1075-\\u1081\\u108E\\u10A0-\\u10C5\\u10C7\\u10CD\\u10D0-\\u10FA\\u10FC-\\u1248\\u124A-\\u124D\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310\\u1312-\\u1315\\u1318-\\u135A\\u1380-\\u138F\\u13A0-\\u13F4\\u1401-\\u166C\\u166F-\\u167F\\u1681-\\u169A\\u16A0-\\u16EA\\u1700-\\u170C\\u170E-\\u1711\\u1720-\\u1731\\u1740-\\u1751\\u1760-\\u176C\\u176E-\\u1770\\u1780-\\u17B3\\u17D7\\u17DC\\u1820-\\u1877\\u1880-\\u18A8\\u18AA\\u18B0-\\u18F5\\u1900-\\u191C\\u1950-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19C1-\\u19C7\\u1A00-\\u1A16\\u1A20-\\u1A54\\u1AA7\\u1B05-\\u1B33\\u1B45-\\u1B4B\\u1B83-\\u1BA0\\u1BAE\\u1BAF\\u1BBA-\\u1BE5\\u1C00-\\u1C23\\u1C4D-\\u1C4F\\u1C5A-\\u1C7D\\u1CE9-\\u1CEC\\u1CEE-\\u1CF1\\u1CF5\\u1CF6\\u1D00-\\u1DBF\\u1E00-\\u1F15\\u1F18-\\u1F1D\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D\\u1F80-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FCC\\u1FD0-\\u1FD3\\u1FD6-\\u1FDB\\u1FE0-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u2071\\u207F\\u2090-\\u209C\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2119-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u212D\\u212F-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u2183\\u2184\\u2C00-\\u2C2E\\u2C30-\\u2C5E\\u2C60-\\u2CE4\\u2CEB-\\u2CEE\\u2CF2\\u2CF3\\u2D00-\\u2D25\\u2D27\\u2D2D\\u2D30-\\u2D67\\u2D6F\\u2D80-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u2E2F\\u3005\\u3006\\u3031-\\u3035\\u303B\\u303C\\u3041-\\u3096\\u309D-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312D\\u3131-\\u318E\\u31A0-\\u31BA\\u31F0-\\u31FF\\u3400-\\u4DB5\\u4E00-\\u9FCC\\uA000-\\uA48C\\uA4D0-\\uA4FD\\uA500-\\uA60C\\uA610-\\uA61F\\uA62A\\uA62B\\uA640-\\uA66E\\uA67F-\\uA697\\uA6A0-\\uA6E5\\uA717-\\uA71F\\uA722-\\uA788\\uA78B-\\uA78E\\uA790-\\uA793\\uA7A0-\\uA7AA\\uA7F8-\\uA801\\uA803-\\uA805\\uA807-\\uA80A\\uA80C-\\uA822\\uA840-\\uA873\\uA882-\\uA8B3\\uA8F2-\\uA8F7\\uA8FB\\uA90A-\\uA925\\uA930-\\uA946\\uA960-\\uA97C\\uA984-\\uA9B2\\uA9CF\\uAA00-\\uAA28\\uAA40-\\uAA42\\uAA44-\\uAA4B\\uAA60-\\uAA76\\uAA7A\\uAA80-\\uAAAF\\uAAB1\\uAAB5\\uAAB6\\uAAB9-\\uAABD\\uAAC0\\uAAC2\\uAADB-\\uAADD\\uAAE0-\\uAAEA\\uAAF2-\\uAAF4\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E\\uABC0-\\uABE2\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uF900-\\uFA6D\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFB1D\\uFB1F-\\uFB28\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE70-\\uFE74\\uFE76-\\uFEFC\\uFF21-\\uFF3A\\uFF41-\\uFF5A\\uFF66-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC",A.TLDs=B.TLDs}));T(s),s.openingParenthesis,s.closingParenthesis,s.parenthesis,s.htmlAttributes,s.nonLatinAlphabetRanges,s.TLDs;var D=l((function(u,A){function e(u,A,e){return"function"==typeof e?e(u,A):e}Object.defineProperty(A,"__esModule",{value:!0}),A.transform=function(u,A){var t="",n=1/0,E={},i=!1;if(A&&A.specialTransform)for(var r=0;r<A.specialTransform.length;r++){var N=A.specialTransform[r];if(N.test.test(u.string))return N.transform(u.string,u)}return A&&A.exclude&&e(u.string,u,A.exclude)?u.string:(A&&A.protocol&&(t=e(u.string,u,A.protocol)),u.protocol?t="":t||(t=u.isEmail?"mailto:":u.isFile?"file:///":"http://"),A&&A.truncate&&(n=e(u.string,u,A.truncate)),A&&A.middleTruncation&&(i=e(u.string,u,A.middleTruncation)),A&&A.attributes&&(E=e(u.string,u,A.attributes)),"<a "+Object.keys(E).map((function(u){return!0===E[u]?u:u+'="'+E[u]+'" '})).join(" ")+'href="'+t+u.string+'">'+(u.string.length>n?i?u.string.substring(0,Math.floor(n/2))+"…"+u.string.substring(u.string.length-Math.ceil(n/2),u.string.length):u.string.substring(0,n)+"…":u.string)+"</a>")}}));T(D),D.transform;var L=l((function(u,A){Object.defineProperty(A,"__esModule",{value:!0});var e="([a-z0-9]+(-+[a-z0-9]+)*\\.)+("+s.TLDs+")",t="a-zA-Z\\d\\-._~\\!$&*+,;=:@%'\"\\[\\]()",n="((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]?)",E="\\[(([a-f0-9:]+:+)+[a-f0-9]+)\\]",i="(https?:|ftps?:)\\/\\/",r="((("+i+")?("+e+"|"+n+"|("+i+")("+E+"|"+("([a-z0-9]+(-+[a-z0-9]+)*\\.)+([a-z0-9][a-z0-9-]{0,"+(Math.max.apply(S,s.TLDs.split("|").map((function(u){return u.length})))-2)+"}[a-z0-9])")+"))(?!@\\w)(:(\\d{1,5}))?)|(((https?:|ftps?:)\\/\\/)\\S+))",N=r+"((((\\/((["+t+"]+(\\/["+t+s.nonLatinAlphabetRanges+"]*)*))?)?)((\\?(["+t+"\\/?]*))?)((\\#(["+t+"\\/?]*))?))?\\b(((["+t+"\\/"+s.nonLatinAlphabetRanges+"][a-zA-Z\\d\\-_~+=\\/"+s.nonLatinAlphabetRanges+"]+)?))+)";A.email="\\b(mailto:)?([a-z0-9!#$%&'*+=?^_`{|}~-]+(\\.[a-z0-9!#$%&'*+=?^_`{|}~-]+)*)@("+e+"|"+n+")\\b",A.url="("+N+")|(\\b"+r+"(((\\/(([a-zA-Z\\d\\-._~\\!$&*+,;=:@%'\"\\[\\]()]+(\\/[a-zA-Z\\d\\-._~\\!$&*+,;=:@%'\"\\[\\]()]*)*))?)?)((\\?([a-zA-Z\\d\\-._~\\!$&*+,;=:@%'\"\\[\\]()\\/?]*))?)((\\#([a-zA-Z\\d\\-._~\\!$&*+,;=:@%'\"\\[\\]()\\/?]*))?))?\\b(([\\/]?))+)",A.file="(file:\\/\\/\\/)([a-z]+:(\\/|\\\\)+)?([\\w.]+([\\/\\\\]?)+)+",A.final="("+A.url+")|("+A.email+")|("+A.file+")",A.finalRegex=new RegExp(A.final,"gi"),A.ipRegex=new RegExp("^("+n+"|"+E+")$","i"),A.emailRegex=new RegExp("^("+A.email+")$","i"),A.fileRegex=new RegExp("^("+A.file+")$","i"),A.urlRegex=new RegExp("^("+A.url+")$","i");var C={isURL:0,isEmail:0,isFile:0,file:{fileName:0,protocol:0},email:{protocol:0,local:0,host:0},url:{ipv4:0,ipv6:0,ipv4Confirmation:0,byProtocol:0,port:0,protocol1:0,protocol2:0,protocol3:0,protocolWithDomain:0,path:0,secondPartOfPath:0,query:0,fragment:0}};A.iidxes=C;for(var o=["file:///some/file/path/filename.pdf","mailto:e+_mail.me@sub.domain.com","http://sub.domain.co.uk:3000/p/a/t/h_(asd)/h?q=abc123#dfdf","http://www.عربي.com","http://127.0.0.1:3000/p/a/t_(asd)/h?q=abc123#dfdf","http://[2a00:1450:4025:401::67]/k/something","a.org/abc/ი_გგ"].join(" "),a=null,O=0;null!==(a=A.finalRegex.exec(o));)0===O&&(C.isFile=a.lastIndexOf(a[0]),C.file.fileName=a.indexOf("filename.pdf"),C.file.protocol=a.indexOf("file:///")),1===O&&(C.isEmail=a.lastIndexOf(a[0]),C.email.protocol=a.indexOf("mailto:"),C.email.local=a.indexOf("e+_mail.me"),C.email.host=a.indexOf("sub.domain.com")),2===O&&(C.isURL=a.lastIndexOf(a[0]),C.url.protocol1=a.indexOf("http://"),C.url.protocolWithDomain=a.indexOf("http://sub.domain.co.uk:3000"),C.url.port=a.indexOf("3000"),C.url.path=a.indexOf("/p/a/t/h_(asd)/h"),C.url.query=a.indexOf("q=abc123"),C.url.fragment=a.indexOf("dfdf")),3===O&&(C.url.byProtocol=a.lastIndexOf("http://www.عربي.com"),C.url.protocol2=a.lastIndexOf("http://")),4===O&&(C.url.ipv4=a.indexOf("127.0.0.1"),C.url.ipv4Confirmation=a.indexOf("0.")),5===O&&(C.url.ipv6=a.indexOf("2a00:1450:4025:401::67"),C.url.protocol3=a.lastIndexOf("http://")),6===O&&(C.url.secondPartOfPath=a.indexOf("გგ")),O++}));T(L),L.email,L.url,L.file,L.finalRegex,L.ipRegex,L.emailRegex,L.fileRegex,L.urlRegex,L.iidxes;var c=l((function(u,A){Object.defineProperty(A,"__esModule",{value:!0}),A.checkParenthesis=function(u,A,e,t){return t===A&&(e.split(u).length-e.split(A).length==1||u===A&&e.split(u).length%2==0||void 0)},A.maximumAttrLength=s.htmlAttributes.sort((function(u,A){return A.length-u.length}))[0].length,A.isInsideAttribute=function(u){return/\s[a-z0-9-]+=('|")$/i.test(u)||/: ?url\(('|")?$/i.test(u)},A.isInsideAnchorTag=function(u,A,e){for(var t=u.replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&"),n=new RegExp("(?=(<a))(?!([\\s\\S]*)(<\\/a>)("+t+"))[\\s\\S]*?("+t+")(?!\"|')","gi"),E=null;null!==(E=n.exec(A));){if(E.index+E[0].length===e)return!0}return!1}}));T(c),c.checkParenthesis,c.maximumAttrLength,c.isInsideAttribute,c.isInsideAnchorTag;var F=T(l((function(u,A){Object.defineProperty(A,"__esModule",{value:!0});var e=function(u){for(var A=[],e=null,t=function(){var t=e.index,n=t+e[0].length,E=e[0];if("/"===u.charAt(n)&&(E+=u.charAt(n),n++),s.closingParenthesis.indexOf(u.charAt(n))>-1&&s.parenthesis.forEach((function(A){var e=A.charAt(0),t=A.charAt(1);c.checkParenthesis(e,t,E,u.charAt(n))&&(E+=u.charAt(n),n++)})),-1!==['""',"''","()"].indexOf(u.charAt(t-1)+u.charAt(n))&&c.isInsideAttribute(u.substring(t-c.maximumAttrLength-15,t)))return"continue";if(u.substring(n,u.length).indexOf("</a>")>-1&&u.substring(0,t).indexOf("<a")>-1&&c.isInsideAnchorTag(E,u,n))return"continue";if(e[L.iidxes.isURL]){var i=(e[L.iidxes.url.path]||"")+(e[L.iidxes.url.secondPartOfPath]||"")||void 0,r=e[L.iidxes.url.protocol1]||e[L.iidxes.url.protocol2]||e[L.iidxes.url.protocol3];A.push({start:t,end:n,string:E,isURL:!0,protocol:r,port:e[L.iidxes.url.port],ipv4:e[L.iidxes.url.ipv4Confirmation]?e[L.iidxes.url.ipv4]:void 0,ipv6:e[L.iidxes.url.ipv6],host:e[L.iidxes.url.byProtocol]?void 0:(e[L.iidxes.url.protocolWithDomain]||"").substr((r||"").length),confirmedByProtocol:!!e[L.iidxes.url.byProtocol],path:e[L.iidxes.url.byProtocol]?void 0:i,query:e[L.iidxes.url.query]||void 0,fragment:e[L.iidxes.url.fragment]||void 0})}else if(e[L.iidxes.isFile]){var N=E.substr(8);A.push({start:t,end:n,string:E,isFile:!0,protocol:e[L.iidxes.file.protocol],filename:e[L.iidxes.file.fileName],filePath:N,fileDirectory:N.substr(0,N.length-e[L.iidxes.file.fileName].length)})}else e[L.iidxes.isEmail]?A.push({start:t,end:n,string:E,isEmail:!0,local:e[L.iidxes.email.local],protocol:e[L.iidxes.email.protocol],host:e[L.iidxes.email.host]}):A.push({start:t,end:n,string:E})};null!==(e=L.finalRegex.exec(u));)t();return A},t=function(u){var A="string"==typeof u?{input:u,options:void 0,extensions:void 0}:u,t=A.input,n=A.options,E=A.extensions;if(E)for(var i=0;i<E.length;i++){var r=E[i];t=t.replace(r.test,r.transform)}var N=e(t),C="";for(i=0;i<N.length;i++)C=(C||(0===i?t.substring(0,N[i].start):""))+D.transform(N[i],n)+(N[i+1]?t.substring(N[i].end,N[i+1].start):t.substring(N[i].end));return C||t};t.list=function(u){return e(u)},t.validate={ip:function(u){return L.ipRegex.test(u)},email:function(u){return L.emailRegex.test(u)},file:function(u){return L.fileRegex.test(u)},url:function(u){return L.urlRegex.test(u)||L.ipRegex.test(u)}},A.default=t})));function f(u){return u.toLowerCase()===u}function M(u,A){return f(A)?u.toLowerCase():u.toUpperCase()}function G(u){return u.charAt(0).toUpperCase()+u.substring(1).toLowerCase()}function U(u){return"string"==typeof u&&/^[a-z\u0400-\u04FF]+$/i.test(u)}function h(u){return/ь$/i.test(u)}var P=/Ч/gi,d=/Ш/gi,p=/^Е/gi,X=/Е/gi,H=/Ё/gi,g=/Ю/gi,K=/Я/gi,Y=/е{3,}/gi,v=/[ьъ]е/gi,m=/[аоэеиуўёюяaeiou]е/gi,W=/[аоэеиуўёюяaeiou]ц/gi,y=/ьо/gi,x=/сҳ/gi,V=/[ўғ]ъ/gi;function b(u){var A=this;return u.replace(X,function(u){return E(this,A),R[u]||u}.bind(this))}function J(u){return M("ye",u.charAt(1))}function Z(u){return u.charAt(0)+M("ye",u.charAt(1))}function Q(u){return M("yo",u.charAt(1))}function w(u){return u.charAt(0)}function k(u){return u.charAt(0)+M("ts",u.charAt(1))}function _(u){return M("s",u.charAt(0))+"ʼ"+M("h",u.charAt(1))}function z(u,A,e){var t=this;return u.replace(A,function(A,n){if(E(this,t),f(A))return e.toLowerCase();if(!U(u[n-1])&&!U(u[n+1]))return G(e);var i=U(u[n+1])&&u[n+1];return i&&f(i)?G(e):e.toUpperCase()}.bind(this))}function j(u){var A,e="",t=o(function(u){return u=z(u,P,"CH"),u=z(u,d,"SH"),u=z(u,p,"YE"),u=z(u,H,"YO"),u=z(u,g,"YU"),(u=(u=z(u,K,"YA")).replace(Y,b)).replace(v,J).replace(m,Z).replace(y,Q).replace(V,w).replace(W,k).replace(x,_)}(u));try{for(t.s();!(A=t.n()).done;){var n=A.value;e+=n in R?R[n]:n}}catch(u){t.e(u)}finally{t.f()}return e}var $=function(){function u(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];A(this,u),n(this,"collection",[]),this.extend(e)}return t(u,[{key:"extend",value:function(u){var A=this;u.forEach(function(u){var e;(E(this,A),u&&u[0]&&u[1])&&(e=this.collection).push.apply(e,r(this.generateWordCasingVariants(u)))}.bind(this))}},{key:"purge",value:function(){this.collection=[]}},{key:"generateWordCasingVariants",value:function(u){var A=i(u,2),e=A[0],t=A[1];return[[e.toLowerCase(),t.toLowerCase()],[e.toUpperCase(),t.toUpperCase()],[G(e),G(t)]]}},{key:"getCase",value:function(u,A){var e="latin"===A?1:0;return{exceptionalWord:u["latin"===A?0:1],replacement:u[e]}}},{key:"normalizeEndSoftSign",value:function(u){var A=u.replacement;u.replacement=A.substring(0,A.length-1)}},{key:"findInCollection",value:function(u,A){var e,t,n,E=f(u.charAt(0))?u.toLowerCase():G(u),i=o(this.collection);try{for(i.s();!(n=i.n()).done;){var r=n.value,N=this.getCase(r,A),C=N.exceptionalWord,a=N.replacement;if(u.startsWith(C))return e={exceptionalWord:C,replacement:a},"latin"===A&&h(a)&&u.length!==C.length&&this.normalizeEndSoftSign(e),{exceptional:e};E.startsWith(C)&&(t={exceptionalWord:C,replacement:a})}}catch(u){i.e(u)}finally{i.f()}return{alternative:t}}},{key:"decideMatcher",value:function(u,A){return void 0!==u?u.exceptionalWord:void 0!==A?new RegExp(A.exceptionalWord.replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&"),"gi"):void 0}},{key:"findCase",value:function(u,A){var e=this.findInCollection(u,A),t=e.exceptional,n=e.alternative,E=this.decideMatcher(t,n),i=(null==t?void 0:t.replacement)||(null==n?void 0:n.replacement);if(E&&i)return{matcher:E,replacement:i}}}]),u}();function q(u,A,e){var t=this;return u.replace(A,function(u){return E(this,t),M(e,u[0])}.bind(this))}function uu(u){var A=this;return u=(u=u.replace(/tsi(on|ya)/gi,function(u){return E(this,A),q(u,/ts/i,"ц")}.bind(this))).replace(/^e|[\W]e/gi,function(u){return E(this,A),q(u,/e/i,"э")}.bind(this)),u=q(u=u.replace(/e{2}/gi,function(u){return E(this,A),u[0]+M("э",u[1])}.bind(this)),/ch/gi,"ч"),u=q(u,/sh/gi,"ш"),u=q(u,/g[ʻʼ’'`‘´]/gi,"ғ"),u=q(u,/o[ʻʼ’'`‘´]/gi,"ў"),u=q(u,/ye/gi,"е"),u=q(u,/yo/gi,"ё"),u=q(u,/yu/gi,"ю"),u=function(u){var A=this;return u.replace(/[ʻʼ’'`‘´]/g,function(e,t){E(this,A);var n=u[t+1]||u[t-1];return n?M("ъ",n):"ъ".toLowerCase()}.bind(this))}(u=(u=q(u,/ya/gi,"я")).replace(/s[ʻʼ’'`‘´]h/gi,function(u){return E(this,A),(I[u[0]]||u[0])+(I[u[2]]||u[2])}.bind(this)))}function Au(u){var A,e="",t=o(uu(u));try{for(t.s();!(A=t.n()).done;){var n=A.value;e+=n in I?I[n]:n}}catch(u){t.e(u)}finally{t.f()}return e}var eu=function(){function u(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];A(this,u),n(this,"exceptionalsCollection",new $),this.extendExceptionals(e)}return t(u,[{key:"extendExceptionals",value:function(u){this.exceptionalsCollection.extend(u)}},{key:"purgeExceptionals",value:function(){this.exceptionalsCollection.purge()}},{key:"getTransliterator",value:function(u){return"latin"===u?Au:j}},{key:"replaceExceptionals",value:function(u,A,e,t){var n=this,i=u.split(A);return(i=i.map(function(u,A){E(this,n);var r=A===i.length-1;return t(u)+(r?"":e)}.bind(this))).join("")}},{key:"handleExceptional",value:function(u,A){var e=this.exceptionalsCollection.findCase(u,A);if(e)return this.replaceExceptionals(u,e.matcher,e.replacement,this.getTransliterator(A))}},{key:"transliteratePureWord",value:function(u,A){var e=this,t=this.getTransliterator(A);return u.replace(/[ʻʼ’'`´‘a-z\u0400-\u04FF\-]+/gi,function(u){E(this,e);var n=this.handleExceptional(u,A);return n||t(u)}.bind(this))}},{key:"transliterateWord",value:function(u,A){if(function(u){return F.list(u).length>0}(u))return u;if(function(u){return/^M{0,4}(CM|CD|D?C{0,3})(XC|XL|L?X{0,3})(IX|IV|V?I{0,3})(\.|\))?$/.test(u)}(u))return u;var e=this.handleExceptional(u,A);return e||this.transliteratePureWord(u,A)}},{key:"toCyrillic",value:function(u){var A=this;return u instanceof Array?u.map(function(u){return E(this,A),this.transliterateWord(u,"latin")}.bind(this)):"string"==typeof u?this.transliterateWord(u,"latin"):void 0}},{key:"toLatin",value:function(u){var A=this;return u instanceof Array?u.map(function(u){return E(this,A),this.transliterateWord(u,"cyrillic")}.bind(this)):"string"==typeof u?this.transliterateWord(u,"cyrillic"):void 0}},{key:"textToCyrillic",value:function(u){var A=this;return u.replace(/\S+/g,function(u){return E(this,A),this.transliterateWord(u,"latin")}.bind(this))}},{key:"textToLatin",value:function(u){var A=this;return u.replace(/\S+/g,function(u){return E(this,A),this.transliterateWord(u,"cyrillic")}.bind(this))}}]),u}();u.cyrillicToLatin=j,u.default=eu,u.latinToCyrillic=Au,Object.defineProperty(u,"__esModule",{value:!0})}));
@@ -0,0 +1,54 @@
1
+ {
2
+ "name": "lotin-kirill",
3
+ "description": "Transform Uzbek latin characters into Uzbek-cyrillic characters or vice versa. O'zbekcha so'zlarni lotin alifbosidan kirill alifbosiga (yoki aksincha) o'girish.",
4
+ "version": "0.1.2",
5
+ "license": "MIT",
6
+ "files": [
7
+ "dist-*/",
8
+ "bin/"
9
+ ],
10
+ "pika": true,
11
+ "sideEffects": false,
12
+ "keywords": [
13
+ "lotin",
14
+ "kirill",
15
+ "lotin-kirill",
16
+ "alifbo",
17
+ "transliteratsiya",
18
+ "o'zbekcha"
19
+ ],
20
+ "homepage": "https://github.com/diyorbek/lotin-kirill",
21
+ "repository": {
22
+ "type": "git",
23
+ "url": "https://github.com/diyorbek/lotin-kirill.git"
24
+ },
25
+ "dependencies": {
26
+ "anchorme": "^2.1.2"
27
+ },
28
+ "devDependencies": {
29
+ "@pika/pack": "^0.5.0",
30
+ "@pika/plugin-build-node": "^0.9.2",
31
+ "@pika/plugin-build-types": "^0.9.2",
32
+ "@pika/plugin-standard-pkg": "^0.9.2",
33
+ "@types/jest": "^26.0.20",
34
+ "@typescript-eslint/eslint-plugin": "^3.0.2",
35
+ "@typescript-eslint/parser": "^3.0.2",
36
+ "eslint": "^7.1.0",
37
+ "eslint-config-prettier": "^6.11.0",
38
+ "eslint-plugin-jest": "^23.17.1",
39
+ "eslint-plugin-prettier": "^3.1.3",
40
+ "husky": "^6.0.0",
41
+ "jest": "^26.6.3",
42
+ "np": "^7.5.0",
43
+ "pika-plugin-build-legacy-browser": "^0.0.3",
44
+ "prettier": "^2.2.1",
45
+ "prettier-plugin-organize-imports": "^2.1.0",
46
+ "ts-jest": "^26.5.3",
47
+ "typescript": "^4.2.3"
48
+ },
49
+ "esnext": "dist-src/index.js",
50
+ "main": "dist-node/index.js",
51
+ "types": "dist-types/index.d.ts",
52
+ "unpkg": "dist-umd/index.min.js",
53
+ "jsdelivr": "dist-umd/index.min.js"
54
+ }
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sources":["../dist-src/characters.js","../dist-src/utils.js","../dist-src/cyrillic.js","../dist-src/exceptionalsCollection.js","../dist-src/latin.js","../dist-src/index.js"],"sourcesContent":["export const APOSTROPHE = '\\u02bc';\nexport const TURNED_COMMA = '\\u2018';\nexport const LATIN_CHARACTERS = {\n ['A']: 'А',\n ['a']: 'а',\n ['B']: 'Б',\n ['b']: 'б',\n ['D']: 'Д',\n ['d']: 'д',\n ['E']: 'Е',\n ['e']: 'е',\n ['F']: 'Ф',\n ['f']: 'ф',\n ['G']: 'Г',\n ['g']: 'г',\n ['H']: 'Ҳ',\n ['h']: 'ҳ',\n ['I']: 'И',\n ['i']: 'и',\n ['J']: 'Ж',\n ['j']: 'ж',\n ['K']: 'К',\n ['k']: 'к',\n ['L']: 'Л',\n ['l']: 'л',\n ['M']: 'М',\n ['m']: 'м',\n ['N']: 'Н',\n ['n']: 'н',\n ['O']: 'О',\n ['o']: 'о',\n ['P']: 'П',\n ['p']: 'п',\n ['Q']: 'Қ',\n ['q']: 'қ',\n ['R']: 'Р',\n ['r']: 'р',\n ['S']: 'С',\n ['s']: 'с',\n ['T']: 'Т',\n ['t']: 'т',\n ['U']: 'У',\n ['u']: 'у',\n ['V']: 'В',\n ['v']: 'в',\n ['X']: 'Х',\n ['x']: 'х',\n ['Y']: 'Й',\n ['y']: 'й',\n ['Z']: 'З',\n ['z']: 'з'\n};\nexport const CYRILLIC_CHARACTERS = {\n ['А']: 'A',\n ['а']: 'a',\n ['Б']: 'B',\n ['б']: 'b',\n ['Д']: 'D',\n ['д']: 'd',\n ['Е']: 'E',\n ['е']: 'e',\n ['Ф']: 'F',\n ['ф']: 'f',\n ['Г']: 'G',\n ['г']: 'g',\n ['Ҳ']: 'H',\n ['ҳ']: 'h',\n ['И']: 'I',\n ['и']: 'i',\n ['Ж']: 'J',\n ['ж']: 'j',\n ['К']: 'K',\n ['к']: 'k',\n ['Л']: 'L',\n ['л']: 'l',\n ['М']: 'M',\n ['м']: 'm',\n ['Н']: 'N',\n ['н']: 'n',\n ['О']: 'O',\n ['о']: 'o',\n ['П']: 'P',\n ['п']: 'p',\n ['Қ']: 'Q',\n ['қ']: 'q',\n ['Р']: 'R',\n ['р']: 'r',\n ['С']: 'S',\n ['с']: 's',\n ['Т']: 'T',\n ['т']: 't',\n ['У']: 'U',\n ['у']: 'u',\n ['В']: 'V',\n ['в']: 'v',\n ['Х']: 'X',\n ['х']: 'x',\n ['Й']: 'Y',\n ['й']: 'y',\n ['З']: 'Z',\n ['з']: 'z',\n ['Ў']: `O${TURNED_COMMA}`,\n ['ў']: `o${TURNED_COMMA}`,\n ['Ғ']: `G${TURNED_COMMA}`,\n ['ғ']: `g${TURNED_COMMA}`,\n ['Ш']: 'Sh',\n ['ш']: 'sh',\n ['Ч']: 'Ch',\n ['ч']: 'ch',\n ['Ё']: 'Yo',\n ['ё']: 'yo',\n ['Ц']: 'S',\n ['ц']: 's',\n ['Ь']: '',\n ['ь']: '',\n ['Э']: 'E',\n ['э']: 'e',\n ['Ю']: 'Yu',\n ['ю']: 'yu',\n ['Я']: 'Ya',\n ['я']: 'ya',\n ['Ъ']: APOSTROPHE,\n ['ъ']: APOSTROPHE\n};\nexport const CYRILLIC_LETTER = `\\u0400-\\u04FF`;\nexport const CYRILLIC_VOVEL = `аоэеиуўёюя`;\nexport const LATIN_LETTER = `a-z`;\nexport const LATIN_VOVEL = `aeiou`;","import anchorme from 'anchorme';\nexport function isLowerCase(char) {\n return char.toLowerCase() === char;\n}\nexport function normalizeCase(char, assimilateTo) {\n return isLowerCase(assimilateTo) ? char.toLowerCase() : char.toUpperCase();\n}\nexport function capitalize(word) {\n return word.charAt(0).toUpperCase() + word.substring(1).toLowerCase();\n} // Detect only alphabetical letters, excluding apostrophe(')\n\nexport function isLetter(char) {\n if (typeof char === 'string') {\n return /^[a-z\\u0400-\\u04FF]+$/i.test(char);\n }\n\n return false;\n}\nexport function isVovel(char) {\n return /[аоэеиуўёюяaeiou]/i.test(char);\n}\nexport function isURL(word) {\n return anchorme.list(word).length > 0;\n}\nexport function escapeRegex(expString) {\n return expString.replace(/[-\\/\\\\^$*+?.()|[\\]{}]/g, '\\\\$&');\n}\nexport function endsWithSoftSign(word) {\n return /ь$/i.test(word);\n}\nexport function isRomanNumber(word) {\n return /^M{0,4}(CM|CD|D?C{0,3})(XC|XL|L?X{0,3})(IX|IV|V?I{0,3})(\\.|\\))?$/.test(word);\n}","import { CYRILLIC_CHARACTERS } from \"./characters.js\";\nimport { capitalize, isLetter, isLowerCase, normalizeCase } from \"./utils.js\";\n\nfunction normalizeBigramCasing(word, matcher, latinBigram) {\n return word.replace(matcher, (matchString, index) => {\n if (isLowerCase(matchString)) {\n return latinBigram.toLowerCase();\n }\n\n if (!isLetter(word[index - 1]) && !isLetter(word[index + 1])) {\n return capitalize(latinBigram);\n } // Assimilate to the next letter\n\n\n const assimilator = isLetter(word[index + 1]) && word[index + 1];\n\n if (assimilator) {\n return isLowerCase(assimilator) ? capitalize(latinBigram) : latinBigram.toUpperCase();\n }\n\n return latinBigram.toUpperCase();\n });\n}\n\nfunction replaceSpecials(word) {\n word = normalizeBigramCasing(word, /Ч/gi, 'CH');\n word = normalizeBigramCasing(word, /Ш/gi, 'SH');\n word = normalizeBigramCasing(word, /^Е/gi, 'YE');\n word = normalizeBigramCasing(word, /Ё/gi, 'YO');\n word = normalizeBigramCasing(word, /Ю/gi, 'YU');\n word = normalizeBigramCasing(word, /Я/gi, 'YA'); // Don't split into bigram if repetitive sequence of `e`s is 3+\n\n word = word.replace(/е{3,}/gi, matchString => matchString.replace(/е/gi, str => CYRILLIC_CHARACTERS[str] || str));\n return word.replace(/[ьъ]е/gi, str => normalizeCase('ye', str.charAt(1))).replace(/[аоэеиуўёюяaeiou]е/gi, str => str.charAt(0) + normalizeCase('ye', str.charAt(1))).replace(/ьо/gi, matchString => normalizeCase('yo', matchString.charAt(1))).replace(/[ўғ]ъ/gi, matchString => matchString.charAt(0)).replace(/[аоэеиуўёюяaeiou]ц/gi, str => str.charAt(0) + normalizeCase('ts', str.charAt(1)));\n}\n\nexport function cyrillicToLatin(word) {\n const escapedWord = replaceSpecials(word);\n let out = '';\n\n for (const char of escapedWord) {\n if (char in CYRILLIC_CHARACTERS) {\n out += CYRILLIC_CHARACTERS[char];\n } else {\n out += char;\n }\n }\n\n return out;\n}","import { capitalize, endsWithSoftSign, escapeRegex, isLowerCase } from \"./utils.js\";\n/*\n Exceptional word pairs works bidirectional even if\n transliteration from cyrillic to latin is usually\n possible without exceptions list. Sepatating list \n into 2 (one for latin, the other for cyrillc) make\n things complicated. \n \n Proposal can be introducing optional 3rd item to \n `ExceptionalWordPair` which will indicate \n bidirectional, only `latin->cyrillic` or only \n `cyrillic->latin` transliteration. This way look-ups \n in exceptionals list can be avoided where unecessary.\n*/\n\nexport class ExceptionalsCollection {\n collection = [];\n\n constructor(exceptions = []) {\n this.extend(exceptions);\n }\n\n extend(exceptions) {\n // TODO: Optimize for duplicates\n exceptions.forEach(pair => {\n if (pair && pair[0] && pair[1]) {\n this.collection.push(...this.generateWordCasingVariants(pair));\n }\n });\n }\n\n purge() {\n this.collection = [];\n }\n\n generateWordCasingVariants([latin, cyrillic]) {\n return [[latin.toLowerCase(), cyrillic.toLowerCase()], [latin.toUpperCase(), cyrillic.toUpperCase()], [capitalize(latin), capitalize(cyrillic)]];\n }\n\n getCase(exceptionalPair, source) {\n const exceptionSource = source === 'latin' ? 0 : 1;\n const exceptionTarget = source === 'latin' ? 1 : 0;\n return {\n exceptionalWord: exceptionalPair[exceptionSource],\n replacement: exceptionalPair[exceptionTarget]\n };\n }\n\n normalizeEndSoftSign(exceptional) {\n const {\n replacement\n } = exceptional;\n exceptional.replacement = replacement.substring(0, replacement.length - 1);\n }\n\n findInCollection(word, source) {\n let exceptional;\n let alternative; // If the word is typed with wrong letter-casing, default to lower-case or capitalize\n\n const shouldDefaultToLowerCase = isLowerCase(word.charAt(0));\n const altCasingMatch = shouldDefaultToLowerCase ? word.toLowerCase() : capitalize(word);\n\n for (const exceptionalPair of this.collection) {\n const {\n exceptionalWord,\n replacement\n } = this.getCase(exceptionalPair, source);\n\n if (word.startsWith(exceptionalWord)) {\n exceptional = {\n exceptionalWord,\n replacement\n };\n\n if (source === 'latin' && endsWithSoftSign(replacement) && word.length !== exceptionalWord.length) {\n this.normalizeEndSoftSign(exceptional);\n }\n\n return {\n exceptional\n };\n }\n\n if (altCasingMatch.startsWith(exceptionalWord)) {\n alternative = {\n exceptionalWord,\n replacement\n };\n }\n }\n\n return {\n alternative\n };\n }\n\n decideMatcher(exceptional, alternative) {\n if (exceptional !== undefined) {\n return exceptional.exceptionalWord;\n }\n\n if (alternative !== undefined) {\n // Using RegExp in \"case-insensetive\" mode to match exceptional\n // with its alternative casing\n return new RegExp(escapeRegex(alternative.exceptionalWord), 'gi');\n }\n }\n\n findCase(word, source) {\n const {\n exceptional,\n alternative\n } = this.findInCollection(word, source);\n const matcher = this.decideMatcher(exceptional, alternative);\n const replacement = exceptional?.replacement || alternative?.replacement;\n\n if (matcher && replacement) {\n return {\n matcher,\n replacement\n };\n }\n }\n\n}","import { LATIN_CHARACTERS } from \"./characters.js\";\nimport { normalizeCase } from \"./utils.js\";\n\nfunction transliterateBigram(word, matcher, cyrillicBigram) {\n return word.replace(matcher, matchString => {\n return normalizeCase(cyrillicBigram, matchString[0]);\n });\n}\n\nfunction transliterateApostrophe(word) {\n const apostrophe = 'ъ';\n return word.replace(/[ʻʼ’'`‘´]/g, (_, index) => {\n // Prioritize assimilation to the next letter\n const assimilator = word[index + 1] || word[index - 1];\n\n if (assimilator) {\n return normalizeCase(apostrophe, assimilator);\n }\n\n return apostrophe.toLowerCase();\n });\n}\n\nfunction transliterateSpecialLetters(word) {\n word = word.replace(/tsi(on|ya)/gi, matchString => {\n return transliterateBigram(matchString, /ts/i, 'ц');\n });\n /* \n Replace with 'Э' if:\n 1. word starts with 'E'\n 2. 'E' comes after non-letter symbol\n 3. cyrillic letter \n */\n\n word = word.replace(/^e|[\\W]e/gi, matchString => {\n return transliterateBigram(matchString, /e/i, 'э');\n });\n word = word.replace(/e{2}/gi, matchString => {\n return matchString[0] + normalizeCase('э', matchString[1]);\n });\n word = transliterateBigram(word, /ch/gi, 'ч');\n word = transliterateBigram(word, /sh/gi, 'ш');\n word = transliterateBigram(word, /g[ʻʼ’'`‘´]/gi, 'ғ');\n word = transliterateBigram(word, /o[ʻʼ’'`‘´]/gi, 'ў');\n word = transliterateBigram(word, /ye/gi, 'е');\n word = transliterateBigram(word, /yo/gi, 'ё');\n word = transliterateBigram(word, /yu/gi, 'ю');\n word = transliterateBigram(word, /ya/gi, 'я'); // handle non-bigram \"S'H\" => \"СҲ\" combination\n\n word = word.replace(/s[ʻʼ’'`‘´]h/gi, matchString => {\n const s = LATIN_CHARACTERS[matchString[0]] || matchString[0];\n const h = LATIN_CHARACTERS[matchString[2]] || matchString[2];\n return s + h;\n });\n word = transliterateApostrophe(word);\n return word;\n}\n\nexport function latinToCyrillic(word) {\n const escapedWord = transliterateSpecialLetters(word);\n let out = '';\n\n for (const char of escapedWord) {\n if (char in LATIN_CHARACTERS) {\n out += LATIN_CHARACTERS[char];\n } else {\n out += char;\n }\n }\n\n return out;\n}","import { cyrillicToLatin } from \"./cyrillic.js\";\nimport { ExceptionalsCollection } from \"./exceptionalsCollection.js\";\nimport { latinToCyrillic } from \"./latin.js\";\nimport { isRomanNumber, isURL } from \"./utils.js\";\nexport default class Transliterator {\n exceptionalsCollection = new ExceptionalsCollection();\n\n constructor(exceptions = []) {\n this.extendExceptionals(exceptions);\n }\n\n extendExceptionals(exceptions) {\n this.exceptionalsCollection.extend(exceptions);\n }\n\n purgeExceptionals() {\n this.exceptionalsCollection.purge();\n }\n\n getTransliterator(source) {\n return source === 'latin' ? latinToCyrillic : cyrillicToLatin;\n }\n\n replaceExceptionals(word, exceptional, replacement, transliterator) {\n let chunks = word.split(exceptional);\n chunks = chunks.map((chunk, i) => {\n const isLastChunk = i === chunks.length - 1;\n return transliterator(chunk) + (isLastChunk ? '' : replacement);\n });\n return chunks.join('');\n }\n\n handleExceptional(word, source) {\n const exceptional = this.exceptionalsCollection.findCase(word, source);\n\n if (exceptional) {\n return this.replaceExceptionals(word, exceptional.matcher, exceptional.replacement, this.getTransliterator(source));\n }\n }\n\n transliteratePureWord(word, source) {\n const transliterator = this.getTransliterator(source);\n return word.replace(/[ʻʼ’'`´‘a-z\\u0400-\\u04FF\\-]+/gi, pureWord => {\n const exceptionalWord = this.handleExceptional(pureWord, source);\n\n if (exceptionalWord) {\n return exceptionalWord;\n }\n\n return transliterator(pureWord);\n });\n }\n\n transliterateWord(word, source) {\n if (isURL(word)) {\n return word;\n }\n\n if (isRomanNumber(word)) {\n return word;\n }\n\n const exceptionalWord = this.handleExceptional(word, source);\n\n if (exceptionalWord) {\n return exceptionalWord;\n }\n\n return this.transliteratePureWord(word, source);\n }\n\n toCyrillic(word) {\n if (word instanceof Array) {\n return word.map(w => this.transliterateWord(w, 'latin'));\n } else if (typeof word === 'string') {\n return this.transliterateWord(word, 'latin');\n }\n }\n\n toLatin(word) {\n if (word instanceof Array) {\n return word.map(w => this.transliterateWord(w, 'cyrillic'));\n } else if (typeof word === 'string') {\n return this.transliterateWord(word, 'cyrillic');\n }\n }\n\n textToCyrillic(text) {\n return text.replace(/\\S+/g, word => this.transliterateWord(word, 'latin'));\n }\n\n textToLatin(text) {\n return text.replace(/\\S+/g, word => this.transliterateWord(word, 'cyrillic'));\n }\n\n}\nexport { cyrillicToLatin, latinToCyrillic };"],"names":["APOSTROPHE","TURNED_COMMA","LATIN_CHARACTERS","CYRILLIC_CHARACTERS","isLowerCase","char","toLowerCase","normalizeCase","assimilateTo","toUpperCase","capitalize","word","charAt","substring","isLetter","test","isURL","anchorme","list","length","escapeRegex","expString","replace","endsWithSoftSign","isRomanNumber","normalizeBigramCasing","matcher","latinBigram","matchString","index","assimilator","replaceSpecials","str","cyrillicToLatin","escapedWord","out","ExceptionalsCollection","constructor","exceptions","extend","forEach","pair","collection","push","generateWordCasingVariants","purge","latin","cyrillic","getCase","exceptionalPair","source","exceptionSource","exceptionTarget","exceptionalWord","replacement","normalizeEndSoftSign","exceptional","findInCollection","alternative","shouldDefaultToLowerCase","altCasingMatch","startsWith","decideMatcher","undefined","RegExp","findCase","transliterateBigram","cyrillicBigram","transliterateApostrophe","apostrophe","_","transliterateSpecialLetters","s","h","latinToCyrillic","Transliterator","extendExceptionals","exceptionalsCollection","purgeExceptionals","getTransliterator","replaceExceptionals","transliterator","chunks","split","map","chunk","i","isLastChunk","join","handleExceptional","transliteratePureWord","pureWord","transliterateWord","toCyrillic","Array","w","toLatin","textToCyrillic","text","textToLatin"],"mappings":"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"}
@@ -1,50 +0,0 @@
1
- import { CYRILLIC_CHARACTERS } from "./characters.js";
2
- import { capitalize, isLetter, isLowerCase, normalizeCase } from "./utils.js";
3
-
4
- function normalizeBigramCasing(word, matcher, latinBigram) {
5
- return word.replace(matcher, (matchString, index) => {
6
- if (isLowerCase(matchString)) {
7
- return latinBigram.toLowerCase();
8
- }
9
-
10
- if (!isLetter(word[index - 1]) && !isLetter(word[index + 1])) {
11
- return capitalize(latinBigram);
12
- } // Assimilate to the next letter
13
-
14
-
15
- const assimilator = isLetter(word[index + 1]) && word[index + 1];
16
-
17
- if (assimilator) {
18
- return isLowerCase(assimilator) ? capitalize(latinBigram) : latinBigram.toUpperCase();
19
- }
20
-
21
- return latinBigram.toUpperCase();
22
- });
23
- }
24
-
25
- function replaceSpecials(word) {
26
- word = normalizeBigramCasing(word, /Ч/gi, 'CH');
27
- word = normalizeBigramCasing(word, /Ш/gi, 'SH');
28
- word = normalizeBigramCasing(word, /^Е/gi, 'YE');
29
- word = normalizeBigramCasing(word, /Ё/gi, 'YO');
30
- word = normalizeBigramCasing(word, /Ю/gi, 'YU');
31
- word = normalizeBigramCasing(word, /Я/gi, 'YA'); // Don't split into bigram if repetitive sequence of `e`s is 3+
32
-
33
- word = word.replace(/е{3,}/gi, matchString => matchString.replace(/е/gi, str => CYRILLIC_CHARACTERS[str] || str));
34
- return word.replace(/[ьъ]е/gi, str => normalizeCase('ye', str.charAt(1))).replace(/[аоэеиуўёюяaeiou]е/gi, str => str.charAt(0) + normalizeCase('ye', str.charAt(1))).replace(/ьо/gi, matchString => normalizeCase('yo', matchString.charAt(1))).replace(/[ўғ]ъ/gi, matchString => matchString.charAt(0)).replace(/[аоэеиуўёюяaeiou]ц/gi, str => str.charAt(0) + normalizeCase('ts', str.charAt(1)));
35
- }
36
-
37
- export function cyrillicToLatin(word) {
38
- const escapedWord = replaceSpecials(word);
39
- let out = '';
40
-
41
- for (const char of escapedWord) {
42
- if (char in CYRILLIC_CHARACTERS) {
43
- out += CYRILLIC_CHARACTERS[char];
44
- } else {
45
- out += char;
46
- }
47
- }
48
-
49
- return out;
50
- }
@@ -1 +0,0 @@
1
- !function(u,A){"object"==typeof exports&&"undefined"!=typeof module?A(exports):"function"==typeof define&&define.amd?define(["exports"],A):A((u="undefined"!=typeof globalThis?globalThis:u||self).lotinKirill={})}(this,(function(u){"use strict";function A(u,A){if(!(u instanceof A))throw new TypeError("Cannot call a class as a function")}function t(u,A){for(var t=0;t<A.length;t++){var e=A[t];e.enumerable=e.enumerable||!1,e.configurable=!0,"value"in e&&(e.writable=!0),Object.defineProperty(u,e.key,e)}}function e(u,A,e){return A&&t(u.prototype,A),e&&t(u,e),u}function n(u,A,t){return A in u?Object.defineProperty(u,A,{value:t,enumerable:!0,configurable:!0,writable:!0}):u[A]=t,u}function E(u,A){if(u!==A)throw new TypeError("Cannot instantiate an arrow function")}function i(u,A){return function(u){if(Array.isArray(u))return u}(u)||function(u,A){if("undefined"==typeof Symbol||!(Symbol.iterator in Object(u)))return;var t=[],e=!0,n=!1,E=void 0;try{for(var i,r=u[Symbol.iterator]();!(e=(i=r.next()).done)&&(t.push(i.value),!A||t.length!==A);e=!0);}catch(u){n=!0,E=u}finally{try{e||null==r.return||r.return()}finally{if(n)throw E}}return t}(u,A)||N(u,A)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function r(u){return function(u){if(Array.isArray(u))return C(u)}(u)||function(u){if("undefined"!=typeof Symbol&&Symbol.iterator in Object(u))return Array.from(u)}(u)||N(u)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function N(u,A){if(u){if("string"==typeof u)return C(u,A);var t=Object.prototype.toString.call(u).slice(8,-1);return"Object"===t&&u.constructor&&(t=u.constructor.name),"Map"===t||"Set"===t?Array.from(t):"Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)?C(u,A):void 0}}function C(u,A){(null==A||A>u.length)&&(A=u.length);for(var t=0,e=new Array(A);t<A;t++)e[t]=u[t];return e}function o(u){if("undefined"==typeof Symbol||null==u[Symbol.iterator]){if(Array.isArray(u)||(u=N(u))){var A=0,t=function(){};return{s:t,n:function(){return A>=u.length?{done:!0}:{done:!1,value:u[A++]}},e:function(u){throw u},f:t}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var e,n,E=!0,i=!1;return{s:function(){e=u[Symbol.iterator]()},n:function(){var u=e.next();return E=u.done,u},e:function(u){i=!0,n=u},f:function(){try{E||null==e.return||e.return()}finally{if(i)throw n}}}}var a,O,I=(n(a={},"A","А"),n(a,"a","а"),n(a,"B","Б"),n(a,"b","б"),n(a,"D","Д"),n(a,"d","д"),n(a,"E","Е"),n(a,"e","е"),n(a,"F","Ф"),n(a,"f","ф"),n(a,"G","Г"),n(a,"g","г"),n(a,"H","Ҳ"),n(a,"h","ҳ"),n(a,"I","И"),n(a,"i","и"),n(a,"J","Ж"),n(a,"j","ж"),n(a,"K","К"),n(a,"k","к"),n(a,"L","Л"),n(a,"l","л"),n(a,"M","М"),n(a,"m","м"),n(a,"N","Н"),n(a,"n","н"),n(a,"O","О"),n(a,"o","о"),n(a,"P","П"),n(a,"p","п"),n(a,"Q","Қ"),n(a,"q","қ"),n(a,"R","Р"),n(a,"r","р"),n(a,"S","С"),n(a,"s","с"),n(a,"T","Т"),n(a,"t","т"),n(a,"U","У"),n(a,"u","у"),n(a,"V","В"),n(a,"v","в"),n(a,"X","Х"),n(a,"x","х"),n(a,"Y","Й"),n(a,"y","й"),n(a,"Z","З"),n(a,"z","з"),a),R=(n(O={},"А","A"),n(O,"а","a"),n(O,"Б","B"),n(O,"б","b"),n(O,"Д","D"),n(O,"д","d"),n(O,"Е","E"),n(O,"е","e"),n(O,"Ф","F"),n(O,"ф","f"),n(O,"Г","G"),n(O,"г","g"),n(O,"Ҳ","H"),n(O,"ҳ","h"),n(O,"И","I"),n(O,"и","i"),n(O,"Ж","J"),n(O,"ж","j"),n(O,"К","K"),n(O,"к","k"),n(O,"Л","L"),n(O,"л","l"),n(O,"М","M"),n(O,"м","m"),n(O,"Н","N"),n(O,"н","n"),n(O,"О","O"),n(O,"о","o"),n(O,"П","P"),n(O,"п","p"),n(O,"Қ","Q"),n(O,"қ","q"),n(O,"Р","R"),n(O,"р","r"),n(O,"С","S"),n(O,"с","s"),n(O,"Т","T"),n(O,"т","t"),n(O,"У","U"),n(O,"у","u"),n(O,"В","V"),n(O,"в","v"),n(O,"Х","X"),n(O,"х","x"),n(O,"Й","Y"),n(O,"й","y"),n(O,"З","Z"),n(O,"з","z"),n(O,"Ў","O".concat("‘")),n(O,"ў","o".concat("‘")),n(O,"Ғ","G".concat("‘")),n(O,"ғ","g".concat("‘")),n(O,"Ш","Sh"),n(O,"ш","sh"),n(O,"Ч","Ch"),n(O,"ч","ch"),n(O,"Ё","Yo"),n(O,"ё","yo"),n(O,"Ц","S"),n(O,"ц","s"),n(O,"Ь",""),n(O,"ь",""),n(O,"Э","E"),n(O,"э","e"),n(O,"Ю","Yu"),n(O,"ю","yu"),n(O,"Я","Ya"),n(O,"я","ya"),n(O,"Ъ","ʼ"),n(O,"ъ","ʼ"),O),S="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{};function T(u){return u&&u.__esModule&&Object.prototype.hasOwnProperty.call(u,"default")?u.default:u}function l(u,A){return u(A={exports:{}},A.exports),A.exports}var s=l((function(u,A){Object.defineProperty(A,"__esModule",{value:!0}),A.TLDs="(AAA|AARP|ABARTH|ABB|ABBOTT|ABBVIE|ABC|ABLE|ABOGADO|ABUDHABI|AC|ACADEMY|ACCENTURE|ACCOUNTANT|ACCOUNTANTS|ACO|ACTOR|AD|ADAC|ADS|ADULT|AE|AEG|AERO|AETNA|AF|AFAMILYCOMPANY|AFL|AFRICA|AG|AGAKHAN|AGENCY|AI|AIG|AIGO|AIRBUS|AIRFORCE|AIRTEL|AKDN|AL|ALFAROMEO|ALIBABA|ALIPAY|ALLFINANZ|ALLSTATE|ALLY|ALSACE|ALSTOM|AM|AMERICANEXPRESS|AMERICANFAMILY|AMEX|AMFAM|AMICA|AMSTERDAM|ANALYTICS|ANDROID|ANQUAN|ANZ|AO|AOL|APARTMENTS|APP|APPLE|AQ|AQUARELLE|AR|ARAB|ARAMCO|ARCHI|ARMY|ARPA|ART|ARTE|AS|ASDA|ASIA|ASSOCIATES|AT|ATHLETA|ATTORNEY|AU|AUCTION|AUDI|AUDIBLE|AUDIO|AUSPOST|AUTHOR|AUTO|AUTOS|AVIANCA|AW|AWS|AX|AXA|AZ|AZURE|BA|BABY|BAIDU|BANAMEX|BANANAREPUBLIC|BAND|BANK|BAR|BARCELONA|BARCLAYCARD|BARCLAYS|BAREFOOT|BARGAINS|BASEBALL|BASKETBALL|BAUHAUS|BAYERN|BB|BBC|BBT|BBVA|BCG|BCN|BD|BE|BEATS|BEAUTY|BEER|BENTLEY|BERLIN|BEST|BESTBUY|BET|BF|BG|BH|BHARTI|BI|BIBLE|BID|BIKE|BING|BINGO|BIO|BIZ|BJ|BLACK|BLACKFRIDAY|BLOCKBUSTER|BLOG|BLOOMBERG|BLUE|BM|BMS|BMW|BN|BNPPARIBAS|BO|BOATS|BOEHRINGER|BOFA|BOM|BOND|BOO|BOOK|BOOKING|BOSCH|BOSTIK|BOSTON|BOT|BOUTIQUE|BOX|BR|BRADESCO|BRIDGESTONE|BROADWAY|BROKER|BROTHER|BRUSSELS|BS|BT|BUDAPEST|BUGATTI|BUILD|BUILDERS|BUSINESS|BUY|BUZZ|BV|BW|BY|BZ|BZH|CA|CAB|CAFE|CAL|CALL|CALVINKLEIN|CAM|CAMERA|CAMP|CANCERRESEARCH|CANON|CAPETOWN|CAPITAL|CAPITALONE|CAR|CARAVAN|CARDS|CARE|CAREER|CAREERS|CARS|CASA|CASE|CASEIH|CASH|CASINO|CAT|CATERING|CATHOLIC|CBA|CBN|CBRE|CBS|CC|CD|CEB|CENTER|CEO|CERN|CF|CFA|CFD|CG|CH|CHANEL|CHANNEL|CHARITY|CHASE|CHAT|CHEAP|CHINTAI|CHRISTMAS|CHROME|CHURCH|CI|CIPRIANI|CIRCLE|CISCO|CITADEL|CITI|CITIC|CITY|CITYEATS|CK|CL|CLAIMS|CLEANING|CLICK|CLINIC|CLINIQUE|CLOTHING|CLOUD|CLUB|CLUBMED|CM|CN|CO|COACH|CODES|COFFEE|COLLEGE|COLOGNE|COM|COMCAST|COMMBANK|COMMUNITY|COMPANY|COMPARE|COMPUTER|COMSEC|CONDOS|CONSTRUCTION|CONSULTING|CONTACT|CONTRACTORS|COOKING|COOKINGCHANNEL|COOL|COOP|CORSICA|COUNTRY|COUPON|COUPONS|COURSES|CPA|CR|CREDIT|CREDITCARD|CREDITUNION|CRICKET|CROWN|CRS|CRUISE|CRUISES|CSC|CU|CUISINELLA|CV|CW|CX|CY|CYMRU|CYOU|CZ|DABUR|DAD|DANCE|DATA|DATE|DATING|DATSUN|DAY|DCLK|DDS|DE|DEAL|DEALER|DEALS|DEGREE|DELIVERY|DELL|DELOITTE|DELTA|DEMOCRAT|DENTAL|DENTIST|DESI|DESIGN|DEV|DHL|DIAMONDS|DIET|DIGITAL|DIRECT|DIRECTORY|DISCOUNT|DISCOVER|DISH|DIY|DJ|DK|DM|DNP|DO|DOCS|DOCTOR|DOG|DOMAINS|DOT|DOWNLOAD|DRIVE|DTV|DUBAI|DUCK|DUNLOP|DUPONT|DURBAN|DVAG|DVR|DZ|EARTH|EAT|EC|ECO|EDEKA|EDU|EDUCATION|EE|EG|EMAIL|EMERCK|ENERGY|ENGINEER|ENGINEERING|ENTERPRISES|EPSON|EQUIPMENT|ER|ERICSSON|ERNI|ES|ESQ|ESTATE|ESURANCE|ET|ETISALAT|EU|EUROVISION|EUS|EVENTS|EXCHANGE|EXPERT|EXPOSED|EXPRESS|EXTRASPACE|FAGE|FAIL|FAIRWINDS|FAITH|FAMILY|FAN|FANS|FARM|FARMERS|FASHION|FAST|FEDEX|FEEDBACK|FERRARI|FERRERO|FI|FIAT|FIDELITY|FIDO|FILM|FINAL|FINANCE|FINANCIAL|FIRE|FIRESTONE|FIRMDALE|FISH|FISHING|FIT|FITNESS|FJ|FK|FLICKR|FLIGHTS|FLIR|FLORIST|FLOWERS|FLY|FM|FO|FOO|FOOD|FOODNETWORK|FOOTBALL|FORD|FOREX|FORSALE|FORUM|FOUNDATION|FOX|FR|FREE|FRESENIUS|FRL|FROGANS|FRONTDOOR|FRONTIER|FTR|FUJITSU|FUJIXEROX|FUN|FUND|FURNITURE|FUTBOL|FYI|GA|GAL|GALLERY|GALLO|GALLUP|GAME|GAMES|GAP|GARDEN|GAY|GB|GBIZ|GD|GDN|GE|GEA|GENT|GENTING|GEORGE|GF|GG|GGEE|GH|GI|GIFT|GIFTS|GIVES|GIVING|GL|GLADE|GLASS|GLE|GLOBAL|GLOBO|GM|GMAIL|GMBH|GMO|GMX|GN|GODADDY|GOLD|GOLDPOINT|GOLF|GOO|GOODYEAR|GOOG|GOOGLE|GOP|GOT|GOV|GP|GQ|GR|GRAINGER|GRAPHICS|GRATIS|GREEN|GRIPE|GROCERY|GROUP|GS|GT|GU|GUARDIAN|GUCCI|GUGE|GUIDE|GUITARS|GURU|GW|GY|HAIR|HAMBURG|HANGOUT|HAUS|HBO|HDFC|HDFCBANK|HEALTH|HEALTHCARE|HELP|HELSINKI|HERE|HERMES|HGTV|HIPHOP|HISAMITSU|HITACHI|HIV|HK|HKT|HM|HN|HOCKEY|HOLDINGS|HOLIDAY|HOMEDEPOT|HOMEGOODS|HOMES|HOMESENSE|HONDA|HORSE|HOSPITAL|HOST|HOSTING|HOT|HOTELES|HOTELS|HOTMAIL|HOUSE|HOW|HR|HSBC|HT|HU|HUGHES|HYATT|HYUNDAI|IBM|ICBC|ICE|ICU|ID|IE|IEEE|IFM|IKANO|IL|IM|IMAMAT|IMDB|IMMO|IMMOBILIEN|IN|INC|INDUSTRIES|INFINITI|INFO|ING|INK|INSTITUTE|INSURANCE|INSURE|INT|INTEL|INTERNATIONAL|INTUIT|INVESTMENTS|IO|IPIRANGA|IQ|IR|IRISH|IS|ISMAILI|IST|ISTANBUL|IT|ITAU|ITV|IVECO|JAGUAR|JAVA|JCB|JCP|JE|JEEP|JETZT|JEWELRY|JIO|JLL|JM|JMP|JNJ|JO|JOBS|JOBURG|JOT|JOY|JP|JPMORGAN|JPRS|JUEGOS|JUNIPER|KAUFEN|KDDI|KE|KERRYHOTELS|KERRYLOGISTICS|KERRYPROPERTIES|KFH|KG|KH|KI|KIA|KIM|KINDER|KINDLE|KITCHEN|KIWI|KM|KN|KOELN|KOMATSU|KOSHER|KP|KPMG|KPN|KR|KRD|KRED|KUOKGROUP|KW|KY|KYOTO|KZ|LA|LACAIXA|LAMBORGHINI|LAMER|LANCASTER|LANCIA|LAND|LANDROVER|LANXESS|LASALLE|LAT|LATINO|LATROBE|LAW|LAWYER|LB|LC|LDS|LEASE|LECLERC|LEFRAK|LEGAL|LEGO|LEXUS|LGBT|LI|LIDL|LIFE|LIFEINSURANCE|LIFESTYLE|LIGHTING|LIKE|LILLY|LIMITED|LIMO|LINCOLN|LINDE|LINK|LIPSY|LIVE|LIVING|LIXIL|LK|LLC|LLP|LOAN|LOANS|LOCKER|LOCUS|LOFT|LOL|LONDON|LOTTE|LOTTO|LOVE|LPL|LPLFINANCIAL|LR|LS|LT|LTD|LTDA|LU|LUNDBECK|LUPIN|LUXE|LUXURY|LV|LY|MA|MACYS|MADRID|MAIF|MAISON|MAKEUP|MAN|MANAGEMENT|MANGO|MAP|MARKET|MARKETING|MARKETS|MARRIOTT|MARSHALLS|MASERATI|MATTEL|MBA|MC|MCKINSEY|MD|ME|MED|MEDIA|MEET|MELBOURNE|MEME|MEMORIAL|MEN|MENU|MERCKMSD|METLIFE|MG|MH|MIAMI|MICROSOFT|MIL|MINI|MINT|MIT|MITSUBISHI|MK|ML|MLB|MLS|MM|MMA|MN|MO|MOBI|MOBILE|MODA|MOE|MOI|MOM|MONASH|MONEY|MONSTER|MORMON|MORTGAGE|MOSCOW|MOTO|MOTORCYCLES|MOV|MOVIE|MP|MQ|MR|MS|MSD|MT|MTN|MTR|MU|MUSEUM|MUTUAL|MV|MW|MX|MY|MZ|NA|NAB|NAGOYA|NAME|NATIONWIDE|NATURA|NAVY|NBA|NC|NE|NEC|NET|NETBANK|NETFLIX|NETWORK|NEUSTAR|NEW|NEWHOLLAND|NEWS|NEXT|NEXTDIRECT|NEXUS|NF|NFL|NG|NGO|NHK|NI|NICO|NIKE|NIKON|NINJA|NISSAN|NISSAY|NL|NO|NOKIA|NORTHWESTERNMUTUAL|NORTON|NOW|NOWRUZ|NOWTV|NP|NR|NRA|NRW|NTT|NU|NYC|NZ|OBI|OBSERVER|OFF|OFFICE|OKINAWA|OLAYAN|OLAYANGROUP|OLDNAVY|OLLO|OM|OMEGA|ONE|ONG|ONL|ONLINE|ONYOURSIDE|OOO|OPEN|ORACLE|ORANGE|ORG|ORGANIC|ORIGINS|OSAKA|OTSUKA|OTT|OVH|PA|PAGE|PANASONIC|PARIS|PARS|PARTNERS|PARTS|PARTY|PASSAGENS|PAY|PCCW|PE|PET|PF|PFIZER|PG|PH|PHARMACY|PHD|PHILIPS|PHONE|PHOTO|PHOTOGRAPHY|PHOTOS|PHYSIO|PICS|PICTET|PICTURES|PID|PIN|PING|PINK|PIONEER|PIZZA|PK|PL|PLACE|PLAY|PLAYSTATION|PLUMBING|PLUS|PM|PN|PNC|POHL|POKER|POLITIE|PORN|POST|PR|PRAMERICA|PRAXI|PRESS|PRIME|PRO|PROD|PRODUCTIONS|PROF|PROGRESSIVE|PROMO|PROPERTIES|PROPERTY|PROTECTION|PRU|PRUDENTIAL|PS|PT|PUB|PW|PWC|PY|QA|QPON|QUEBEC|QUEST|QVC|RACING|RADIO|RAID|RE|READ|REALESTATE|REALTOR|REALTY|RECIPES|RED|REDSTONE|REDUMBRELLA|REHAB|REISE|REISEN|REIT|RELIANCE|REN|RENT|RENTALS|REPAIR|REPORT|REPUBLICAN|REST|RESTAURANT|REVIEW|REVIEWS|REXROTH|RICH|RICHARDLI|RICOH|RIGHTATHOME|RIL|RIO|RIP|RMIT|RO|ROCHER|ROCKS|RODEO|ROGERS|ROOM|RS|RSVP|RU|RUGBY|RUHR|RUN|RW|RWE|RYUKYU|SA|SAARLAND|SAFE|SAFETY|SAKURA|SALE|SALON|SAMSCLUB|SAMSUNG|SANDVIK|SANDVIKCOROMANT|SANOFI|SAP|SARL|SAS|SAVE|SAXO|SB|SBI|SBS|SC|SCA|SCB|SCHAEFFLER|SCHMIDT|SCHOLARSHIPS|SCHOOL|SCHULE|SCHWARZ|SCIENCE|SCJOHNSON|SCOR|SCOT|SD|SE|SEARCH|SEAT|SECURE|SECURITY|SEEK|SELECT|SENER|SERVICES|SES|SEVEN|SEW|SEX|SEXY|SFR|SG|SH|SHANGRILA|SHARP|SHAW|SHELL|SHIA|SHIKSHA|SHOES|SHOP|SHOPPING|SHOUJI|SHOW|SHOWTIME|SHRIRAM|SI|SILK|SINA|SINGLES|SITE|SJ|SK|SKI|SKIN|SKY|SKYPE|SL|SLING|SM|SMART|SMILE|SN|SNCF|SO|SOCCER|SOCIAL|SOFTBANK|SOFTWARE|SOHU|SOLAR|SOLUTIONS|SONG|SONY|SOY|SPACE|SPORT|SPOT|SPREADBETTING|SR|SRL|SS|ST|STADA|STAPLES|STAR|STATEBANK|STATEFARM|STC|STCGROUP|STOCKHOLM|STORAGE|STORE|STREAM|STUDIO|STUDY|STYLE|SU|SUCKS|SUPPLIES|SUPPLY|SUPPORT|SURF|SURGERY|SUZUKI|SV|SWATCH|SWIFTCOVER|SWISS|SX|SY|SYDNEY|SYMANTEC|SYSTEMS|SZ|TAB|TAIPEI|TALK|TAOBAO|TARGET|TATAMOTORS|TATAR|TATTOO|TAX|TAXI|TC|TCI|TD|TDK|TEAM|TECH|TECHNOLOGY|TEL|TEMASEK|TENNIS|TEVA|TF|TG|TH|THD|THEATER|THEATRE|TIAA|TICKETS|TIENDA|TIFFANY|TIPS|TIRES|TIROL|TJ|TJMAXX|TJX|TK|TKMAXX|TL|TM|TMALL|TN|TO|TODAY|TOKYO|TOOLS|TOP|TORAY|TOSHIBA|TOTAL|TOURS|TOWN|TOYOTA|TOYS|TR|TRADE|TRADING|TRAINING|TRAVEL|TRAVELCHANNEL|TRAVELERS|TRAVELERSINSURANCE|TRUST|TRV|TT|TUBE|TUI|TUNES|TUSHU|TV|TVS|TW|TZ|UA|UBANK|UBS|UG|UK|UNICOM|UNIVERSITY|UNO|UOL|UPS|US|UY|UZ|VA|VACATIONS|VANA|VANGUARD|VC|VE|VEGAS|VENTURES|VERISIGN|VERSICHERUNG|VET|VG|VI|VIAJES|VIDEO|VIG|VIKING|VILLAS|VIN|VIP|VIRGIN|VISA|VISION|VIVA|VIVO|VLAANDEREN|VN|VODKA|VOLKSWAGEN|VOLVO|VOTE|VOTING|VOTO|VOYAGE|VU|VUELOS|WALES|WALMART|WALTER|WANG|WANGGOU|WATCH|WATCHES|WEATHER|WEATHERCHANNEL|WEBCAM|WEBER|WEBSITE|WED|WEDDING|WEIBO|WEIR|WF|WHOSWHO|WIEN|WIKI|WILLIAMHILL|WIN|WINDOWS|WINE|WINNERS|WME|WOLTERSKLUWER|WOODSIDE|WORK|WORKS|WORLD|WOW|WS|WTC|WTF|XBOX|XEROX|XFINITY|XIHUAN|XIN|XN--11B4C3D|XN--1CK2E1B|XN--1QQW23A|XN--2SCRJ9C|XN--30RR7Y|XN--3BST00M|XN--3DS443G|XN--3E0B707E|XN--3HCRJ9C|XN--3OQ18VL8PN36A|XN--3PXU8K|XN--42C2D9A|XN--45BR5CYL|XN--45BRJ9C|XN--45Q11C|XN--4GBRIM|XN--54B7FTA0CC|XN--55QW42G|XN--55QX5D|XN--5SU34J936BGSG|XN--5TZM5G|XN--6FRZ82G|XN--6QQ986B3XL|XN--80ADXHKS|XN--80AO21A|XN--80AQECDR1A|XN--80ASEHDB|XN--80ASWG|XN--8Y0A063A|XN--90A3AC|XN--90AE|XN--90AIS|XN--9DBQ2A|XN--9ET52U|XN--9KRT00A|XN--B4W605FERD|XN--BCK1B9A5DRE4C|XN--C1AVG|XN--C2BR7G|XN--CCK2B3B|XN--CG4BKI|XN--CLCHC0EA0B2G2A9GCD|XN--CZR694B|XN--CZRS0T|XN--CZRU2D|XN--D1ACJ3B|XN--D1ALF|XN--E1A4C|XN--ECKVDTC9D|XN--EFVY88H|XN--FCT429K|XN--FHBEI|XN--FIQ228C5HS|XN--FIQ64B|XN--FIQS8S|XN--FIQZ9S|XN--FJQ720A|XN--FLW351E|XN--FPCRJ9C3D|XN--FZC2C9E2C|XN--FZYS8D69UVGM|XN--G2XX48C|XN--GCKR3F0F|XN--GECRJ9C|XN--GK3AT1E|XN--H2BREG3EVE|XN--H2BRJ9C|XN--H2BRJ9C8C|XN--HXT814E|XN--I1B6B1A6A2E|XN--IMR513N|XN--IO0A7I|XN--J1AEF|XN--J1AMH|XN--J6W193G|XN--JLQ61U9W7B|XN--JVR189M|XN--KCRX77D1X4A|XN--KPRW13D|XN--KPRY57D|XN--KPU716F|XN--KPUT3I|XN--L1ACC|XN--LGBBAT1AD8J|XN--MGB9AWBF|XN--MGBA3A3EJT|XN--MGBA3A4F16A|XN--MGBA7C0BBN0A|XN--MGBAAKC7DVF|XN--MGBAAM7A8H|XN--MGBAB2BD|XN--MGBAH1A3HJKRD|XN--MGBAI9AZGQP6J|XN--MGBAYH7GPA|XN--MGBBH1A|XN--MGBBH1A71E|XN--MGBC0A9AZCG|XN--MGBCA7DZDO|XN--MGBCPQ6GPA1A|XN--MGBERP4A5D4AR|XN--MGBGU82A|XN--MGBI4ECEXP|XN--MGBPL2FH|XN--MGBT3DHD|XN--MGBTX2B|XN--MGBX4CD0AB|XN--MIX891F|XN--MK1BU44C|XN--MXTQ1M|XN--NGBC5AZD|XN--NGBE9E0A|XN--NGBRX|XN--NODE|XN--NQV7F|XN--NQV7FS00EMA|XN--NYQY26A|XN--O3CW4H|XN--OGBPF8FL|XN--OTU796D|XN--P1ACF|XN--P1AI|XN--PBT977C|XN--PGBS0DH|XN--PSSY2U|XN--Q7CE6A|XN--Q9JYB4C|XN--QCKA1PMC|XN--QXA6A|XN--QXAM|XN--RHQV96G|XN--ROVU88B|XN--RVC1E0AM3E|XN--S9BRJ9C|XN--SES554G|XN--T60B56A|XN--TCKWE|XN--TIQ49XQYJ|XN--UNUP4Y|XN--VERMGENSBERATER-CTB|XN--VERMGENSBERATUNG-PWB|XN--VHQUV|XN--VUQ861B|XN--W4R85EL8FHU5DNRA|XN--W4RS40L|XN--WGBH1C|XN--WGBL6A|XN--XHQ521B|XN--XKC2AL3HYE2A|XN--XKC2DL3A5EE0H|XN--Y9A3AQ|XN--YFRO4I67O|XN--YGBI2AMMX|XN--ZFR164B|XXX|XYZ|YACHTS|YAHOO|YAMAXUN|YANDEX|YE|YODOBASHI|YOGA|YOKOHAMA|YOU|YOUTUBE|YT|YUN|ZA|ZAPPOS|ZARA|ZERO|ZIP|ZM|ZONE|ZUERICH|ZW|TEST)"}));T(s),s.TLDs;var B=l((function(u,A){Object.defineProperty(A,"__esModule",{value:!0}),A.openingParenthesis="([\"'{",A.closingParenthesis=")]\"'}",A.parenthesis=A.openingParenthesis.split("").map((function(u,t){return""+u+A.closingParenthesis.charAt(t)})),A.htmlAttributes=["src","data","href","cite","formaction","icon","manifest","poster","codebase","background","profile","usemap","itemtype","action","longdesc","classid","archive"],A.nonLatinAlphabetRanges="\\u0041-\\u005A\\u0061-\\u007A\\u00AA\\u00B5\\u00BA\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0370-\\u0374\\u0376\\u0377\\u037A-\\u037D\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5\\u03F7-\\u0481\\u048A-\\u0527\\u0531-\\u0556\\u0559\\u0561-\\u0587\\u05D0-\\u05EA\\u05F0-\\u05F2\\u0620-\\u064A\\u066E\\u066F\\u0671-\\u06D3\\u06D5\\u06E5\\u06E6\\u06EE\\u06EF\\u06FA-\\u06FC\\u06FF\\u0710\\u0712-\\u072F\\u074D-\\u07A5\\u07B1\\u07CA-\\u07EA\\u07F4\\u07F5\\u07FA\\u0800-\\u0815\\u081A\\u0824\\u0828\\u0840-\\u0858\\u08A0\\u08A2-\\u08AC\\u0904-\\u0939\\u093D\\u0950\\u0958-\\u0961\\u0971-\\u0977\\u0979-\\u097F\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BD\\u09CE\\u09DC\\u09DD\\u09DF-\\u09E1\\u09F0\\u09F1\\u0A05-\\u0A0A\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39\\u0A59-\\u0A5C\\u0A5E\\u0A72-\\u0A74\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABD\\u0AD0\\u0AE0\\u0AE1\\u0B05-\\u0B0C\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3D\\u0B5C\\u0B5D\\u0B5F-\\u0B61\\u0B71\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BD0\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C33\\u0C35-\\u0C39\\u0C3D\\u0C58\\u0C59\\u0C60\\u0C61\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBD\\u0CDE\\u0CE0\\u0CE1\\u0CF1\\u0CF2\\u0D05-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D3A\\u0D3D\\u0D4E\\u0D60\\u0D61\\u0D7A-\\u0D7F\\u0D85-\\u0D96\\u0D9A-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0E01-\\u0E30\\u0E32\\u0E33\\u0E40-\\u0E46\\u0E81\\u0E82\\u0E84\\u0E87\\u0E88\\u0E8A\\u0E8D\\u0E94-\\u0E97\\u0E99-\\u0E9F\\u0EA1-\\u0EA3\\u0EA5\\u0EA7\\u0EAA\\u0EAB\\u0EAD-\\u0EB0\\u0EB2\\u0EB3\\u0EBD\\u0EC0-\\u0EC4\\u0EC6\\u0EDC-\\u0EDF\\u0F00\\u0F40-\\u0F47\\u0F49-\\u0F6C\\u0F88-\\u0F8C\\u1000-\\u102A\\u103F\\u1050-\\u1055\\u105A-\\u105D\\u1061\\u1065\\u1066\\u106E-\\u1070\\u1075-\\u1081\\u108E\\u10A0-\\u10C5\\u10C7\\u10CD\\u10D0-\\u10FA\\u10FC-\\u1248\\u124A-\\u124D\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310\\u1312-\\u1315\\u1318-\\u135A\\u1380-\\u138F\\u13A0-\\u13F4\\u1401-\\u166C\\u166F-\\u167F\\u1681-\\u169A\\u16A0-\\u16EA\\u1700-\\u170C\\u170E-\\u1711\\u1720-\\u1731\\u1740-\\u1751\\u1760-\\u176C\\u176E-\\u1770\\u1780-\\u17B3\\u17D7\\u17DC\\u1820-\\u1877\\u1880-\\u18A8\\u18AA\\u18B0-\\u18F5\\u1900-\\u191C\\u1950-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19C1-\\u19C7\\u1A00-\\u1A16\\u1A20-\\u1A54\\u1AA7\\u1B05-\\u1B33\\u1B45-\\u1B4B\\u1B83-\\u1BA0\\u1BAE\\u1BAF\\u1BBA-\\u1BE5\\u1C00-\\u1C23\\u1C4D-\\u1C4F\\u1C5A-\\u1C7D\\u1CE9-\\u1CEC\\u1CEE-\\u1CF1\\u1CF5\\u1CF6\\u1D00-\\u1DBF\\u1E00-\\u1F15\\u1F18-\\u1F1D\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D\\u1F80-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FCC\\u1FD0-\\u1FD3\\u1FD6-\\u1FDB\\u1FE0-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u2071\\u207F\\u2090-\\u209C\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2119-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u212D\\u212F-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u2183\\u2184\\u2C00-\\u2C2E\\u2C30-\\u2C5E\\u2C60-\\u2CE4\\u2CEB-\\u2CEE\\u2CF2\\u2CF3\\u2D00-\\u2D25\\u2D27\\u2D2D\\u2D30-\\u2D67\\u2D6F\\u2D80-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u2E2F\\u3005\\u3006\\u3031-\\u3035\\u303B\\u303C\\u3041-\\u3096\\u309D-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312D\\u3131-\\u318E\\u31A0-\\u31BA\\u31F0-\\u31FF\\u3400-\\u4DB5\\u4E00-\\u9FCC\\uA000-\\uA48C\\uA4D0-\\uA4FD\\uA500-\\uA60C\\uA610-\\uA61F\\uA62A\\uA62B\\uA640-\\uA66E\\uA67F-\\uA697\\uA6A0-\\uA6E5\\uA717-\\uA71F\\uA722-\\uA788\\uA78B-\\uA78E\\uA790-\\uA793\\uA7A0-\\uA7AA\\uA7F8-\\uA801\\uA803-\\uA805\\uA807-\\uA80A\\uA80C-\\uA822\\uA840-\\uA873\\uA882-\\uA8B3\\uA8F2-\\uA8F7\\uA8FB\\uA90A-\\uA925\\uA930-\\uA946\\uA960-\\uA97C\\uA984-\\uA9B2\\uA9CF\\uAA00-\\uAA28\\uAA40-\\uAA42\\uAA44-\\uAA4B\\uAA60-\\uAA76\\uAA7A\\uAA80-\\uAAAF\\uAAB1\\uAAB5\\uAAB6\\uAAB9-\\uAABD\\uAAC0\\uAAC2\\uAADB-\\uAADD\\uAAE0-\\uAAEA\\uAAF2-\\uAAF4\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E\\uABC0-\\uABE2\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uF900-\\uFA6D\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFB1D\\uFB1F-\\uFB28\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE70-\\uFE74\\uFE76-\\uFEFC\\uFF21-\\uFF3A\\uFF41-\\uFF5A\\uFF66-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC",A.TLDs=s.TLDs}));T(B),B.openingParenthesis,B.closingParenthesis,B.parenthesis,B.htmlAttributes,B.nonLatinAlphabetRanges,B.TLDs;var D=l((function(u,A){function t(u,A,t){return"function"==typeof t?t(u,A):t}Object.defineProperty(A,"__esModule",{value:!0}),A.transform=function(u,A){var e="",n=1/0,E={},i=!1;if(A&&A.specialTransform)for(var r=0;r<A.specialTransform.length;r++){var N=A.specialTransform[r];if(N.test.test(u.string))return N.transform(u.string,u)}return A&&A.exclude&&t(u.string,u,A.exclude)?u.string:(A&&A.protocol&&(e=t(u.string,u,A.protocol)),u.protocol?e="":e||(e=u.isEmail?"mailto:":u.isFile?"file:///":"http://"),A&&A.truncate&&(n=t(u.string,u,A.truncate)),A&&A.middleTruncation&&(i=t(u.string,u,A.middleTruncation)),A&&A.attributes&&(E=t(u.string,u,A.attributes)),"<a "+Object.keys(E).map((function(u){return!0===E[u]?u:u+'="'+E[u]+'" '})).join(" ")+'href="'+e+u.string+'">'+(u.string.length>n?i?u.string.substring(0,Math.floor(n/2))+"…"+u.string.substring(u.string.length-Math.ceil(n/2),u.string.length):u.string.substring(0,n)+"…":u.string)+"</a>")}}));T(D),D.transform;var L=l((function(u,A){Object.defineProperty(A,"__esModule",{value:!0});var t="([a-z0-9]+(-+[a-z0-9]+)*\\.)+("+B.TLDs+")",e="a-zA-Z\\d\\-._~\\!$&*+,;=:@%'\"\\[\\]()",n="((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]?)",E="\\[(([a-f0-9:]+:+)+[a-f0-9]+)\\]",i="(https?:|ftps?:)\\/\\/",r="((("+i+")?("+t+"|"+n+"|("+i+")("+E+"|"+("([a-z0-9]+(-+[a-z0-9]+)*\\.)+([a-z0-9][a-z0-9-]{0,"+(Math.max.apply(S,B.TLDs.split("|").map((function(u){return u.length})))-2)+"}[a-z0-9])")+"))(?!@\\w)(:(\\d{1,5}))?)|(((https?:|ftps?:)\\/\\/)\\S+))",N=r+"((((\\/((["+e+"]+(\\/["+e+B.nonLatinAlphabetRanges+"]*)*))?)?)((\\?(["+e+"\\/?]*))?)((\\#(["+e+"\\/?]*))?))?\\b(((["+e+"\\/"+B.nonLatinAlphabetRanges+"][a-zA-Z\\d\\-_~+=\\/"+B.nonLatinAlphabetRanges+"]+)?))+)";A.email="\\b(mailto:)?([a-z0-9!#$%&'*+=?^_`{|}~-]+(\\.[a-z0-9!#$%&'*+=?^_`{|}~-]+)*)@("+t+"|"+n+")\\b",A.url="("+N+")|(\\b"+r+"(((\\/(([a-zA-Z\\d\\-._~\\!$&*+,;=:@%'\"\\[\\]()]+(\\/[a-zA-Z\\d\\-._~\\!$&*+,;=:@%'\"\\[\\]()]*)*))?)?)((\\?([a-zA-Z\\d\\-._~\\!$&*+,;=:@%'\"\\[\\]()\\/?]*))?)((\\#([a-zA-Z\\d\\-._~\\!$&*+,;=:@%'\"\\[\\]()\\/?]*))?))?\\b(([\\/]?))+)",A.file="(file:\\/\\/\\/)([a-z]+:(\\/|\\\\)+)?([\\w.]+([\\/\\\\]?)+)+",A.final="("+A.url+")|("+A.email+")|("+A.file+")",A.finalRegex=new RegExp(A.final,"gi"),A.ipRegex=new RegExp("^("+n+"|"+E+")$","i"),A.emailRegex=new RegExp("^("+A.email+")$","i"),A.fileRegex=new RegExp("^("+A.file+")$","i"),A.urlRegex=new RegExp("^("+A.url+")$","i");var C={isURL:0,isEmail:0,isFile:0,file:{fileName:0,protocol:0},email:{protocol:0,local:0,host:0},url:{ipv4:0,ipv6:0,ipv4Confirmation:0,byProtocol:0,port:0,protocol1:0,protocol2:0,protocol3:0,protocolWithDomain:0,path:0,secondPartOfPath:0,query:0,fragment:0}};A.iidxes=C;for(var o=["file:///some/file/path/filename.pdf","mailto:e+_mail.me@sub.domain.com","http://sub.domain.co.uk:3000/p/a/t/h_(asd)/h?q=abc123#dfdf","http://www.عربي.com","http://127.0.0.1:3000/p/a/t_(asd)/h?q=abc123#dfdf","http://[2a00:1450:4025:401::67]/k/something","a.org/abc/ი_გგ"].join(" "),a=null,O=0;null!==(a=A.finalRegex.exec(o));)0===O&&(C.isFile=a.lastIndexOf(a[0]),C.file.fileName=a.indexOf("filename.pdf"),C.file.protocol=a.indexOf("file:///")),1===O&&(C.isEmail=a.lastIndexOf(a[0]),C.email.protocol=a.indexOf("mailto:"),C.email.local=a.indexOf("e+_mail.me"),C.email.host=a.indexOf("sub.domain.com")),2===O&&(C.isURL=a.lastIndexOf(a[0]),C.url.protocol1=a.indexOf("http://"),C.url.protocolWithDomain=a.indexOf("http://sub.domain.co.uk:3000"),C.url.port=a.indexOf("3000"),C.url.path=a.indexOf("/p/a/t/h_(asd)/h"),C.url.query=a.indexOf("q=abc123"),C.url.fragment=a.indexOf("dfdf")),3===O&&(C.url.byProtocol=a.lastIndexOf("http://www.عربي.com"),C.url.protocol2=a.lastIndexOf("http://")),4===O&&(C.url.ipv4=a.indexOf("127.0.0.1"),C.url.ipv4Confirmation=a.indexOf("0.")),5===O&&(C.url.ipv6=a.indexOf("2a00:1450:4025:401::67"),C.url.protocol3=a.lastIndexOf("http://")),6===O&&(C.url.secondPartOfPath=a.indexOf("გგ")),O++}));T(L),L.email,L.url,L.file,L.finalRegex,L.ipRegex,L.emailRegex,L.fileRegex,L.urlRegex,L.iidxes;var F=l((function(u,A){Object.defineProperty(A,"__esModule",{value:!0}),A.checkParenthesis=function(u,A,t,e){return e===A&&(t.split(u).length-t.split(A).length==1||u===A&&t.split(u).length%2==0||void 0)},A.maximumAttrLength=B.htmlAttributes.sort((function(u,A){return A.length-u.length}))[0].length,A.isInsideAttribute=function(u){return/\s[a-z0-9-]+=('|")$/i.test(u)||/: ?url\(('|")?$/i.test(u)},A.isInsideAnchorTag=function(u,A,t){for(var e=u.replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&"),n=new RegExp("(?=(<a))(?!([\\s\\S]*)(<\\/a>)("+e+"))[\\s\\S]*?("+e+")(?!\"|')","gi"),E=null;null!==(E=n.exec(A));){if(E.index+E[0].length===t)return!0}return!1}}));T(F),F.checkParenthesis,F.maximumAttrLength,F.isInsideAttribute,F.isInsideAnchorTag;var c=T(l((function(u,A){Object.defineProperty(A,"__esModule",{value:!0});var t=function(u){for(var A=[],t=null,e=function(){var e=t.index,n=e+t[0].length,E=t[0];if("/"===u.charAt(n)&&(E+=u.charAt(n),n++),B.closingParenthesis.indexOf(u.charAt(n))>-1&&B.parenthesis.forEach((function(A){var t=A.charAt(0),e=A.charAt(1);F.checkParenthesis(t,e,E,u.charAt(n))&&(E+=u.charAt(n),n++)})),-1!==['""',"''","()"].indexOf(u.charAt(e-1)+u.charAt(n))&&F.isInsideAttribute(u.substring(e-F.maximumAttrLength-15,e)))return"continue";if(u.substring(n,u.length).indexOf("</a>")>-1&&u.substring(0,e).indexOf("<a")>-1&&F.isInsideAnchorTag(E,u,n))return"continue";if(t[L.iidxes.isURL]){var i=(t[L.iidxes.url.path]||"")+(t[L.iidxes.url.secondPartOfPath]||"")||void 0,r=t[L.iidxes.url.protocol1]||t[L.iidxes.url.protocol2]||t[L.iidxes.url.protocol3];A.push({start:e,end:n,string:E,isURL:!0,protocol:r,port:t[L.iidxes.url.port],ipv4:t[L.iidxes.url.ipv4Confirmation]?t[L.iidxes.url.ipv4]:void 0,ipv6:t[L.iidxes.url.ipv6],host:t[L.iidxes.url.byProtocol]?void 0:(t[L.iidxes.url.protocolWithDomain]||"").substr((r||"").length),confirmedByProtocol:!!t[L.iidxes.url.byProtocol],path:t[L.iidxes.url.byProtocol]?void 0:i,query:t[L.iidxes.url.query]||void 0,fragment:t[L.iidxes.url.fragment]||void 0})}else if(t[L.iidxes.isFile]){var N=E.substr(8);A.push({start:e,end:n,string:E,isFile:!0,protocol:t[L.iidxes.file.protocol],filename:t[L.iidxes.file.fileName],filePath:N,fileDirectory:N.substr(0,N.length-t[L.iidxes.file.fileName].length)})}else t[L.iidxes.isEmail]?A.push({start:e,end:n,string:E,isEmail:!0,local:t[L.iidxes.email.local],protocol:t[L.iidxes.email.protocol],host:t[L.iidxes.email.host]}):A.push({start:e,end:n,string:E})};null!==(t=L.finalRegex.exec(u));)e();return A},e=function(u){var A="string"==typeof u?{input:u,options:void 0,extensions:void 0}:u,e=A.input,n=A.options,E=A.extensions;if(E)for(var i=0;i<E.length;i++){var r=E[i];e=e.replace(r.test,r.transform)}var N=t(e),C="";for(i=0;i<N.length;i++)C=(C||(0===i?e.substring(0,N[i].start):""))+D.transform(N[i],n)+(N[i+1]?e.substring(N[i].end,N[i+1].start):e.substring(N[i].end));return C||e};e.list=function(u){return t(u)},e.validate={ip:function(u){return L.ipRegex.test(u)},email:function(u){return L.emailRegex.test(u)},file:function(u){return L.fileRegex.test(u)},url:function(u){return L.urlRegex.test(u)||L.ipRegex.test(u)}},A.default=e})));function f(u){return u.toLowerCase()===u}function M(u,A){return f(A)?u.toLowerCase():u.toUpperCase()}function G(u){return u.charAt(0).toUpperCase()+u.substring(1).toLowerCase()}function h(u){return"string"==typeof u&&/^[a-z\u0400-\u04FF]+$/i.test(u)}function U(u){return/ь$/i.test(u)}function d(u,A,t){var e=this;return u.replace(A,function(A,n){if(E(this,e),f(A))return t.toLowerCase();if(!h(u[n-1])&&!h(u[n+1]))return G(t);var i=h(u[n+1])&&u[n+1];return i&&f(i)?G(t):t.toUpperCase()}.bind(this))}function P(u){var A,t="",e=o(function(u){var A=this;return u=d(u,/Ч/gi,"CH"),u=d(u,/Ш/gi,"SH"),u=d(u,/^Е/gi,"YE"),u=d(u,/Ё/gi,"YO"),u=d(u,/Ю/gi,"YU"),(u=(u=d(u,/Я/gi,"YA")).replace(/е{3,}/gi,function(u){var t=this;return E(this,A),u.replace(/е/gi,function(u){return E(this,t),R[u]||u}.bind(this))}.bind(this))).replace(/[ьъ]е/gi,function(u){return E(this,A),M("ye",u.charAt(1))}.bind(this)).replace(/[аоэеиуўёюяaeiou]е/gi,function(u){return E(this,A),u.charAt(0)+M("ye",u.charAt(1))}.bind(this)).replace(/ьо/gi,function(u){return E(this,A),M("yo",u.charAt(1))}.bind(this)).replace(/[ўғ]ъ/gi,function(u){return E(this,A),u.charAt(0)}.bind(this)).replace(/[аоэеиуўёюяaeiou]ц/gi,function(u){return E(this,A),u.charAt(0)+M("ts",u.charAt(1))}.bind(this))}(u));try{for(e.s();!(A=e.n()).done;){var n=A.value;t+=n in R?R[n]:n}}catch(u){e.e(u)}finally{e.f()}return t}var p=function(){function u(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];A(this,u),n(this,"collection",[]),this.extend(t)}return e(u,[{key:"extend",value:function(u){var A=this;u.forEach(function(u){var t;(E(this,A),u&&u[0]&&u[1])&&(t=this.collection).push.apply(t,r(this.generateWordCasingVariants(u)))}.bind(this))}},{key:"purge",value:function(){this.collection=[]}},{key:"generateWordCasingVariants",value:function(u){var A=i(u,2),t=A[0],e=A[1];return[[t.toLowerCase(),e.toLowerCase()],[t.toUpperCase(),e.toUpperCase()],[G(t),G(e)]]}},{key:"getCase",value:function(u,A){var t="latin"===A?1:0;return{exceptionalWord:u["latin"===A?0:1],replacement:u[t]}}},{key:"normalizeEndSoftSign",value:function(u){var A=u.replacement;u.replacement=A.substring(0,A.length-1)}},{key:"findInCollection",value:function(u,A){var t,e,n,E=f(u.charAt(0))?u.toLowerCase():G(u),i=o(this.collection);try{for(i.s();!(n=i.n()).done;){var r=n.value,N=this.getCase(r,A),C=N.exceptionalWord,a=N.replacement;if(u.startsWith(C))return t={exceptionalWord:C,replacement:a},"latin"===A&&U(a)&&u.length!==C.length&&this.normalizeEndSoftSign(t),{exceptional:t};E.startsWith(C)&&(e={exceptionalWord:C,replacement:a})}}catch(u){i.e(u)}finally{i.f()}return{alternative:e}}},{key:"decideMatcher",value:function(u,A){return void 0!==u?u.exceptionalWord:void 0!==A?new RegExp(A.exceptionalWord.replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&"),"gi"):void 0}},{key:"findCase",value:function(u,A){var t=this.findInCollection(u,A),e=t.exceptional,n=t.alternative,E=this.decideMatcher(e,n),i=(null==e?void 0:e.replacement)||(null==n?void 0:n.replacement);if(E&&i)return{matcher:E,replacement:i}}}]),u}();function X(u,A,t){var e=this;return u.replace(A,function(u){return E(this,e),M(t,u[0])}.bind(this))}function H(u){var A=this;return u=(u=u.replace(/tsi(on|ya)/gi,function(u){return E(this,A),X(u,/ts/i,"ц")}.bind(this))).replace(/^e|[\W]e/gi,function(u){return E(this,A),X(u,/e/i,"э")}.bind(this)),u=X(u=u.replace(/e{2}/gi,function(u){return E(this,A),u[0]+M("э",u[1])}.bind(this)),/ch/gi,"ч"),u=X(u,/sh/gi,"ш"),u=X(u,/g[ʻʼ’'`‘´]/gi,"ғ"),u=X(u,/o[ʻʼ’'`‘´]/gi,"ў"),u=X(u,/ye/gi,"е"),u=X(u,/yo/gi,"ё"),u=X(u,/yu/gi,"ю"),u=function(u){var A=this;return u.replace(/[ʻʼ’'`‘´]/g,function(t,e){E(this,A);var n=u[e+1]||u[e-1];return n?M("ъ",n):"ъ".toLowerCase()}.bind(this))}(u=(u=X(u,/ya/gi,"я")).replace(/s[ʻʼ’'`‘´]h/gi,function(u){return E(this,A),(I[u[0]]||u[0])+(I[u[2]]||u[2])}.bind(this)))}function g(u){var A,t="",e=o(H(u));try{for(e.s();!(A=e.n()).done;){var n=A.value;t+=n in I?I[n]:n}}catch(u){e.e(u)}finally{e.f()}return t}var K=function(){function u(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];A(this,u),n(this,"exceptionalsCollection",new p),this.extendExceptionals(t)}return e(u,[{key:"extendExceptionals",value:function(u){this.exceptionalsCollection.extend(u)}},{key:"purgeExceptionals",value:function(){this.exceptionalsCollection.purge()}},{key:"getTransliterator",value:function(u){return"latin"===u?g:P}},{key:"replaceExceptionals",value:function(u,A,t,e){var n=this,i=u.split(A);return(i=i.map(function(u,A){E(this,n);var r=A===i.length-1;return e(u)+(r?"":t)}.bind(this))).join("")}},{key:"handleExceptional",value:function(u,A){var t=this.exceptionalsCollection.findCase(u,A);if(t)return this.replaceExceptionals(u,t.matcher,t.replacement,this.getTransliterator(A))}},{key:"transliteratePureWord",value:function(u,A){var t=this,e=this.getTransliterator(A);return u.replace(/[ʻʼ’'`´‘a-z\u0400-\u04FF\-]+/gi,function(u){E(this,t);var n=this.handleExceptional(u,A);return n||e(u)}.bind(this))}},{key:"transliterateWord",value:function(u,A){if(function(u){return c.list(u).length>0}(u))return u;if(function(u){return/^M{0,4}(CM|CD|D?C{0,3})(XC|XL|L?X{0,3})(IX|IV|V?I{0,3})(\.|\))?$/.test(u)}(u))return u;var t=this.handleExceptional(u,A);return t||this.transliteratePureWord(u,A)}},{key:"toCyrillic",value:function(u){var A=this;return u instanceof Array?u.map(function(u){return E(this,A),this.transliterateWord(u,"latin")}.bind(this)):"string"==typeof u?this.transliterateWord(u,"latin"):void 0}},{key:"toLatin",value:function(u){var A=this;return u instanceof Array?u.map(function(u){return E(this,A),this.transliterateWord(u,"cyrillic")}.bind(this)):"string"==typeof u?this.transliterateWord(u,"cyrillic"):void 0}},{key:"textToCyrillic",value:function(u){var A=this;return u.replace(/\S+/g,function(u){return E(this,A),this.transliterateWord(u,"latin")}.bind(this))}},{key:"textToLatin",value:function(u){var A=this;return u.replace(/\S+/g,function(u){return E(this,A),this.transliterateWord(u,"cyrillic")}.bind(this))}}]),u}();u.cyrillicToLatin=P,u.default=K,u.latinToCyrillic=g,Object.defineProperty(u,"__esModule",{value:!0})}));