@whiteslove/parsing-lexicon 0.2.0 → 0.2.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/LICENSE +21 -21
- package/README.md +137 -137
- package/index.d.ts +374 -374
- package/package.json +77 -75
- package/src/central-asia-locations.js +211 -211
- package/src/central-asia.js +233 -233
- package/src/contact.d.ts +44 -44
- package/src/contact.js +159 -159
- package/src/countries.js +175 -175
- package/src/country-context.d.ts +10 -10
- package/src/country-context.js +22 -22
- package/src/currency.d.ts +14 -14
- package/src/currency.js +66 -66
- package/src/geo.js +169 -169
- package/src/geography-central-asia.js +42 -42
- package/src/geography-detection.d.ts +14 -14
- package/src/geography-detection.js +64 -64
- package/src/geography-display.d.ts +13 -13
- package/src/geography-display.js +113 -113
- package/src/geography.js +210 -210
- package/src/hiring-advanced.js +147 -147
- package/src/hiring-candidate-fields.d.ts +9 -9
- package/src/hiring-candidate-fields.js +92 -92
- package/src/hiring-context.d.ts +64 -64
- package/src/hiring-context.js +412 -412
- package/src/hiring-language-extensions.d.ts +19 -19
- package/src/hiring-language-extensions.js +139 -139
- package/src/hiring-languages.js +135 -135
- package/src/hiring-location-fields.d.ts +3 -3
- package/src/hiring-location-fields.js +53 -53
- package/src/hiring-professions-ro.js +191 -191
- package/src/hiring-professions.js +437 -437
- package/src/hiring-requirements.d.ts +16 -16
- package/src/hiring-requirements.js +170 -170
- package/src/hiring-salary-context.d.ts +27 -27
- package/src/hiring-salary-context.js +76 -76
- package/src/hiring-semantics.d.ts +29 -29
- package/src/hiring-semantics.js +218 -218
- package/src/hiring-skills.d.ts +21 -21
- package/src/hiring-skills.js +315 -315
- package/src/hiring-source-aliases.d.ts +32 -32
- package/src/hiring-source-aliases.js +185 -185
- package/src/hiring-source-semantics.d.ts +31 -31
- package/src/hiring-source-semantics.js +293 -293
- package/src/hiring-temporal.d.ts +15 -15
- package/src/hiring-temporal.js +67 -67
- package/src/hiring-vacancy-fields.d.ts +5 -5
- package/src/hiring-vacancy-fields.js +23 -23
- package/src/hiring-work-semantics.d.ts +34 -34
- package/src/hiring-work-semantics.js +72 -72
- package/src/hiring.js +180 -180
- package/src/housing-address.d.ts +18 -18
- package/src/housing-address.js +217 -210
- package/src/housing-commercial.d.ts +1 -0
- package/src/housing-commercial.js +9 -0
- package/src/housing-context.d.ts +36 -36
- package/src/housing-context.js +183 -183
- package/src/housing-features.js +30 -30
- package/src/housing-intent.d.ts +9 -9
- package/src/housing-intent.js +132 -132
- package/src/housing-listing-fields.js +131 -131
- package/src/housing-money.d.ts +7 -7
- package/src/housing-money.js +102 -102
- package/src/housing-source-aliases.d.ts +8 -8
- package/src/housing-source-aliases.js +51 -51
- package/src/housing-structured.d.ts +55 -55
- package/src/housing-structured.js +219 -219
- package/src/housing.js +200 -200
- package/src/index.js +45 -44
- package/src/kz-location-extensions.js +307 -307
- package/src/landmarks.js +21 -21
- package/src/lexicon-core.js +58 -58
- package/src/location-merge.js +106 -106
- package/src/locations.js +456 -456
- package/src/money-core.d.ts +10 -10
- package/src/money-core.js +81 -81
- package/src/money-lexicon.d.ts +5 -5
- package/src/money-lexicon.js +79 -79
- package/src/money.js +154 -154
- package/src/normalization.js +384 -384
- package/src/odesa-metropolitan.js +144 -144
- package/src/romania-geography.js +47 -47
- package/src/tashkent-colloquial.js +80 -72
- package/src/tashkent-housing-geography.d.ts +38 -38
- package/src/tashkent-housing-geography.js +211 -211
- package/src/tashkent-pois.js +215 -215
- package/src/tashkent-residential-complexes.js +272 -272
- package/src/ua-location-extensions-major.js +118 -118
- package/src/ua-location-extensions-metro.js +9 -9
- package/src/ua-location-extensions-regional.js +246 -246
- package/src/ua-secondary-cities.d.ts +2 -2
- package/src/ua-secondary-cities.js +57 -57
- package/src/ukraine.js +75 -75
- package/src/uz-location-extensions.js +259 -259
package/src/geo.js
CHANGED
|
@@ -1,169 +1,169 @@
|
|
|
1
|
-
import { aliasesToRegex, findCanonical } from './normalization.js';
|
|
2
|
-
import { deepFreeze, lexiconEntity } from './lexicon-core.js';
|
|
3
|
-
|
|
4
|
-
const entity = (canonical, aliases, extra = {}) => lexiconEntity(canonical, aliases, { type: extra.type || (extra.country ? 'city' : 'district'), ...(!extra.country ? { country: 'UZ', city: 'Tashkent' } : {}), ...extra });
|
|
5
|
-
|
|
6
|
-
export { UZ_CITIES, KZ_CITIES } from './geography-central-asia.js';
|
|
7
|
-
|
|
8
|
-
// Compatibility for the historical ./geo subpath. Canonical city ownership lives in geography.js.
|
|
9
|
-
export { CITIES, CITIES_BY_COUNTRY, canonicalCity } from './geography.js';
|
|
10
|
-
|
|
11
|
-
export const TASHKENT_DISTRICTS = Object.freeze([
|
|
12
|
-
entity('Almazar', { uzLatn: ['Olmazor', 'Olmazor tumani'], uzCyrl: ['Олмазор', 'Олмазор тумани'], ru: ['Алмазар', 'Алмазарский район'], en: ['Almazar', 'Olmazor district'] }),
|
|
13
|
-
entity('Bektemir', { uzLatn: ['Bektemir', 'Bektemir tumani'], uzCyrl: ['Бектемир', 'Бектемир тумани'], ru: ['Бектемир', 'Бектемирский район'], en: ['Bektemir'] }),
|
|
14
|
-
entity('Mirobod', { uzLatn: ['Mirobod', 'Mirobod tumani'], uzCyrl: ['Миробод', 'Миробод тумани'], ru: ['Мирабад', 'Мирабадский район'], en: ['Mirobod', 'Mirabad'] }),
|
|
15
|
-
entity('Mirzo Ulugbek', { uzLatn: ["Mirzo Ulug'bek", 'Mirzo Ulugbek', "Mirzo Ulug'bek tumani"], uzCyrl: ['Мирзо Улуғбек', 'Мирзо Улуғбек тумани'], ru: ['Мирзо-Улугбекский район', 'Мирзо Улугбек'], en: ['Mirzo Ulugbek', 'Mirzo Ulughbek'] }),
|
|
16
|
-
entity('Sergeli', { uzLatn: ['Sergeli', 'Sergeli tumani'], uzCyrl: ['Сергели', 'Сергели тумани'], ru: ['Сергелийский район', 'Сергели'], en: ['Sergeli'] }),
|
|
17
|
-
entity('Uchtepa', { uzLatn: ['Uchtepa', 'Uchtepa tumani'], uzCyrl: ['Учтепа', 'Учтепа тумани'], ru: ['Учтепинский район', 'Учтепа'], en: ['Uchtepa'] }),
|
|
18
|
-
entity('Chilanzar', { uzLatn: ['Chilonzor', 'Chilonzor tumani', 'Chilanzar'], uzCyrl: ['Чилонзор', 'Чилонзор тумани'], ru: ['Чиланзар', 'Чиланзарский район'], en: ['Chilanzar', 'Chilonzor'] }),
|
|
19
|
-
entity('Shaykhantahur', { uzLatn: ['Shayxontohur', 'Shayxontohur tumani', 'Shaykhantahur'], uzCyrl: ['Шайхонтоҳур', 'Шайхонтоҳур тумани', 'Шайхонтохур'], ru: ['Шайхантахур', 'Шайхантахурский район'], en: ['Shaykhantahur', 'Shayxontohur'] }),
|
|
20
|
-
entity('Yunusabad', { uzLatn: ['Yunusobod', 'Yunusobod tumani', 'Yunusabad'], uzCyrl: ['Юнусобод', 'Юнусобод тумани'], ru: ['Юнусабад', 'Юнусабадский район'], en: ['Yunusabad', 'Yunusobod'] }),
|
|
21
|
-
entity('Yakkasaray', { uzLatn: ['Yakkasaroy', 'Yakkasaroy tumani', 'Yakkasaray'], uzCyrl: ['Яккасарой', 'Яккасарой тумани'], ru: ['Яккасарай', 'Яккасарайский район'], en: ['Yakkasaray', 'Yakkasaroy'] }),
|
|
22
|
-
entity('Yangihayot', { uzLatn: ['Yangihayot', 'Yangihayot tumani'], uzCyrl: ['Янгиҳаёт', 'Янгиҳаёт тумани', 'Янгихаёт'], ru: ['Янгихаётский район', 'Янгихаёт'], en: ['Yangihayot'] }),
|
|
23
|
-
entity('Yashnobod', { uzLatn: ['Yashnobod', 'Yashnobod tumani'], uzCyrl: ['Яшнобод', 'Яшнобод тумани'], ru: ['Яшнабад', 'Яшнабадский район'], en: ['Yashnobod', 'Yashnabad'] }),
|
|
24
|
-
]);
|
|
25
|
-
|
|
26
|
-
export function canonicalTashkentDistrict(value) {
|
|
27
|
-
return findCanonical(value, TASHKENT_DISTRICTS, { partial: true })?.canonical || null;
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
function station(name, ru, en, line, aliases = []) {
|
|
31
|
-
const allAliases = [...new Set([name, ru, en, ...aliases])];
|
|
32
|
-
return deepFreeze({
|
|
33
|
-
canonical: name,
|
|
34
|
-
name,
|
|
35
|
-
type: 'metro',
|
|
36
|
-
country: 'UZ',
|
|
37
|
-
city: 'Tashkent',
|
|
38
|
-
line,
|
|
39
|
-
labels: { ru, en },
|
|
40
|
-
aliases: allAliases,
|
|
41
|
-
re: aliasesToRegex(allAliases),
|
|
42
|
-
});
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
export const TASHKENT_METRO = Object.freeze([
|
|
46
|
-
station('Buyuk Ipak Yoli', 'Буюк Ипак Йули', 'Buyuk Ipak Yoli', 'chilonzor', ['Buyuk Ipak Yuli', "Buyuk Ipak Yo'li", 'Buyuk Ipak Yo‘li', 'Buyuk Ipak Yoʻli', 'Буюк Ипак Йўли', 'БИЙ', 'Максим Горький', 'Максима Горького', 'Горького', 'Maxim Gorky', 'Maksim Gorkiy']),
|
|
47
|
-
station('Pushkin', 'Пушкин', 'Pushkin', 'chilonzor'),
|
|
48
|
-
station('Hamid Olimjon', 'Хамид Алимджан', 'Hamid Olimjon', 'chilonzor', ['Хамид Олимжон', 'Hamid Alimjan', 'Hamid Alimjon']),
|
|
49
|
-
station('Amir Temur Xiyoboni', 'Амир Темур Хиёбони', 'Amir Temur Xiyoboni', 'chilonzor', ['Сквер', 'Amir Timur Square', 'Amir Temur']),
|
|
50
|
-
station('Mustaqillik Maydoni', 'Мустакиллик майдони', 'Mustaqillik Maydoni', 'chilonzor', ['Мустақиллик майдони', 'Площадь Независимости', 'Independence Square']),
|
|
51
|
-
station('Paxtakor', 'Пахтакор', 'Paxtakor', 'chilonzor', ['Pakhtakor']),
|
|
52
|
-
station('Xalqlar Dostligi', 'Халклар Дустлиги', 'Xalqlar Dostligi', 'chilonzor', ["Xalqlar Do'stligi", 'Xalqlar Do‘stligi', 'Xalqlar Doʻstligi', 'Халклар Дўстлиги', 'Халқлар Дўстлиги', 'Дружба народов', 'Bunyodkor', 'Бунёдкор']),
|
|
53
|
-
station('Milliy Bog', 'Миллий Бог', 'Milliy Bog', 'chilonzor', ["Milliy Bog'", 'Milliy Bog‘', 'Milliy Bogʻ', 'Миллий Боғ', 'Yoshlik', 'Ёшлик']),
|
|
54
|
-
station('Novza', 'Новза', 'Novza', 'chilonzor', ['Хамза', 'Hamza', 'Hamza metro', 'метро Хамза']),
|
|
55
|
-
station('Mirzo Ulugbek', 'Мирзо Улугбек', 'Mirzo Ulugbek', 'chilonzor', ["Mirzo Ulug'bek", 'Mirzo Ulug‘bek', 'Mirzo Ulugʻbek', 'Мирзо Улуғбек', 'М. Улугбек', 'метро М. Улугбек']),
|
|
56
|
-
station('Chilonzor', 'Чиланзар', 'Chilonzor', 'chilonzor', ['Чилонзор', 'Chilanzar', 'метро Чиланзар', 'Chilonzor metro']),
|
|
57
|
-
station('Olmazor', 'Алмазар', 'Olmazor', 'chilonzor', ['Олмазор', 'Almazar', 'Сабир Рахимов', 'Собир Рахимов', 'Sobir Raximov', 'Sabir Rakhimov']),
|
|
58
|
-
station('Choshtepa', 'Чаштепа', 'Choshtepa', 'chilonzor', ['Чоштепа']),
|
|
59
|
-
station('Ozgarish', 'Узгариш', 'Ozgarish', 'chilonzor', ["O'zgarish", 'O‘zgarish', 'Oʻzgarish', 'Ўзгариш']),
|
|
60
|
-
station('Sergeli', 'Сергели', 'Sergeli', 'chilonzor', ['метро Сергели', 'Sergeli metro']),
|
|
61
|
-
station('Yangihayot', 'Янгихаёт', 'Yangihayot', 'chilonzor', ['Янгиҳаёт', 'Янгихаят']),
|
|
62
|
-
station('Chinor', 'Чинар', 'Chinor', 'chilonzor', ['Чинор']),
|
|
63
|
-
station('Beruniy', 'Беруни', 'Beruniy', 'ozbekiston', ['Beruni']),
|
|
64
|
-
station('Tinchlik', 'Тинчлик', 'Tinchlik', 'ozbekiston'),
|
|
65
|
-
station('Chorsu', 'Чорсу', 'Chorsu', 'ozbekiston'),
|
|
66
|
-
station('Gafur Gulom', 'Гафур Гулям', 'Gafur Gulom', 'ozbekiston', ["G'afur G'ulom", 'G‘afur G‘ulom', 'Gʻafur Gʻulom', 'Ғафур Ғулом']),
|
|
67
|
-
station('Alisher Navoi', 'Алишер Навои', 'Alisher Navoi', 'ozbekiston', ['Alisher Navoiy', 'Алишер Навоий']),
|
|
68
|
-
station('Ozbekiston', 'Узбекистан', 'Ozbekiston', 'ozbekiston', ["O'zbekiston", 'O‘zbekiston', 'Oʻzbekiston', 'Ўзбекистон']),
|
|
69
|
-
station('Kosmonavtlar', 'Космонавтлар', 'Kosmonavtlar', 'ozbekiston', ['Космонавты']),
|
|
70
|
-
station('Oybek', 'Ойбек', 'Oybek', 'ozbekiston'),
|
|
71
|
-
station('Toshkent', 'Ташкент', 'Toshkent', 'ozbekiston', ['Тошкент', 'Tashkent metro', 'метро Ташкент']),
|
|
72
|
-
station('Mashinasozlar', 'Машинасозлар', 'Mashinasozlar', 'ozbekiston'),
|
|
73
|
-
station('Dostlik', 'Дустлик', 'Dostlik', 'ozbekiston', ["Do'stlik", 'Do‘stlik', 'Doʻstlik', 'Дўстлик']),
|
|
74
|
-
station('Turkiston', 'Туркистон', 'Turkiston', 'yunusobod', ['Туркестан']),
|
|
75
|
-
station('Yunusobod', 'Юнусабад', 'Yunusobod', 'yunusobod', ['Юнусобод', 'Yunusabad', 'метро Юнусабад', 'Yunusobod metro']),
|
|
76
|
-
station('Shahriston', 'Шахристан', 'Shahriston', 'yunusobod', ['Шахристон']),
|
|
77
|
-
station('Bodomzor', 'Бадамзар', 'Bodomzor', 'yunusobod', ['Бодомзор']),
|
|
78
|
-
station('Minor', 'Минор', 'Minor', 'yunusobod'),
|
|
79
|
-
station('Abdulla Qodiriy', 'Абдулла Кадыри', 'Abdulla Qodiriy', 'yunusobod', ['Абдулла Кодири', 'Абдулла Қодирий', 'Abdulla Kadiri']),
|
|
80
|
-
station('Yunus Rajabiy', 'Юнус Раджаби', 'Yunus Rajabiy', 'yunusobod', ['Yunus Rajabi']),
|
|
81
|
-
station('Ming Orik', 'Мингурик', 'Ming Orik', 'yunusobod', ["Ming O'rik", 'Ming O‘rik', 'Ming Oʻrik', 'Минг Урик', 'Мингўрик']),
|
|
82
|
-
station('Texnopark', 'Технопарк', 'Texnopark', 'circle', ['Technopark']),
|
|
83
|
-
station('Yashnobod', 'Яшнабад', 'Yashnobod', 'circle', ['Яшнобод']),
|
|
84
|
-
station('Tuzel', 'Тузель', 'Tuzel', 'circle'),
|
|
85
|
-
station('Olmos', 'Алмас', 'Olmos', 'circle', ['Олмос']),
|
|
86
|
-
station('Rohat', 'Рохат', 'Rohat', 'circle'),
|
|
87
|
-
station('Yangiobod', 'Янгиабад', 'Yangiobod', 'circle', ['Янгиобод']),
|
|
88
|
-
station('Qoyliq', 'Куйлюк', 'Qoyliq', 'circle', ['Qo‘yliq', "Qo'yliq", 'Qoʻyliq', 'Қўйлиқ', 'Куйлик', 'Куйлюк метро']),
|
|
89
|
-
station('Matonat', 'Матонат', 'Matonat', 'circle'),
|
|
90
|
-
station('Qiyot', 'Кият', 'Qiyot', 'circle', ['Киёт', 'Қиёт']),
|
|
91
|
-
station('Tolariq', 'Толарык', 'Tolariq', 'circle', ['Толарик', 'Толариқ']),
|
|
92
|
-
station('Xonobod', 'Хонабад', 'Xonobod', 'circle', ['Ханабад']),
|
|
93
|
-
station('Quruvchilar', 'Курувчилар', 'Quruvchilar', 'circle', ['Қурувчилар']),
|
|
94
|
-
station('Turon', 'Туран', 'Turon', 'circle', ['Турон']),
|
|
95
|
-
station('Qipchoq', 'Кипчак', 'Qipchoq', 'circle', ['Қипчоқ']),
|
|
96
|
-
]);
|
|
97
|
-
|
|
98
|
-
const TASHKENT_METRO_BY_NAME = new Map(TASHKENT_METRO.map((item) => [item.name, item]));
|
|
99
|
-
|
|
100
|
-
export function tashkentMetroStation(value) {
|
|
101
|
-
if (!value) return null;
|
|
102
|
-
const direct = TASHKENT_METRO_BY_NAME.get(String(value));
|
|
103
|
-
if (direct) return direct;
|
|
104
|
-
return TASHKENT_METRO.find((item) => item.re.test(String(value))) || null;
|
|
105
|
-
}
|
|
106
|
-
|
|
107
|
-
export function canonicalTashkentMetro(value) {
|
|
108
|
-
return tashkentMetroStation(value)?.canonical || null;
|
|
109
|
-
}
|
|
110
|
-
|
|
111
|
-
export function tashkentMetroLabels() {
|
|
112
|
-
return Object.fromEntries(TASHKENT_METRO.map((item) => [item.name, { ru: item.labels.ru, en: item.labels.en, line: item.line }]));
|
|
113
|
-
}
|
|
114
|
-
|
|
115
|
-
const area = (name, aliases) => deepFreeze({ canonical: name, name, type: 'local_area', country: 'UZ', city: 'Tashkent', aliases });
|
|
116
|
-
|
|
117
|
-
export const TASHKENT_AREAS = Object.freeze({
|
|
118
|
-
Almazar: Object.freeze([
|
|
119
|
-
area('Sebzar', ['себзар', 'sebzar', 'ц 17', 'ц 18', 'c 17', 'c 18']),
|
|
120
|
-
area('Karakamysh-1/2', ['каракамыш 1 2', 'қорақамиш 1 2', 'qoraqamish 1 2', 'karakamish 1 2']),
|
|
121
|
-
area('Karakamysh-2/3', ['каракамыш 2 3', 'қорақамиш 2 3', 'qoraqamish 2 3', 'karakamish 2 3']),
|
|
122
|
-
area('Karakamysh-2/4', ['каракамыш 2 4', 'қорақамиш 2 4', 'qoraqamish 2 4', 'karakamish 2 4']),
|
|
123
|
-
area('Karakamysh-2/5', ['каракамыш 2 5', 'қорақамиш 2 5', 'qoraqamish 2 5', 'karakamish 2 5']),
|
|
124
|
-
area('Olympia', ['олимпия', 'olimpiya', 'olympia']), area('Vuzgorodok', ['вузгородок', 'вуз городок', 'vuzgorodok']),
|
|
125
|
-
area('Medgorodok', ['медгородок', 'мед городок', 'medgorodok']), area('Takhtapul', ['тахтапуль', 'тахтапул', 'taxtapul', 'takhtapul']),
|
|
126
|
-
area('Chimbay', ['чимбай', 'chimboy', 'chimbay']),
|
|
127
|
-
]),
|
|
128
|
-
Mirobod: Object.freeze([
|
|
129
|
-
area('Hospitalny', ['госпитальный', 'госпиталка', 'hospitalny']), area('Lolazor', ['лолазор', 'lolazor']),
|
|
130
|
-
area('Oltinkul', ['алтынкуль', 'олтинкул', 'олтинкўл', 'oltinkol', 'oltinkul']), area('Movarounnahr', ['мавераннахр', 'мовароуннахр', 'movarounnahr']),
|
|
131
|
-
]),
|
|
132
|
-
'Mirzo Ulugbek': Object.freeze([
|
|
133
|
-
area('Buyuk Ipak Yuli', ['буюк ипак йули', 'буюк ипак йўли', 'buyuk ipak yuli', "buyuk ipak yo'li", 'ц 1', 'c 1']),
|
|
134
|
-
area('Alay', ['олой', 'алайский', 'алайск', 'alay', 'ц 2', 'c 2']),
|
|
135
|
-
...[1, 2, 3, 4, 6].map((n) => area(`Karasu-${n}`, [`карасу ${n}`, `қорасув ${n}`, `qorasuv ${n}`, `karasu ${n}`])),
|
|
136
|
-
...[1, 2, 3, 4].map((n) => area(`TTZ-${n}`, [`ттз ${n}`, `ttz ${n}`])),
|
|
137
|
-
area('Yalangach', ['ялангач', 'yalangach', "yalang'och"]), area('Feruza', ['феруза', 'feruza']), area('Geofizika', ['геофизика', 'поселок геофизиков', 'geofizika']),
|
|
138
|
-
]),
|
|
139
|
-
Sergeli: Object.freeze([
|
|
140
|
-
area('Sergeli Car Bazaar', ['сергели машинный базар', 'сергели машина бозор', 'sergeli moshina bozor', 'sergile moshena bozor', 'sergele moshina bozor']),
|
|
141
|
-
area('Yangi Sergeli', ['янги сергели', 'yangi sergeli']), area('Stroygorod', ['стройгород', 'stroygorod']),
|
|
142
|
-
]),
|
|
143
|
-
Chilanzar: Object.freeze([
|
|
144
|
-
area('Nakkoshlik', ['наккошлык', 'наққошлик', 'naqqoshlik']), area('Al-Khorezmi-1', ['аль хорезми 1', 'ал хорезми 1', 'al xorazmiy 1', 'al khorezmi 1']),
|
|
145
|
-
]),
|
|
146
|
-
Shaykhantahur: Object.freeze([
|
|
147
|
-
area('Labzak', ['лабзак', 'labzak', 'ц 13', 'c 13']), area('Khadra', ['хадра', 'xadra', 'khadra', 'ц 14', 'c 14']),
|
|
148
|
-
area('Jangoh', ['джангох', 'жангох', 'jangoh', 'ц 15', 'c 15']), area('Karatash', ['караташ', 'қоратош', 'qoratosh', 'karatash']),
|
|
149
|
-
area('Chorsu', ['чорсу', 'chorsu']), area('Beshagach', ['бешагач', "beshyog'och", 'beshagach']), area('Beltepa', ['белтепа', 'beltepa']),
|
|
150
|
-
]),
|
|
151
|
-
Yunusabad: Object.freeze([
|
|
152
|
-
area('Kashgar', ['кашгар', 'қашқар', 'qashqar', 'kashgar', 'ц 4', 'c 4']), area('Kiyot', ['киёт', 'қиёт', 'qiyot', 'kiyot', 'ц 5', 'c 5']),
|
|
153
|
-
area('Minor', ['минор', 'minor', 'ц 6', 'c 6']), area('TashGRES', ['ташгрэс', 'tashgres']),
|
|
154
|
-
]),
|
|
155
|
-
Yakkasaray: Object.freeze([
|
|
156
|
-
area('Bashlyk', ['башлык', 'бошлиқ', 'boshliq', 'bashlyk']), area('Kushbegi', ['кушбеги', 'қушбеги', 'qushbegi', 'kushbegi']),
|
|
157
|
-
area('Rakat', ['ракат', 'rakat']), area('Rakatboshi', ['ракатбоши', 'rakatboshi']),
|
|
158
|
-
]),
|
|
159
|
-
Yangihayot: Object.freeze([
|
|
160
|
-
area('Uzgarish', ['узгарыш', 'ўзгариш', "o'zgarish", 'uzgarish']), area('Dustlik-1', ['дустлик 1', 'дўстлик 1', "do'stlik 1", 'dustlik 1']),
|
|
161
|
-
area('Dustlik-2', ['дустлик 2', 'дўстлик 2', "do'stlik 2", 'dustlik 2']), area('Yangi Choshtepa', ['янги чоштепа', 'yangi choshtepa']), area('Sputnik', ['спутник', 'йўлдош', "yo'ldosh", 'yoldosh']),
|
|
162
|
-
]),
|
|
163
|
-
Yashnobod: Object.freeze([
|
|
164
|
-
area('Kuylyuk Center', ['куйлюк центр', 'куйлик центр', "qo'yliq markaz", 'kuylyuk center']),
|
|
165
|
-
...[1, 2, 3, 4].map((n) => area(`Aviasozlar-${n}`, [`авиасозлар ${n}`, `городок авиастроителей ${n}`, `aviasozlar ${n}`])),
|
|
166
|
-
...[1, 2, 3, 4].map((n) => area(`Tuzel-${n}`, [`тузель ${n}`, `tuzel ${n}`])),
|
|
167
|
-
area('Tashselmash', ['ташсельмаш', 'tashselmash']), area('Alimkent', ['алимкент', 'olimkent', 'alimkent']), area('Shohimardon', ['шохимардон', 'shohimardon']),
|
|
168
|
-
]),
|
|
169
|
-
});
|
|
1
|
+
import { aliasesToRegex, findCanonical } from './normalization.js';
|
|
2
|
+
import { deepFreeze, lexiconEntity } from './lexicon-core.js';
|
|
3
|
+
|
|
4
|
+
const entity = (canonical, aliases, extra = {}) => lexiconEntity(canonical, aliases, { type: extra.type || (extra.country ? 'city' : 'district'), ...(!extra.country ? { country: 'UZ', city: 'Tashkent' } : {}), ...extra });
|
|
5
|
+
|
|
6
|
+
export { UZ_CITIES, KZ_CITIES } from './geography-central-asia.js';
|
|
7
|
+
|
|
8
|
+
// Compatibility for the historical ./geo subpath. Canonical city ownership lives in geography.js.
|
|
9
|
+
export { CITIES, CITIES_BY_COUNTRY, canonicalCity } from './geography.js';
|
|
10
|
+
|
|
11
|
+
export const TASHKENT_DISTRICTS = Object.freeze([
|
|
12
|
+
entity('Almazar', { uzLatn: ['Olmazor', 'Olmazor tumani'], uzCyrl: ['Олмазор', 'Олмазор тумани'], ru: ['Алмазар', 'Алмазарский район'], en: ['Almazar', 'Olmazor district'] }),
|
|
13
|
+
entity('Bektemir', { uzLatn: ['Bektemir', 'Bektemir tumani'], uzCyrl: ['Бектемир', 'Бектемир тумани'], ru: ['Бектемир', 'Бектемирский район'], en: ['Bektemir'] }),
|
|
14
|
+
entity('Mirobod', { uzLatn: ['Mirobod', 'Mirobod tumani'], uzCyrl: ['Миробод', 'Миробод тумани'], ru: ['Мирабад', 'Мирабадский район'], en: ['Mirobod', 'Mirabad'] }),
|
|
15
|
+
entity('Mirzo Ulugbek', { uzLatn: ["Mirzo Ulug'bek", 'Mirzo Ulugbek', "Mirzo Ulug'bek tumani"], uzCyrl: ['Мирзо Улуғбек', 'Мирзо Улуғбек тумани'], ru: ['Мирзо-Улугбекский район', 'Мирзо Улугбек'], en: ['Mirzo Ulugbek', 'Mirzo Ulughbek'] }),
|
|
16
|
+
entity('Sergeli', { uzLatn: ['Sergeli', 'Sergeli tumani'], uzCyrl: ['Сергели', 'Сергели тумани'], ru: ['Сергелийский район', 'Сергели'], en: ['Sergeli'] }),
|
|
17
|
+
entity('Uchtepa', { uzLatn: ['Uchtepa', 'Uchtepa tumani'], uzCyrl: ['Учтепа', 'Учтепа тумани'], ru: ['Учтепинский район', 'Учтепа'], en: ['Uchtepa'] }),
|
|
18
|
+
entity('Chilanzar', { uzLatn: ['Chilonzor', 'Chilonzor tumani', 'Chilanzar'], uzCyrl: ['Чилонзор', 'Чилонзор тумани'], ru: ['Чиланзар', 'Чиланзарский район'], en: ['Chilanzar', 'Chilonzor'] }),
|
|
19
|
+
entity('Shaykhantahur', { uzLatn: ['Shayxontohur', 'Shayxontohur tumani', 'Shaykhantahur'], uzCyrl: ['Шайхонтоҳур', 'Шайхонтоҳур тумани', 'Шайхонтохур'], ru: ['Шайхантахур', 'Шайхантахурский район'], en: ['Shaykhantahur', 'Shayxontohur'] }),
|
|
20
|
+
entity('Yunusabad', { uzLatn: ['Yunusobod', 'Yunusobod tumani', 'Yunusabad'], uzCyrl: ['Юнусобод', 'Юнусобод тумани'], ru: ['Юнусабад', 'Юнусабадский район'], en: ['Yunusabad', 'Yunusobod'] }),
|
|
21
|
+
entity('Yakkasaray', { uzLatn: ['Yakkasaroy', 'Yakkasaroy tumani', 'Yakkasaray'], uzCyrl: ['Яккасарой', 'Яккасарой тумани'], ru: ['Яккасарай', 'Яккасарайский район'], en: ['Yakkasaray', 'Yakkasaroy'] }),
|
|
22
|
+
entity('Yangihayot', { uzLatn: ['Yangihayot', 'Yangihayot tumani'], uzCyrl: ['Янгиҳаёт', 'Янгиҳаёт тумани', 'Янгихаёт'], ru: ['Янгихаётский район', 'Янгихаёт'], en: ['Yangihayot'] }),
|
|
23
|
+
entity('Yashnobod', { uzLatn: ['Yashnobod', 'Yashnobod tumani'], uzCyrl: ['Яшнобод', 'Яшнобод тумани'], ru: ['Яшнабад', 'Яшнабадский район'], en: ['Yashnobod', 'Yashnabad'] }),
|
|
24
|
+
]);
|
|
25
|
+
|
|
26
|
+
export function canonicalTashkentDistrict(value) {
|
|
27
|
+
return findCanonical(value, TASHKENT_DISTRICTS, { partial: true })?.canonical || null;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
function station(name, ru, en, line, aliases = []) {
|
|
31
|
+
const allAliases = [...new Set([name, ru, en, ...aliases])];
|
|
32
|
+
return deepFreeze({
|
|
33
|
+
canonical: name,
|
|
34
|
+
name,
|
|
35
|
+
type: 'metro',
|
|
36
|
+
country: 'UZ',
|
|
37
|
+
city: 'Tashkent',
|
|
38
|
+
line,
|
|
39
|
+
labels: { ru, en },
|
|
40
|
+
aliases: allAliases,
|
|
41
|
+
re: aliasesToRegex(allAliases),
|
|
42
|
+
});
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
export const TASHKENT_METRO = Object.freeze([
|
|
46
|
+
station('Buyuk Ipak Yoli', 'Буюк Ипак Йули', 'Buyuk Ipak Yoli', 'chilonzor', ['Buyuk Ipak Yuli', "Buyuk Ipak Yo'li", 'Buyuk Ipak Yo‘li', 'Buyuk Ipak Yoʻli', 'Буюк Ипак Йўли', 'БИЙ', 'Максим Горький', 'Максима Горького', 'Горького', 'Maxim Gorky', 'Maksim Gorkiy']),
|
|
47
|
+
station('Pushkin', 'Пушкин', 'Pushkin', 'chilonzor'),
|
|
48
|
+
station('Hamid Olimjon', 'Хамид Алимджан', 'Hamid Olimjon', 'chilonzor', ['Хамид Олимжон', 'Hamid Alimjan', 'Hamid Alimjon']),
|
|
49
|
+
station('Amir Temur Xiyoboni', 'Амир Темур Хиёбони', 'Amir Temur Xiyoboni', 'chilonzor', ['Сквер', 'Amir Timur Square', 'Amir Temur']),
|
|
50
|
+
station('Mustaqillik Maydoni', 'Мустакиллик майдони', 'Mustaqillik Maydoni', 'chilonzor', ['Мустақиллик майдони', 'Площадь Независимости', 'Independence Square']),
|
|
51
|
+
station('Paxtakor', 'Пахтакор', 'Paxtakor', 'chilonzor', ['Pakhtakor']),
|
|
52
|
+
station('Xalqlar Dostligi', 'Халклар Дустлиги', 'Xalqlar Dostligi', 'chilonzor', ["Xalqlar Do'stligi", 'Xalqlar Do‘stligi', 'Xalqlar Doʻstligi', 'Халклар Дўстлиги', 'Халқлар Дўстлиги', 'Дружба народов', 'Bunyodkor', 'Бунёдкор']),
|
|
53
|
+
station('Milliy Bog', 'Миллий Бог', 'Milliy Bog', 'chilonzor', ["Milliy Bog'", 'Milliy Bog‘', 'Milliy Bogʻ', 'Миллий Боғ', 'Yoshlik', 'Ёшлик']),
|
|
54
|
+
station('Novza', 'Новза', 'Novza', 'chilonzor', ['Хамза', 'Hamza', 'Hamza metro', 'метро Хамза']),
|
|
55
|
+
station('Mirzo Ulugbek', 'Мирзо Улугбек', 'Mirzo Ulugbek', 'chilonzor', ["Mirzo Ulug'bek", 'Mirzo Ulug‘bek', 'Mirzo Ulugʻbek', 'Мирзо Улуғбек', 'М. Улугбек', 'метро М. Улугбек']),
|
|
56
|
+
station('Chilonzor', 'Чиланзар', 'Chilonzor', 'chilonzor', ['Чилонзор', 'Chilanzar', 'метро Чиланзар', 'Chilonzor metro']),
|
|
57
|
+
station('Olmazor', 'Алмазар', 'Olmazor', 'chilonzor', ['Олмазор', 'Almazar', 'Сабир Рахимов', 'Собир Рахимов', 'Sobir Raximov', 'Sabir Rakhimov']),
|
|
58
|
+
station('Choshtepa', 'Чаштепа', 'Choshtepa', 'chilonzor', ['Чоштепа']),
|
|
59
|
+
station('Ozgarish', 'Узгариш', 'Ozgarish', 'chilonzor', ["O'zgarish", 'O‘zgarish', 'Oʻzgarish', 'Ўзгариш']),
|
|
60
|
+
station('Sergeli', 'Сергели', 'Sergeli', 'chilonzor', ['метро Сергели', 'Sergeli metro']),
|
|
61
|
+
station('Yangihayot', 'Янгихаёт', 'Yangihayot', 'chilonzor', ['Янгиҳаёт', 'Янгихаят']),
|
|
62
|
+
station('Chinor', 'Чинар', 'Chinor', 'chilonzor', ['Чинор']),
|
|
63
|
+
station('Beruniy', 'Беруни', 'Beruniy', 'ozbekiston', ['Beruni']),
|
|
64
|
+
station('Tinchlik', 'Тинчлик', 'Tinchlik', 'ozbekiston'),
|
|
65
|
+
station('Chorsu', 'Чорсу', 'Chorsu', 'ozbekiston'),
|
|
66
|
+
station('Gafur Gulom', 'Гафур Гулям', 'Gafur Gulom', 'ozbekiston', ["G'afur G'ulom", 'G‘afur G‘ulom', 'Gʻafur Gʻulom', 'Ғафур Ғулом']),
|
|
67
|
+
station('Alisher Navoi', 'Алишер Навои', 'Alisher Navoi', 'ozbekiston', ['Alisher Navoiy', 'Алишер Навоий']),
|
|
68
|
+
station('Ozbekiston', 'Узбекистан', 'Ozbekiston', 'ozbekiston', ["O'zbekiston", 'O‘zbekiston', 'Oʻzbekiston', 'Ўзбекистон']),
|
|
69
|
+
station('Kosmonavtlar', 'Космонавтлар', 'Kosmonavtlar', 'ozbekiston', ['Космонавты']),
|
|
70
|
+
station('Oybek', 'Ойбек', 'Oybek', 'ozbekiston'),
|
|
71
|
+
station('Toshkent', 'Ташкент', 'Toshkent', 'ozbekiston', ['Тошкент', 'Tashkent metro', 'метро Ташкент']),
|
|
72
|
+
station('Mashinasozlar', 'Машинасозлар', 'Mashinasozlar', 'ozbekiston'),
|
|
73
|
+
station('Dostlik', 'Дустлик', 'Dostlik', 'ozbekiston', ["Do'stlik", 'Do‘stlik', 'Doʻstlik', 'Дўстлик']),
|
|
74
|
+
station('Turkiston', 'Туркистон', 'Turkiston', 'yunusobod', ['Туркестан']),
|
|
75
|
+
station('Yunusobod', 'Юнусабад', 'Yunusobod', 'yunusobod', ['Юнусобод', 'Yunusabad', 'метро Юнусабад', 'Yunusobod metro']),
|
|
76
|
+
station('Shahriston', 'Шахристан', 'Shahriston', 'yunusobod', ['Шахристон']),
|
|
77
|
+
station('Bodomzor', 'Бадамзар', 'Bodomzor', 'yunusobod', ['Бодомзор']),
|
|
78
|
+
station('Minor', 'Минор', 'Minor', 'yunusobod'),
|
|
79
|
+
station('Abdulla Qodiriy', 'Абдулла Кадыри', 'Abdulla Qodiriy', 'yunusobod', ['Абдулла Кодири', 'Абдулла Қодирий', 'Abdulla Kadiri']),
|
|
80
|
+
station('Yunus Rajabiy', 'Юнус Раджаби', 'Yunus Rajabiy', 'yunusobod', ['Yunus Rajabi']),
|
|
81
|
+
station('Ming Orik', 'Мингурик', 'Ming Orik', 'yunusobod', ["Ming O'rik", 'Ming O‘rik', 'Ming Oʻrik', 'Минг Урик', 'Мингўрик']),
|
|
82
|
+
station('Texnopark', 'Технопарк', 'Texnopark', 'circle', ['Technopark']),
|
|
83
|
+
station('Yashnobod', 'Яшнабад', 'Yashnobod', 'circle', ['Яшнобод']),
|
|
84
|
+
station('Tuzel', 'Тузель', 'Tuzel', 'circle'),
|
|
85
|
+
station('Olmos', 'Алмас', 'Olmos', 'circle', ['Олмос']),
|
|
86
|
+
station('Rohat', 'Рохат', 'Rohat', 'circle'),
|
|
87
|
+
station('Yangiobod', 'Янгиабад', 'Yangiobod', 'circle', ['Янгиобод']),
|
|
88
|
+
station('Qoyliq', 'Куйлюк', 'Qoyliq', 'circle', ['Qo‘yliq', "Qo'yliq", 'Qoʻyliq', 'Қўйлиқ', 'Куйлик', 'Куйлюк метро']),
|
|
89
|
+
station('Matonat', 'Матонат', 'Matonat', 'circle'),
|
|
90
|
+
station('Qiyot', 'Кият', 'Qiyot', 'circle', ['Киёт', 'Қиёт']),
|
|
91
|
+
station('Tolariq', 'Толарык', 'Tolariq', 'circle', ['Толарик', 'Толариқ']),
|
|
92
|
+
station('Xonobod', 'Хонабад', 'Xonobod', 'circle', ['Ханабад']),
|
|
93
|
+
station('Quruvchilar', 'Курувчилар', 'Quruvchilar', 'circle', ['Қурувчилар']),
|
|
94
|
+
station('Turon', 'Туран', 'Turon', 'circle', ['Турон']),
|
|
95
|
+
station('Qipchoq', 'Кипчак', 'Qipchoq', 'circle', ['Қипчоқ']),
|
|
96
|
+
]);
|
|
97
|
+
|
|
98
|
+
const TASHKENT_METRO_BY_NAME = new Map(TASHKENT_METRO.map((item) => [item.name, item]));
|
|
99
|
+
|
|
100
|
+
export function tashkentMetroStation(value) {
|
|
101
|
+
if (!value) return null;
|
|
102
|
+
const direct = TASHKENT_METRO_BY_NAME.get(String(value));
|
|
103
|
+
if (direct) return direct;
|
|
104
|
+
return TASHKENT_METRO.find((item) => item.re.test(String(value))) || null;
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
export function canonicalTashkentMetro(value) {
|
|
108
|
+
return tashkentMetroStation(value)?.canonical || null;
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
export function tashkentMetroLabels() {
|
|
112
|
+
return Object.fromEntries(TASHKENT_METRO.map((item) => [item.name, { ru: item.labels.ru, en: item.labels.en, line: item.line }]));
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
const area = (name, aliases) => deepFreeze({ canonical: name, name, type: 'local_area', country: 'UZ', city: 'Tashkent', aliases });
|
|
116
|
+
|
|
117
|
+
export const TASHKENT_AREAS = Object.freeze({
|
|
118
|
+
Almazar: Object.freeze([
|
|
119
|
+
area('Sebzar', ['себзар', 'sebzar', 'ц 17', 'ц 18', 'c 17', 'c 18']),
|
|
120
|
+
area('Karakamysh-1/2', ['каракамыш 1 2', 'қорақамиш 1 2', 'qoraqamish 1 2', 'karakamish 1 2']),
|
|
121
|
+
area('Karakamysh-2/3', ['каракамыш 2 3', 'қорақамиш 2 3', 'qoraqamish 2 3', 'karakamish 2 3']),
|
|
122
|
+
area('Karakamysh-2/4', ['каракамыш 2 4', 'қорақамиш 2 4', 'qoraqamish 2 4', 'karakamish 2 4']),
|
|
123
|
+
area('Karakamysh-2/5', ['каракамыш 2 5', 'қорақамиш 2 5', 'qoraqamish 2 5', 'karakamish 2 5']),
|
|
124
|
+
area('Olympia', ['олимпия', 'olimpiya', 'olympia']), area('Vuzgorodok', ['вузгородок', 'вуз городок', 'vuzgorodok']),
|
|
125
|
+
area('Medgorodok', ['медгородок', 'мед городок', 'medgorodok']), area('Takhtapul', ['тахтапуль', 'тахтапул', 'taxtapul', 'takhtapul']),
|
|
126
|
+
area('Chimbay', ['чимбай', 'chimboy', 'chimbay']),
|
|
127
|
+
]),
|
|
128
|
+
Mirobod: Object.freeze([
|
|
129
|
+
area('Hospitalny', ['госпитальный', 'госпиталка', 'hospitalny']), area('Lolazor', ['лолазор', 'lolazor']),
|
|
130
|
+
area('Oltinkul', ['алтынкуль', 'олтинкул', 'олтинкўл', 'oltinkol', 'oltinkul']), area('Movarounnahr', ['мавераннахр', 'мовароуннахр', 'movarounnahr']),
|
|
131
|
+
]),
|
|
132
|
+
'Mirzo Ulugbek': Object.freeze([
|
|
133
|
+
area('Buyuk Ipak Yuli', ['буюк ипак йули', 'буюк ипак йўли', 'buyuk ipak yuli', "buyuk ipak yo'li", 'ц 1', 'c 1']),
|
|
134
|
+
area('Alay', ['олой', 'алайский', 'алайск', 'alay', 'ц 2', 'c 2']),
|
|
135
|
+
...[1, 2, 3, 4, 6].map((n) => area(`Karasu-${n}`, [`карасу ${n}`, `қорасув ${n}`, `qorasuv ${n}`, `karasu ${n}`])),
|
|
136
|
+
...[1, 2, 3, 4].map((n) => area(`TTZ-${n}`, [`ттз ${n}`, `ttz ${n}`])),
|
|
137
|
+
area('Yalangach', ['ялангач', 'yalangach', "yalang'och"]), area('Feruza', ['феруза', 'feruza']), area('Geofizika', ['геофизика', 'поселок геофизиков', 'geofizika']),
|
|
138
|
+
]),
|
|
139
|
+
Sergeli: Object.freeze([
|
|
140
|
+
area('Sergeli Car Bazaar', ['сергели машинный базар', 'сергели машина бозор', 'sergeli moshina bozor', 'sergile moshena bozor', 'sergele moshina bozor']),
|
|
141
|
+
area('Yangi Sergeli', ['янги сергели', 'yangi sergeli']), area('Stroygorod', ['стройгород', 'stroygorod']),
|
|
142
|
+
]),
|
|
143
|
+
Chilanzar: Object.freeze([
|
|
144
|
+
area('Nakkoshlik', ['наккошлык', 'наққошлик', 'naqqoshlik']), area('Al-Khorezmi-1', ['аль хорезми 1', 'ал хорезми 1', 'al xorazmiy 1', 'al khorezmi 1']),
|
|
145
|
+
]),
|
|
146
|
+
Shaykhantahur: Object.freeze([
|
|
147
|
+
area('Labzak', ['лабзак', 'labzak', 'ц 13', 'c 13']), area('Khadra', ['хадра', 'xadra', 'khadra', 'ц 14', 'c 14']),
|
|
148
|
+
area('Jangoh', ['джангох', 'жангох', 'jangoh', 'ц 15', 'c 15']), area('Karatash', ['караташ', 'қоратош', 'qoratosh', 'karatash']),
|
|
149
|
+
area('Chorsu', ['чорсу', 'chorsu']), area('Beshagach', ['бешагач', "beshyog'och", 'beshagach']), area('Beltepa', ['белтепа', 'beltepa']),
|
|
150
|
+
]),
|
|
151
|
+
Yunusabad: Object.freeze([
|
|
152
|
+
area('Kashgar', ['кашгар', 'қашқар', 'qashqar', 'kashgar', 'ц 4', 'c 4']), area('Kiyot', ['киёт', 'қиёт', 'qiyot', 'kiyot', 'ц 5', 'c 5']),
|
|
153
|
+
area('Minor', ['минор', 'minor', 'ц 6', 'c 6']), area('TashGRES', ['ташгрэс', 'tashgres']),
|
|
154
|
+
]),
|
|
155
|
+
Yakkasaray: Object.freeze([
|
|
156
|
+
area('Bashlyk', ['башлык', 'бошлиқ', 'boshliq', 'bashlyk']), area('Kushbegi', ['кушбеги', 'қушбеги', 'qushbegi', 'kushbegi']),
|
|
157
|
+
area('Rakat', ['ракат', 'rakat']), area('Rakatboshi', ['ракатбоши', 'rakatboshi']),
|
|
158
|
+
]),
|
|
159
|
+
Yangihayot: Object.freeze([
|
|
160
|
+
area('Uzgarish', ['узгарыш', 'ўзгариш', "o'zgarish", 'uzgarish']), area('Dustlik-1', ['дустлик 1', 'дўстлик 1', "do'stlik 1", 'dustlik 1']),
|
|
161
|
+
area('Dustlik-2', ['дустлик 2', 'дўстлик 2', "do'stlik 2", 'dustlik 2']), area('Yangi Choshtepa', ['янги чоштепа', 'yangi choshtepa']), area('Sputnik', ['спутник', 'йўлдош', "yo'ldosh", 'yoldosh']),
|
|
162
|
+
]),
|
|
163
|
+
Yashnobod: Object.freeze([
|
|
164
|
+
area('Kuylyuk Center', ['куйлюк центр', 'куйлик центр', "qo'yliq markaz", 'kuylyuk center']),
|
|
165
|
+
...[1, 2, 3, 4].map((n) => area(`Aviasozlar-${n}`, [`авиасозлар ${n}`, `городок авиастроителей ${n}`, `aviasozlar ${n}`])),
|
|
166
|
+
...[1, 2, 3, 4].map((n) => area(`Tuzel-${n}`, [`тузель ${n}`, `tuzel ${n}`])),
|
|
167
|
+
area('Tashselmash', ['ташсельмаш', 'tashselmash']), area('Alimkent', ['алимкент', 'olimkent', 'alimkent']), area('Shohimardon', ['шохимардон', 'shohimardon']),
|
|
168
|
+
]),
|
|
169
|
+
});
|
|
@@ -1,42 +1,42 @@
|
|
|
1
|
-
import { lexiconEntity } from './lexicon-core.js';
|
|
2
|
-
|
|
3
|
-
const entity = (canonical, aliases, extra = {}) => lexiconEntity(canonical, aliases, { type: 'city', ...extra });
|
|
4
|
-
|
|
5
|
-
export const UZ_CITIES = Object.freeze([
|
|
6
|
-
entity('Tashkent', { uzLatn: ['Toshkent'], uzCyrl: ['Тошкент'], ru: ['Ташкент'], en: ['Tashkent'] }, { country: 'UZ' }),
|
|
7
|
-
entity('Samarkand', { uzLatn: ['Samarqand'], uzCyrl: ['Самарқанд'], ru: ['Самарканд'], en: ['Samarkand'] }, { country: 'UZ' }),
|
|
8
|
-
entity('Bukhara', { uzLatn: ['Buxoro'], uzCyrl: ['Бухоро'], ru: ['Бухара'], en: ['Bukhara'] }, { country: 'UZ' }),
|
|
9
|
-
entity('Namangan', { uzLatn: ['Namangan'], uzCyrl: ['Наманган'], ru: ['Наманган'], en: ['Namangan'] }, { country: 'UZ' }),
|
|
10
|
-
entity('Andijan', { uzLatn: ['Andijon', 'Andijan', 'Anjon', 'Anjan'], uzCyrl: ['Андижон'], ru: ['Андижан'], en: ['Andijan'] }, { country: 'UZ' }),
|
|
11
|
-
entity('Fergana', { uzLatn: ["Farg'ona", 'Farg‘ona', 'Fargʻona', 'Fargona'], uzCyrl: ['Фарғона'], ru: ['Фергана', 'Фаргана'], en: ['Fergana'] }, { country: 'UZ' }),
|
|
12
|
-
entity('Nukus', { uzLatn: ['Nukus'], uzCyrl: ['Нукус'], ru: ['Нукус'], en: ['Nukus'] }, { country: 'UZ' }),
|
|
13
|
-
entity('Qarshi', { uzLatn: ['Qarshi', 'Karshi'], uzCyrl: ['Қарши'], ru: ['Карши'], en: ['Qarshi', 'Karshi'] }, { country: 'UZ' }),
|
|
14
|
-
entity('Urgench', { uzLatn: ['Urganch', 'Urgench'], uzCyrl: ['Урганч'], ru: ['Ургенч'], en: ['Urgench'] }, { country: 'UZ' }),
|
|
15
|
-
entity('Khiva', { uzLatn: ['Xiva', 'Khiva'], uzCyrl: ['Хива'], ru: ['Хива'], en: ['Khiva'] }, { country: 'UZ' }),
|
|
16
|
-
entity('Navoiy', { uzLatn: ['Navoiy', 'Navoi'], uzCyrl: ['Навоий'], ru: ['Навои'], en: ['Navoiy', 'Navoi'] }, { country: 'UZ' }),
|
|
17
|
-
entity('Jizzakh', { uzLatn: ['Jizzax', 'Jizzakh'], uzCyrl: ['Жиззах'], ru: ['Джизак'], en: ['Jizzakh'] }, { country: 'UZ' }),
|
|
18
|
-
entity('Termez', { uzLatn: ['Termiz', 'Termez'], uzCyrl: ['Термиз'], ru: ['Термез'], en: ['Termez'] }, { country: 'UZ' }),
|
|
19
|
-
entity('Gulistan', { uzLatn: ['Guliston', 'Gulistan'], uzCyrl: ['Гулистон'], ru: ['Гулистан'], en: ['Gulistan'] }, { country: 'UZ' }),
|
|
20
|
-
entity('Chirchiq', { uzLatn: ['Chirchiq', 'Chirchik'], uzCyrl: ['Чирчиқ'], ru: ['Чирчик'], en: ['Chirchiq'] }, { country: 'UZ' }),
|
|
21
|
-
]);
|
|
22
|
-
|
|
23
|
-
export const KZ_CITIES = Object.freeze([
|
|
24
|
-
entity('Almaty', { kk: ['Алматы'], ru: ['Алматы', 'Алма-Ата', 'Алма Ата'], en: ['Almaty', 'Alma-Ata', 'Alma Ata'] }, { country: 'KZ' }),
|
|
25
|
-
entity('Astana', { kk: ['Астана', 'Нұр-Сұлтан', 'Нұр Сұлтан'], ru: ['Астана', 'Нур-Султан', 'Нур Султан'], en: ['Astana', 'Nur-Sultan', 'Nur Sultan'] }, { country: 'KZ' }),
|
|
26
|
-
entity('Shymkent', { kk: ['Шымкент'], ru: ['Шымкент', 'Чимкент'], en: ['Shymkent', 'Chimkent'] }, { country: 'KZ' }),
|
|
27
|
-
entity('Karaganda', { kk: ['Қарағанды'], ru: ['Караганда'], en: ['Karaganda', 'Qaragandy'] }, { country: 'KZ' }),
|
|
28
|
-
entity('Aktobe', { kk: ['Ақтөбе'], ru: ['Актобе'], en: ['Aktobe', 'Aqtobe'] }, { country: 'KZ' }),
|
|
29
|
-
entity('Atyrau', { kk: ['Атырау'], ru: ['Атырау'], en: ['Atyrau'] }, { country: 'KZ' }),
|
|
30
|
-
entity('Oral', { kk: ['Орал'], ru: ['Уральск', 'Орал'], en: ['Oral', 'Uralsk'] }, { country: 'KZ' }),
|
|
31
|
-
entity('Taraz', { kk: ['Тараз'], ru: ['Тараз', 'Джамбул'], en: ['Taraz'] }, { country: 'KZ' }),
|
|
32
|
-
entity('Pavlodar', { kk: ['Павлодар'], ru: ['Павлодар'], en: ['Pavlodar'] }, { country: 'KZ' }),
|
|
33
|
-
entity('Semey', { kk: ['Семей'], ru: ['Семей', 'Семипалатинск'], en: ['Semey', 'Semipalatinsk'] }, { country: 'KZ' }),
|
|
34
|
-
entity('Kostanay', { kk: ['Қостанай'], ru: ['Костанай'], en: ['Kostanay', 'Qostanay'] }, { country: 'KZ' }),
|
|
35
|
-
entity('Kyzylorda', { kk: ['Қызылорда'], ru: ['Кызылорда'], en: ['Kyzylorda', 'Qyzylorda'] }, { country: 'KZ' }),
|
|
36
|
-
entity('Aktau', { kk: ['Ақтау'], ru: ['Актау'], en: ['Aktau', 'Aqtau'] }, { country: 'KZ' }),
|
|
37
|
-
entity('Oskemen', { kk: ['Өскемен'], ru: ['Усть-Каменогорск'], en: ['Oskemen', 'Ust-Kamenogorsk'] }, { country: 'KZ' }),
|
|
38
|
-
entity('Petropavl', { kk: ['Петропавл'], ru: ['Петропавловск'], en: ['Petropavl', 'Petropavlovsk'] }, { country: 'KZ' }),
|
|
39
|
-
entity('Turkistan', { kk: ['Түркістан'], ru: ['Туркестан'], en: ['Turkistan', 'Turkestan'] }, { country: 'KZ' }),
|
|
40
|
-
entity('Taldykorgan', { kk: ['Талдықорған'], ru: ['Талдыкорган'], en: ['Taldykorgan', 'Taldyqorgan'] }, { country: 'KZ' }),
|
|
41
|
-
entity('Kokshetau', { kk: ['Көкшетау'], ru: ['Кокшетау'], en: ['Kokshetau'] }, { country: 'KZ' }),
|
|
42
|
-
]);
|
|
1
|
+
import { lexiconEntity } from './lexicon-core.js';
|
|
2
|
+
|
|
3
|
+
const entity = (canonical, aliases, extra = {}) => lexiconEntity(canonical, aliases, { type: 'city', ...extra });
|
|
4
|
+
|
|
5
|
+
export const UZ_CITIES = Object.freeze([
|
|
6
|
+
entity('Tashkent', { uzLatn: ['Toshkent'], uzCyrl: ['Тошкент'], ru: ['Ташкент'], en: ['Tashkent'] }, { country: 'UZ' }),
|
|
7
|
+
entity('Samarkand', { uzLatn: ['Samarqand'], uzCyrl: ['Самарқанд'], ru: ['Самарканд'], en: ['Samarkand'] }, { country: 'UZ' }),
|
|
8
|
+
entity('Bukhara', { uzLatn: ['Buxoro'], uzCyrl: ['Бухоро'], ru: ['Бухара'], en: ['Bukhara'] }, { country: 'UZ' }),
|
|
9
|
+
entity('Namangan', { uzLatn: ['Namangan'], uzCyrl: ['Наманган'], ru: ['Наманган'], en: ['Namangan'] }, { country: 'UZ' }),
|
|
10
|
+
entity('Andijan', { uzLatn: ['Andijon', 'Andijan', 'Anjon', 'Anjan'], uzCyrl: ['Андижон'], ru: ['Андижан'], en: ['Andijan'] }, { country: 'UZ' }),
|
|
11
|
+
entity('Fergana', { uzLatn: ["Farg'ona", 'Farg‘ona', 'Fargʻona', 'Fargona'], uzCyrl: ['Фарғона'], ru: ['Фергана', 'Фаргана'], en: ['Fergana'] }, { country: 'UZ' }),
|
|
12
|
+
entity('Nukus', { uzLatn: ['Nukus'], uzCyrl: ['Нукус'], ru: ['Нукус'], en: ['Nukus'] }, { country: 'UZ' }),
|
|
13
|
+
entity('Qarshi', { uzLatn: ['Qarshi', 'Karshi'], uzCyrl: ['Қарши'], ru: ['Карши'], en: ['Qarshi', 'Karshi'] }, { country: 'UZ' }),
|
|
14
|
+
entity('Urgench', { uzLatn: ['Urganch', 'Urgench'], uzCyrl: ['Урганч'], ru: ['Ургенч'], en: ['Urgench'] }, { country: 'UZ' }),
|
|
15
|
+
entity('Khiva', { uzLatn: ['Xiva', 'Khiva'], uzCyrl: ['Хива'], ru: ['Хива'], en: ['Khiva'] }, { country: 'UZ' }),
|
|
16
|
+
entity('Navoiy', { uzLatn: ['Navoiy', 'Navoi'], uzCyrl: ['Навоий'], ru: ['Навои'], en: ['Navoiy', 'Navoi'] }, { country: 'UZ' }),
|
|
17
|
+
entity('Jizzakh', { uzLatn: ['Jizzax', 'Jizzakh'], uzCyrl: ['Жиззах'], ru: ['Джизак'], en: ['Jizzakh'] }, { country: 'UZ' }),
|
|
18
|
+
entity('Termez', { uzLatn: ['Termiz', 'Termez'], uzCyrl: ['Термиз'], ru: ['Термез'], en: ['Termez'] }, { country: 'UZ' }),
|
|
19
|
+
entity('Gulistan', { uzLatn: ['Guliston', 'Gulistan'], uzCyrl: ['Гулистон'], ru: ['Гулистан'], en: ['Gulistan'] }, { country: 'UZ' }),
|
|
20
|
+
entity('Chirchiq', { uzLatn: ['Chirchiq', 'Chirchik'], uzCyrl: ['Чирчиқ'], ru: ['Чирчик'], en: ['Chirchiq'] }, { country: 'UZ' }),
|
|
21
|
+
]);
|
|
22
|
+
|
|
23
|
+
export const KZ_CITIES = Object.freeze([
|
|
24
|
+
entity('Almaty', { kk: ['Алматы'], ru: ['Алматы', 'Алма-Ата', 'Алма Ата'], en: ['Almaty', 'Alma-Ata', 'Alma Ata'] }, { country: 'KZ' }),
|
|
25
|
+
entity('Astana', { kk: ['Астана', 'Нұр-Сұлтан', 'Нұр Сұлтан'], ru: ['Астана', 'Нур-Султан', 'Нур Султан'], en: ['Astana', 'Nur-Sultan', 'Nur Sultan'] }, { country: 'KZ' }),
|
|
26
|
+
entity('Shymkent', { kk: ['Шымкент'], ru: ['Шымкент', 'Чимкент'], en: ['Shymkent', 'Chimkent'] }, { country: 'KZ' }),
|
|
27
|
+
entity('Karaganda', { kk: ['Қарағанды'], ru: ['Караганда'], en: ['Karaganda', 'Qaragandy'] }, { country: 'KZ' }),
|
|
28
|
+
entity('Aktobe', { kk: ['Ақтөбе'], ru: ['Актобе'], en: ['Aktobe', 'Aqtobe'] }, { country: 'KZ' }),
|
|
29
|
+
entity('Atyrau', { kk: ['Атырау'], ru: ['Атырау'], en: ['Atyrau'] }, { country: 'KZ' }),
|
|
30
|
+
entity('Oral', { kk: ['Орал'], ru: ['Уральск', 'Орал'], en: ['Oral', 'Uralsk'] }, { country: 'KZ' }),
|
|
31
|
+
entity('Taraz', { kk: ['Тараз'], ru: ['Тараз', 'Джамбул'], en: ['Taraz'] }, { country: 'KZ' }),
|
|
32
|
+
entity('Pavlodar', { kk: ['Павлодар'], ru: ['Павлодар'], en: ['Pavlodar'] }, { country: 'KZ' }),
|
|
33
|
+
entity('Semey', { kk: ['Семей'], ru: ['Семей', 'Семипалатинск'], en: ['Semey', 'Semipalatinsk'] }, { country: 'KZ' }),
|
|
34
|
+
entity('Kostanay', { kk: ['Қостанай'], ru: ['Костанай'], en: ['Kostanay', 'Qostanay'] }, { country: 'KZ' }),
|
|
35
|
+
entity('Kyzylorda', { kk: ['Қызылорда'], ru: ['Кызылорда'], en: ['Kyzylorda', 'Qyzylorda'] }, { country: 'KZ' }),
|
|
36
|
+
entity('Aktau', { kk: ['Ақтау'], ru: ['Актау'], en: ['Aktau', 'Aqtau'] }, { country: 'KZ' }),
|
|
37
|
+
entity('Oskemen', { kk: ['Өскемен'], ru: ['Усть-Каменогорск'], en: ['Oskemen', 'Ust-Kamenogorsk'] }, { country: 'KZ' }),
|
|
38
|
+
entity('Petropavl', { kk: ['Петропавл'], ru: ['Петропавловск'], en: ['Petropavl', 'Petropavlovsk'] }, { country: 'KZ' }),
|
|
39
|
+
entity('Turkistan', { kk: ['Түркістан'], ru: ['Туркестан'], en: ['Turkistan', 'Turkestan'] }, { country: 'KZ' }),
|
|
40
|
+
entity('Taldykorgan', { kk: ['Талдықорған'], ru: ['Талдыкорган'], en: ['Taldykorgan', 'Taldyqorgan'] }, { country: 'KZ' }),
|
|
41
|
+
entity('Kokshetau', { kk: ['Көкшетау'], ru: ['Кокшетау'], en: ['Kokshetau'] }, { country: 'KZ' }),
|
|
42
|
+
]);
|
|
@@ -1,14 +1,14 @@
|
|
|
1
|
-
export type DetectedCity = Readonly<{
|
|
2
|
-
canonical: string;
|
|
3
|
-
country: string | null;
|
|
4
|
-
}>;
|
|
5
|
-
|
|
6
|
-
export const HIRING_GLOBAL_CITIES: readonly Readonly<{
|
|
7
|
-
canonical: string;
|
|
8
|
-
country: string;
|
|
9
|
-
type: 'city';
|
|
10
|
-
aliases: Readonly<Record<string, readonly string[]>>;
|
|
11
|
-
}>[];
|
|
12
|
-
|
|
13
|
-
export function detectCountryCodeFromText(value: unknown): string | null;
|
|
14
|
-
export function detectCityFromText(value: unknown, country?: string | null): DetectedCity | null;
|
|
1
|
+
export type DetectedCity = Readonly<{
|
|
2
|
+
canonical: string;
|
|
3
|
+
country: string | null;
|
|
4
|
+
}>;
|
|
5
|
+
|
|
6
|
+
export const HIRING_GLOBAL_CITIES: readonly Readonly<{
|
|
7
|
+
canonical: string;
|
|
8
|
+
country: string;
|
|
9
|
+
type: 'city';
|
|
10
|
+
aliases: Readonly<Record<string, readonly string[]>>;
|
|
11
|
+
}>[];
|
|
12
|
+
|
|
13
|
+
export function detectCountryCodeFromText(value: unknown): string | null;
|
|
14
|
+
export function detectCityFromText(value: unknown, country?: string | null): DetectedCity | null;
|