@coffer-org/sdk 1.7.0 → 1.9.0
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/dist/countries.d.ts +3 -0
- package/dist/countries.js +258 -193
- package/dist/fields/convert.d.ts +14 -0
- package/dist/fields/convert.js +79 -0
- package/dist/fields.d.ts +6 -13
- package/dist/fields.js +7 -5
- package/package.json +1 -1
package/dist/countries.d.ts
CHANGED
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
export interface Country {
|
|
2
2
|
code: string;
|
|
3
3
|
name: string;
|
|
4
|
+
nameRu: string;
|
|
5
|
+
nameEn: string;
|
|
4
6
|
}
|
|
5
7
|
export declare const COUNTRIES: Country[];
|
|
6
8
|
export declare const COUNTRIES_BY_CODE: Map<string, Country>;
|
|
9
|
+
export declare function resolveCountryCode(raw: unknown): string | null;
|
package/dist/countries.js
CHANGED
|
@@ -1,196 +1,261 @@
|
|
|
1
1
|
export const COUNTRIES = [
|
|
2
|
-
{ code: 'AF', name: 'Афганістан' },
|
|
3
|
-
{ code: 'AL', name: 'Албанія' },
|
|
4
|
-
{ code: 'DZ', name: 'Алжир' },
|
|
5
|
-
{ code: 'AD', name: 'Андорра' },
|
|
6
|
-
{ code: 'AO', name: 'Ангола' },
|
|
7
|
-
{ code: 'AG', name: 'Антигуа і Барбуда' },
|
|
8
|
-
{ code: 'AR', name: 'Аргентина' },
|
|
9
|
-
{ code: 'AM', name: 'Вірменія' },
|
|
10
|
-
{ code: 'AU', name: 'Австралія' },
|
|
11
|
-
{ code: 'AT', name: 'Австрія' },
|
|
12
|
-
{ code: 'AZ', name: 'Азербайджан' },
|
|
13
|
-
{ code: 'BS', name: 'Багамські Острови' },
|
|
14
|
-
{ code: 'BH', name: 'Бахрейн' },
|
|
15
|
-
{ code: 'BD', name: 'Бангладеш' },
|
|
16
|
-
{ code: 'BY', name: 'Білорусь' },
|
|
17
|
-
{ code: 'BE', name: 'Бельгія' },
|
|
18
|
-
{ code: 'BZ', name: 'Беліз' },
|
|
19
|
-
{ code: 'BJ', name: 'Бенін' },
|
|
20
|
-
{ code: 'BT', name: 'Бутан' },
|
|
21
|
-
{ code: 'BO', name: 'Болівія' },
|
|
22
|
-
{ code: 'BA', name: 'Боснія і Герцеговина' },
|
|
23
|
-
{ code: 'BW', name: 'Ботсвана' },
|
|
24
|
-
{ code: 'BR', name: 'Бразилія' },
|
|
25
|
-
{ code: 'BN', name: 'Бруней' },
|
|
26
|
-
{ code: 'BG', name: 'Болгарія' },
|
|
27
|
-
{ code: 'BF', name: 'Буркіна-Фасо' },
|
|
28
|
-
{ code: 'BI', name: 'Бурунді' },
|
|
29
|
-
{ code: 'CV', name: 'Кабо-Верде' },
|
|
30
|
-
{ code: 'KH', name: 'Камбоджа' },
|
|
31
|
-
{ code: 'CM', name: 'Камерун' },
|
|
32
|
-
{ code: 'CA', name: 'Канада' },
|
|
33
|
-
{ code: 'CF', name: 'ЦАР' },
|
|
34
|
-
{ code: 'TD', name: 'Чад' },
|
|
35
|
-
{ code: 'CL', name: 'Чилі' },
|
|
36
|
-
{ code: 'CN', name: 'Китай' },
|
|
37
|
-
{ code: 'CO', name: 'Колумбія' },
|
|
38
|
-
{ code: 'KM', name: 'Комори' },
|
|
39
|
-
{ code: 'CG', name: 'Конго' },
|
|
40
|
-
{ code: 'CD', name: 'ДР Конго' },
|
|
41
|
-
{ code: 'CR', name: 'Коста-Рика' },
|
|
42
|
-
{ code: 'CI', name: "Кот-д'Івуар" },
|
|
43
|
-
{ code: 'HR', name: 'Хорватія' },
|
|
44
|
-
{ code: 'CU', name: 'Куба' },
|
|
45
|
-
{ code: 'CY', name: 'Кіпр' },
|
|
46
|
-
{ code: 'CZ', name: 'Чехія' },
|
|
47
|
-
{ code: 'DK', name: 'Данія' },
|
|
48
|
-
{ code: 'DJ', name: 'Джибуті' },
|
|
49
|
-
{ code: 'DM', name: 'Домініка' },
|
|
50
|
-
{ code: 'DO', name: 'Домініканська Республіка' },
|
|
51
|
-
{ code: 'EC', name: 'Еквадор' },
|
|
52
|
-
{ code: 'EG', name: 'Єгипет' },
|
|
53
|
-
{ code: 'SV', name: 'Сальвадор' },
|
|
54
|
-
{ code: 'GQ', name: 'Екваторіальна Гвінея' },
|
|
55
|
-
{ code: 'ER', name: 'Еритрея' },
|
|
56
|
-
{ code: 'EE', name: 'Естонія' },
|
|
57
|
-
{ code: 'SZ', name: 'Есватіні' },
|
|
58
|
-
{ code: 'ET', name: 'Ефіопія' },
|
|
59
|
-
{ code: 'FJ', name: 'Фіджі' },
|
|
60
|
-
{ code: 'FI', name: 'Фінляндія' },
|
|
61
|
-
{ code: 'FR', name: 'Франція' },
|
|
62
|
-
{ code: 'GA', name: 'Габон' },
|
|
63
|
-
{ code: 'GM', name: 'Гамбія' },
|
|
64
|
-
{ code: 'GE', name: 'Грузія' },
|
|
65
|
-
{ code: 'DE', name: 'Німеччина' },
|
|
66
|
-
{ code: 'GH', name: 'Гана' },
|
|
67
|
-
{ code: 'GR', name: 'Греція' },
|
|
68
|
-
{ code: 'GD', name: 'Гренада' },
|
|
69
|
-
{ code: 'GT', name: 'Гватемала' },
|
|
70
|
-
{ code: 'GN', name: 'Гвінея' },
|
|
71
|
-
{ code: 'GW', name: 'Гвінея-Бісау' },
|
|
72
|
-
{ code: 'GY', name: 'Гаяна' },
|
|
73
|
-
{ code: 'HT', name: 'Гаїті' },
|
|
74
|
-
{ code: 'HN', name: 'Гондурас' },
|
|
75
|
-
{ code: 'HU', name: 'Угорщина' },
|
|
76
|
-
{ code: 'IS', name: 'Ісландія' },
|
|
77
|
-
{ code: 'IN', name: 'Індія' },
|
|
78
|
-
{ code: 'ID', name: 'Індонезія' },
|
|
79
|
-
{ code: 'IR', name: 'Іран' },
|
|
80
|
-
{ code: 'IQ', name: 'Ірак' },
|
|
81
|
-
{ code: 'IE', name: 'Ірландія' },
|
|
82
|
-
{ code: 'IL', name: 'Ізраїль' },
|
|
83
|
-
{ code: 'IT', name: 'Італія' },
|
|
84
|
-
{ code: 'JM', name: 'Ямайка' },
|
|
85
|
-
{ code: 'JP', name: 'Японія' },
|
|
86
|
-
{ code: 'JO', name: 'Йорданія' },
|
|
87
|
-
{ code: 'KZ', name: 'Казахстан' },
|
|
88
|
-
{ code: 'KE', name: 'Кенія' },
|
|
89
|
-
{ code: 'KI', name: 'Кірибаті' },
|
|
90
|
-
{ code: 'KP', name: 'КНДР' },
|
|
91
|
-
{ code: 'KR', name: 'Південна Корея' },
|
|
92
|
-
{ code: 'KW', name: 'Кувейт' },
|
|
93
|
-
{ code: 'KG', name: 'Киргизстан' },
|
|
94
|
-
{ code: 'LA', name: 'Лаос' },
|
|
95
|
-
{ code: 'LV', name: 'Латвія' },
|
|
96
|
-
{ code: 'LB', name: 'Ліван' },
|
|
97
|
-
{ code: 'LS', name: 'Лесото' },
|
|
98
|
-
{ code: 'LR', name: 'Ліберія' },
|
|
99
|
-
{ code: 'LY', name: 'Лівія' },
|
|
100
|
-
{ code: 'LI', name: 'Ліхтенштейн' },
|
|
101
|
-
{ code: 'LT', name: 'Литва' },
|
|
102
|
-
{ code: 'LU', name: 'Люксембург' },
|
|
103
|
-
{ code: 'MG', name: 'Мадагаскар' },
|
|
104
|
-
{ code: 'MW', name: 'Малаві' },
|
|
105
|
-
{ code: 'MY', name: 'Малайзія' },
|
|
106
|
-
{ code: 'MV', name: 'Мальдіви' },
|
|
107
|
-
{ code: 'ML', name: 'Малі' },
|
|
108
|
-
{ code: 'MT', name: 'Мальта' },
|
|
109
|
-
{ code: 'MH', name: 'Маршаллові Острови' },
|
|
110
|
-
{ code: 'MR', name: 'Мавританія' },
|
|
111
|
-
{ code: 'MU', name: 'Маврикій' },
|
|
112
|
-
{ code: 'MX', name: 'Мексика' },
|
|
113
|
-
{ code: 'FM', name: 'Мікронезія' },
|
|
114
|
-
{ code: 'MD', name: 'Молдова' },
|
|
115
|
-
{ code: 'MC', name: 'Монако' },
|
|
116
|
-
{ code: 'MN', name: 'Монголія' },
|
|
117
|
-
{ code: 'ME', name: 'Чорногорія' },
|
|
118
|
-
{ code: 'MA', name: 'Марокко' },
|
|
119
|
-
{ code: 'MZ', name: 'Мозамбік' },
|
|
120
|
-
{ code: 'MM', name: "М'янма" },
|
|
121
|
-
{ code: 'NA', name: 'Намібія' },
|
|
122
|
-
{ code: 'NR', name: 'Науру' },
|
|
123
|
-
{ code: 'NP', name: 'Непал' },
|
|
124
|
-
{ code: 'NL', name: 'Нідерланди' },
|
|
125
|
-
{ code: 'NZ', name: 'Нова Зеландія' },
|
|
126
|
-
{ code: 'NI', name: 'Нікарагуа' },
|
|
127
|
-
{ code: 'NE', name: 'Нігер' },
|
|
128
|
-
{ code: 'NG', name: 'Нігерія' },
|
|
129
|
-
{ code: 'MK', name: 'Північна Македонія' },
|
|
130
|
-
{ code: 'NO', name: 'Норвегія' },
|
|
131
|
-
{ code: 'OM', name: 'Оман' },
|
|
132
|
-
{ code: 'PK', name: 'Пакистан' },
|
|
133
|
-
{ code: 'PW', name: 'Палау' },
|
|
134
|
-
{ code: 'PA', name: 'Панама' },
|
|
135
|
-
{ code: 'PG', name: 'Папуа Нова Гвінея' },
|
|
136
|
-
{ code: 'PY', name: 'Парагвай' },
|
|
137
|
-
{ code: 'PE', name: 'Перу' },
|
|
138
|
-
{ code: 'PH', name: 'Філіппіни' },
|
|
139
|
-
{ code: 'PL', name: 'Польща' },
|
|
140
|
-
{ code: 'PT', name: 'Португалія' },
|
|
141
|
-
{ code: 'QA', name: 'Катар' },
|
|
142
|
-
{ code: 'RO', name: 'Румунія' },
|
|
143
|
-
{ code: 'RU', name: 'Росія' },
|
|
144
|
-
{ code: 'RW', name: 'Руанда' },
|
|
145
|
-
{ code: 'KN', name: 'Сент-Кітс і Невіс' },
|
|
146
|
-
{ code: 'LC', name: 'Сент-Люсія' },
|
|
147
|
-
{ code: 'VC', name: 'Сент-Вінсент і Гренадіни' },
|
|
148
|
-
{ code: 'WS', name: 'Самоа' },
|
|
149
|
-
{ code: 'SM', name: 'Сан-Марино' },
|
|
150
|
-
{ code: 'ST', name: 'Сан-Томе і Принсіпі' },
|
|
151
|
-
{ code: 'SA', name: 'Саудівська Аравія' },
|
|
152
|
-
{ code: 'SN', name: 'Сенегал' },
|
|
153
|
-
{ code: 'RS', name: 'Сербія' },
|
|
154
|
-
{ code: 'SC', name: 'Сейшели' },
|
|
155
|
-
{ code: 'SL', name: 'Сьєрра-Леоне' },
|
|
156
|
-
{ code: 'SG', name: 'Сінгапур' },
|
|
157
|
-
{ code: 'SK', name: 'Словаччина' },
|
|
158
|
-
{ code: 'SI', name: 'Словенія' },
|
|
159
|
-
{ code: 'SB', name: 'Соломонові Острови' },
|
|
160
|
-
{ code: 'SO', name: 'Сомалі' },
|
|
161
|
-
{ code: 'ZA', name: 'ПАР' },
|
|
162
|
-
{ code: 'SS', name: 'Південний Судан' },
|
|
163
|
-
{ code: 'ES', name: 'Іспанія' },
|
|
164
|
-
{ code: 'LK', name: 'Шрі-Ланка' },
|
|
165
|
-
{ code: 'SD', name: 'Судан' },
|
|
166
|
-
{ code: 'SR', name: 'Суринам' },
|
|
167
|
-
{ code: 'SE', name: 'Швеція' },
|
|
168
|
-
{ code: 'CH', name: 'Швейцарія' },
|
|
169
|
-
{ code: 'SY', name: 'Сирія' },
|
|
170
|
-
{ code: 'TW', name: 'Тайвань' },
|
|
171
|
-
{ code: 'TJ', name: 'Таджикистан' },
|
|
172
|
-
{ code: 'TZ', name: 'Танзанія' },
|
|
173
|
-
{ code: 'TH', name: 'Таїланд' },
|
|
174
|
-
{ code: 'TL', name: 'Тімор-Лесте' },
|
|
175
|
-
{ code: 'TG', name: 'Того' },
|
|
176
|
-
{ code: 'TO', name: 'Тонга' },
|
|
177
|
-
{ code: 'TT', name: 'Тринідад і Тобаго' },
|
|
178
|
-
{ code: 'TN', name: 'Туніс' },
|
|
179
|
-
{ code: 'TR', name: 'Туреччина' },
|
|
180
|
-
{ code: 'TM', name: 'Туркменістан' },
|
|
181
|
-
{ code: 'TV', name: 'Тувалу' },
|
|
182
|
-
{ code: 'UG', name: 'Уганда' },
|
|
183
|
-
{ code: 'UA', name: 'Україна' },
|
|
184
|
-
{ code: 'AE', name: 'ОАЕ' },
|
|
185
|
-
{ code: 'GB', name: 'Велика Британія' },
|
|
186
|
-
{ code: 'US', name: 'США' },
|
|
187
|
-
{ code: 'UY', name: 'Уругвай' },
|
|
188
|
-
{ code: 'UZ', name: 'Узбекистан' },
|
|
189
|
-
{ code: 'VU', name: 'Вануату' },
|
|
190
|
-
{ code: 'VE', name: 'Венесуела' },
|
|
191
|
-
{ code: 'VN', name: "В'єтнам" },
|
|
192
|
-
{ code: 'YE', name: 'Ємен' },
|
|
193
|
-
{ code: 'ZM', name: 'Замбія' },
|
|
194
|
-
{ code: 'ZW', name: 'Зімбабве' },
|
|
2
|
+
{ code: 'AF', name: 'Афганістан', nameRu: 'Афганистан', nameEn: 'Afghanistan' },
|
|
3
|
+
{ code: 'AL', name: 'Албанія', nameRu: 'Албания', nameEn: 'Albania' },
|
|
4
|
+
{ code: 'DZ', name: 'Алжир', nameRu: 'Алжир', nameEn: 'Algeria' },
|
|
5
|
+
{ code: 'AD', name: 'Андорра', nameRu: 'Андорра', nameEn: 'Andorra' },
|
|
6
|
+
{ code: 'AO', name: 'Ангола', nameRu: 'Ангола', nameEn: 'Angola' },
|
|
7
|
+
{ code: 'AG', name: 'Антигуа і Барбуда', nameRu: 'Антигуа и Барбуда', nameEn: 'Antigua & Barbuda' },
|
|
8
|
+
{ code: 'AR', name: 'Аргентина', nameRu: 'Аргентина', nameEn: 'Argentina' },
|
|
9
|
+
{ code: 'AM', name: 'Вірменія', nameRu: 'Армения', nameEn: 'Armenia' },
|
|
10
|
+
{ code: 'AU', name: 'Австралія', nameRu: 'Австралия', nameEn: 'Australia' },
|
|
11
|
+
{ code: 'AT', name: 'Австрія', nameRu: 'Австрия', nameEn: 'Austria' },
|
|
12
|
+
{ code: 'AZ', name: 'Азербайджан', nameRu: 'Азербайджан', nameEn: 'Azerbaijan' },
|
|
13
|
+
{ code: 'BS', name: 'Багамські Острови', nameRu: 'Багамы', nameEn: 'Bahamas' },
|
|
14
|
+
{ code: 'BH', name: 'Бахрейн', nameRu: 'Бахрейн', nameEn: 'Bahrain' },
|
|
15
|
+
{ code: 'BD', name: 'Бангладеш', nameRu: 'Бангладеш', nameEn: 'Bangladesh' },
|
|
16
|
+
{ code: 'BY', name: 'Білорусь', nameRu: 'Беларусь', nameEn: 'Belarus' },
|
|
17
|
+
{ code: 'BE', name: 'Бельгія', nameRu: 'Бельгия', nameEn: 'Belgium' },
|
|
18
|
+
{ code: 'BZ', name: 'Беліз', nameRu: 'Белиз', nameEn: 'Belize' },
|
|
19
|
+
{ code: 'BJ', name: 'Бенін', nameRu: 'Бенин', nameEn: 'Benin' },
|
|
20
|
+
{ code: 'BT', name: 'Бутан', nameRu: 'Бутан', nameEn: 'Bhutan' },
|
|
21
|
+
{ code: 'BO', name: 'Болівія', nameRu: 'Боливия', nameEn: 'Bolivia' },
|
|
22
|
+
{ code: 'BA', name: 'Боснія і Герцеговина', nameRu: 'Босния и Герцеговина', nameEn: 'Bosnia & Herzegovina' },
|
|
23
|
+
{ code: 'BW', name: 'Ботсвана', nameRu: 'Ботсвана', nameEn: 'Botswana' },
|
|
24
|
+
{ code: 'BR', name: 'Бразилія', nameRu: 'Бразилия', nameEn: 'Brazil' },
|
|
25
|
+
{ code: 'BN', name: 'Бруней', nameRu: 'Бруней', nameEn: 'Brunei' },
|
|
26
|
+
{ code: 'BG', name: 'Болгарія', nameRu: 'Болгария', nameEn: 'Bulgaria' },
|
|
27
|
+
{ code: 'BF', name: 'Буркіна-Фасо', nameRu: 'Буркина-Фасо', nameEn: 'Burkina Faso' },
|
|
28
|
+
{ code: 'BI', name: 'Бурунді', nameRu: 'Бурунди', nameEn: 'Burundi' },
|
|
29
|
+
{ code: 'CV', name: 'Кабо-Верде', nameRu: 'Кабо-Верде', nameEn: 'Cape Verde' },
|
|
30
|
+
{ code: 'KH', name: 'Камбоджа', nameRu: 'Камбоджа', nameEn: 'Cambodia' },
|
|
31
|
+
{ code: 'CM', name: 'Камерун', nameRu: 'Камерун', nameEn: 'Cameroon' },
|
|
32
|
+
{ code: 'CA', name: 'Канада', nameRu: 'Канада', nameEn: 'Canada' },
|
|
33
|
+
{ code: 'CF', name: 'ЦАР', nameRu: 'Центрально-Африканская Республика', nameEn: 'Central African Republic' },
|
|
34
|
+
{ code: 'TD', name: 'Чад', nameRu: 'Чад', nameEn: 'Chad' },
|
|
35
|
+
{ code: 'CL', name: 'Чилі', nameRu: 'Чили', nameEn: 'Chile' },
|
|
36
|
+
{ code: 'CN', name: 'Китай', nameRu: 'Китай', nameEn: 'China' },
|
|
37
|
+
{ code: 'CO', name: 'Колумбія', nameRu: 'Колумбия', nameEn: 'Colombia' },
|
|
38
|
+
{ code: 'KM', name: 'Комори', nameRu: 'Коморы', nameEn: 'Comoros' },
|
|
39
|
+
{ code: 'CG', name: 'Конго', nameRu: 'Конго - Браззавиль', nameEn: 'Congo - Brazzaville' },
|
|
40
|
+
{ code: 'CD', name: 'ДР Конго', nameRu: 'Конго - Киншаса', nameEn: 'Congo - Kinshasa' },
|
|
41
|
+
{ code: 'CR', name: 'Коста-Рика', nameRu: 'Коста-Рика', nameEn: 'Costa Rica' },
|
|
42
|
+
{ code: 'CI', name: "Кот-д'Івуар", nameRu: 'Кот-д’Ивуар', nameEn: 'Côte d’Ivoire' },
|
|
43
|
+
{ code: 'HR', name: 'Хорватія', nameRu: 'Хорватия', nameEn: 'Croatia' },
|
|
44
|
+
{ code: 'CU', name: 'Куба', nameRu: 'Куба', nameEn: 'Cuba' },
|
|
45
|
+
{ code: 'CY', name: 'Кіпр', nameRu: 'Кипр', nameEn: 'Cyprus' },
|
|
46
|
+
{ code: 'CZ', name: 'Чехія', nameRu: 'Чехия', nameEn: 'Czechia' },
|
|
47
|
+
{ code: 'DK', name: 'Данія', nameRu: 'Дания', nameEn: 'Denmark' },
|
|
48
|
+
{ code: 'DJ', name: 'Джибуті', nameRu: 'Джибути', nameEn: 'Djibouti' },
|
|
49
|
+
{ code: 'DM', name: 'Домініка', nameRu: 'Доминика', nameEn: 'Dominica' },
|
|
50
|
+
{ code: 'DO', name: 'Домініканська Республіка', nameRu: 'Доминиканская Республика', nameEn: 'Dominican Republic' },
|
|
51
|
+
{ code: 'EC', name: 'Еквадор', nameRu: 'Эквадор', nameEn: 'Ecuador' },
|
|
52
|
+
{ code: 'EG', name: 'Єгипет', nameRu: 'Египет', nameEn: 'Egypt' },
|
|
53
|
+
{ code: 'SV', name: 'Сальвадор', nameRu: 'Сальвадор', nameEn: 'El Salvador' },
|
|
54
|
+
{ code: 'GQ', name: 'Екваторіальна Гвінея', nameRu: 'Экваториальная Гвинея', nameEn: 'Equatorial Guinea' },
|
|
55
|
+
{ code: 'ER', name: 'Еритрея', nameRu: 'Эритрея', nameEn: 'Eritrea' },
|
|
56
|
+
{ code: 'EE', name: 'Естонія', nameRu: 'Эстония', nameEn: 'Estonia' },
|
|
57
|
+
{ code: 'SZ', name: 'Есватіні', nameRu: 'Эсватини', nameEn: 'Eswatini' },
|
|
58
|
+
{ code: 'ET', name: 'Ефіопія', nameRu: 'Эфиопия', nameEn: 'Ethiopia' },
|
|
59
|
+
{ code: 'FJ', name: 'Фіджі', nameRu: 'Фиджи', nameEn: 'Fiji' },
|
|
60
|
+
{ code: 'FI', name: 'Фінляндія', nameRu: 'Финляндия', nameEn: 'Finland' },
|
|
61
|
+
{ code: 'FR', name: 'Франція', nameRu: 'Франция', nameEn: 'France' },
|
|
62
|
+
{ code: 'GA', name: 'Габон', nameRu: 'Габон', nameEn: 'Gabon' },
|
|
63
|
+
{ code: 'GM', name: 'Гамбія', nameRu: 'Гамбия', nameEn: 'Gambia' },
|
|
64
|
+
{ code: 'GE', name: 'Грузія', nameRu: 'Грузия', nameEn: 'Georgia' },
|
|
65
|
+
{ code: 'DE', name: 'Німеччина', nameRu: 'Германия', nameEn: 'Germany' },
|
|
66
|
+
{ code: 'GH', name: 'Гана', nameRu: 'Гана', nameEn: 'Ghana' },
|
|
67
|
+
{ code: 'GR', name: 'Греція', nameRu: 'Греция', nameEn: 'Greece' },
|
|
68
|
+
{ code: 'GD', name: 'Гренада', nameRu: 'Гренада', nameEn: 'Grenada' },
|
|
69
|
+
{ code: 'GT', name: 'Гватемала', nameRu: 'Гватемала', nameEn: 'Guatemala' },
|
|
70
|
+
{ code: 'GN', name: 'Гвінея', nameRu: 'Гвинея', nameEn: 'Guinea' },
|
|
71
|
+
{ code: 'GW', name: 'Гвінея-Бісау', nameRu: 'Гвинея-Бисау', nameEn: 'Guinea-Bissau' },
|
|
72
|
+
{ code: 'GY', name: 'Гаяна', nameRu: 'Гайана', nameEn: 'Guyana' },
|
|
73
|
+
{ code: 'HT', name: 'Гаїті', nameRu: 'Гаити', nameEn: 'Haiti' },
|
|
74
|
+
{ code: 'HN', name: 'Гондурас', nameRu: 'Гондурас', nameEn: 'Honduras' },
|
|
75
|
+
{ code: 'HU', name: 'Угорщина', nameRu: 'Венгрия', nameEn: 'Hungary' },
|
|
76
|
+
{ code: 'IS', name: 'Ісландія', nameRu: 'Исландия', nameEn: 'Iceland' },
|
|
77
|
+
{ code: 'IN', name: 'Індія', nameRu: 'Индия', nameEn: 'India' },
|
|
78
|
+
{ code: 'ID', name: 'Індонезія', nameRu: 'Индонезия', nameEn: 'Indonesia' },
|
|
79
|
+
{ code: 'IR', name: 'Іран', nameRu: 'Иран', nameEn: 'Iran' },
|
|
80
|
+
{ code: 'IQ', name: 'Ірак', nameRu: 'Ирак', nameEn: 'Iraq' },
|
|
81
|
+
{ code: 'IE', name: 'Ірландія', nameRu: 'Ирландия', nameEn: 'Ireland' },
|
|
82
|
+
{ code: 'IL', name: 'Ізраїль', nameRu: 'Израиль', nameEn: 'Israel' },
|
|
83
|
+
{ code: 'IT', name: 'Італія', nameRu: 'Италия', nameEn: 'Italy' },
|
|
84
|
+
{ code: 'JM', name: 'Ямайка', nameRu: 'Ямайка', nameEn: 'Jamaica' },
|
|
85
|
+
{ code: 'JP', name: 'Японія', nameRu: 'Япония', nameEn: 'Japan' },
|
|
86
|
+
{ code: 'JO', name: 'Йорданія', nameRu: 'Иордания', nameEn: 'Jordan' },
|
|
87
|
+
{ code: 'KZ', name: 'Казахстан', nameRu: 'Казахстан', nameEn: 'Kazakhstan' },
|
|
88
|
+
{ code: 'KE', name: 'Кенія', nameRu: 'Кения', nameEn: 'Kenya' },
|
|
89
|
+
{ code: 'KI', name: 'Кірибаті', nameRu: 'Кирибати', nameEn: 'Kiribati' },
|
|
90
|
+
{ code: 'KP', name: 'КНДР', nameRu: 'КНДР', nameEn: 'North Korea' },
|
|
91
|
+
{ code: 'KR', name: 'Південна Корея', nameRu: 'Республика Корея', nameEn: 'South Korea' },
|
|
92
|
+
{ code: 'KW', name: 'Кувейт', nameRu: 'Кувейт', nameEn: 'Kuwait' },
|
|
93
|
+
{ code: 'KG', name: 'Киргизстан', nameRu: 'Киргизия', nameEn: 'Kyrgyzstan' },
|
|
94
|
+
{ code: 'LA', name: 'Лаос', nameRu: 'Лаос', nameEn: 'Laos' },
|
|
95
|
+
{ code: 'LV', name: 'Латвія', nameRu: 'Латвия', nameEn: 'Latvia' },
|
|
96
|
+
{ code: 'LB', name: 'Ліван', nameRu: 'Ливан', nameEn: 'Lebanon' },
|
|
97
|
+
{ code: 'LS', name: 'Лесото', nameRu: 'Лесото', nameEn: 'Lesotho' },
|
|
98
|
+
{ code: 'LR', name: 'Ліберія', nameRu: 'Либерия', nameEn: 'Liberia' },
|
|
99
|
+
{ code: 'LY', name: 'Лівія', nameRu: 'Ливия', nameEn: 'Libya' },
|
|
100
|
+
{ code: 'LI', name: 'Ліхтенштейн', nameRu: 'Лихтенштейн', nameEn: 'Liechtenstein' },
|
|
101
|
+
{ code: 'LT', name: 'Литва', nameRu: 'Литва', nameEn: 'Lithuania' },
|
|
102
|
+
{ code: 'LU', name: 'Люксембург', nameRu: 'Люксембург', nameEn: 'Luxembourg' },
|
|
103
|
+
{ code: 'MG', name: 'Мадагаскар', nameRu: 'Мадагаскар', nameEn: 'Madagascar' },
|
|
104
|
+
{ code: 'MW', name: 'Малаві', nameRu: 'Малави', nameEn: 'Malawi' },
|
|
105
|
+
{ code: 'MY', name: 'Малайзія', nameRu: 'Малайзия', nameEn: 'Malaysia' },
|
|
106
|
+
{ code: 'MV', name: 'Мальдіви', nameRu: 'Мальдивы', nameEn: 'Maldives' },
|
|
107
|
+
{ code: 'ML', name: 'Малі', nameRu: 'Мали', nameEn: 'Mali' },
|
|
108
|
+
{ code: 'MT', name: 'Мальта', nameRu: 'Мальта', nameEn: 'Malta' },
|
|
109
|
+
{ code: 'MH', name: 'Маршаллові Острови', nameRu: 'Маршалловы о-ва', nameEn: 'Marshall Islands' },
|
|
110
|
+
{ code: 'MR', name: 'Мавританія', nameRu: 'Мавритания', nameEn: 'Mauritania' },
|
|
111
|
+
{ code: 'MU', name: 'Маврикій', nameRu: 'Маврикий', nameEn: 'Mauritius' },
|
|
112
|
+
{ code: 'MX', name: 'Мексика', nameRu: 'Мексика', nameEn: 'Mexico' },
|
|
113
|
+
{ code: 'FM', name: 'Мікронезія', nameRu: 'Федеративные Штаты Микронезии', nameEn: 'Micronesia' },
|
|
114
|
+
{ code: 'MD', name: 'Молдова', nameRu: 'Молдова', nameEn: 'Moldova' },
|
|
115
|
+
{ code: 'MC', name: 'Монако', nameRu: 'Монако', nameEn: 'Monaco' },
|
|
116
|
+
{ code: 'MN', name: 'Монголія', nameRu: 'Монголия', nameEn: 'Mongolia' },
|
|
117
|
+
{ code: 'ME', name: 'Чорногорія', nameRu: 'Черногория', nameEn: 'Montenegro' },
|
|
118
|
+
{ code: 'MA', name: 'Марокко', nameRu: 'Марокко', nameEn: 'Morocco' },
|
|
119
|
+
{ code: 'MZ', name: 'Мозамбік', nameRu: 'Мозамбик', nameEn: 'Mozambique' },
|
|
120
|
+
{ code: 'MM', name: "М'янма", nameRu: 'Мьянма (Бирма)', nameEn: 'Myanmar (Burma)' },
|
|
121
|
+
{ code: 'NA', name: 'Намібія', nameRu: 'Намибия', nameEn: 'Namibia' },
|
|
122
|
+
{ code: 'NR', name: 'Науру', nameRu: 'Науру', nameEn: 'Nauru' },
|
|
123
|
+
{ code: 'NP', name: 'Непал', nameRu: 'Непал', nameEn: 'Nepal' },
|
|
124
|
+
{ code: 'NL', name: 'Нідерланди', nameRu: 'Нидерланды', nameEn: 'Netherlands' },
|
|
125
|
+
{ code: 'NZ', name: 'Нова Зеландія', nameRu: 'Новая Зеландия', nameEn: 'New Zealand' },
|
|
126
|
+
{ code: 'NI', name: 'Нікарагуа', nameRu: 'Никарагуа', nameEn: 'Nicaragua' },
|
|
127
|
+
{ code: 'NE', name: 'Нігер', nameRu: 'Нигер', nameEn: 'Niger' },
|
|
128
|
+
{ code: 'NG', name: 'Нігерія', nameRu: 'Нигерия', nameEn: 'Nigeria' },
|
|
129
|
+
{ code: 'MK', name: 'Північна Македонія', nameRu: 'Северная Македония', nameEn: 'North Macedonia' },
|
|
130
|
+
{ code: 'NO', name: 'Норвегія', nameRu: 'Норвегия', nameEn: 'Norway' },
|
|
131
|
+
{ code: 'OM', name: 'Оман', nameRu: 'Оман', nameEn: 'Oman' },
|
|
132
|
+
{ code: 'PK', name: 'Пакистан', nameRu: 'Пакистан', nameEn: 'Pakistan' },
|
|
133
|
+
{ code: 'PW', name: 'Палау', nameRu: 'Палау', nameEn: 'Palau' },
|
|
134
|
+
{ code: 'PA', name: 'Панама', nameRu: 'Панама', nameEn: 'Panama' },
|
|
135
|
+
{ code: 'PG', name: 'Папуа Нова Гвінея', nameRu: 'Папуа — Новая Гвинея', nameEn: 'Papua New Guinea' },
|
|
136
|
+
{ code: 'PY', name: 'Парагвай', nameRu: 'Парагвай', nameEn: 'Paraguay' },
|
|
137
|
+
{ code: 'PE', name: 'Перу', nameRu: 'Перу', nameEn: 'Peru' },
|
|
138
|
+
{ code: 'PH', name: 'Філіппіни', nameRu: 'Филиппины', nameEn: 'Philippines' },
|
|
139
|
+
{ code: 'PL', name: 'Польща', nameRu: 'Польша', nameEn: 'Poland' },
|
|
140
|
+
{ code: 'PT', name: 'Португалія', nameRu: 'Португалия', nameEn: 'Portugal' },
|
|
141
|
+
{ code: 'QA', name: 'Катар', nameRu: 'Катар', nameEn: 'Qatar' },
|
|
142
|
+
{ code: 'RO', name: 'Румунія', nameRu: 'Румыния', nameEn: 'Romania' },
|
|
143
|
+
{ code: 'RU', name: 'Росія', nameRu: 'Россия', nameEn: 'Russia' },
|
|
144
|
+
{ code: 'RW', name: 'Руанда', nameRu: 'Руанда', nameEn: 'Rwanda' },
|
|
145
|
+
{ code: 'KN', name: 'Сент-Кітс і Невіс', nameRu: 'Сент-Китс и Невис', nameEn: 'St. Kitts & Nevis' },
|
|
146
|
+
{ code: 'LC', name: 'Сент-Люсія', nameRu: 'Сент-Люсия', nameEn: 'St. Lucia' },
|
|
147
|
+
{ code: 'VC', name: 'Сент-Вінсент і Гренадіни', nameRu: 'Сент-Винсент и Гренадины', nameEn: 'St. Vincent & Grenadines' },
|
|
148
|
+
{ code: 'WS', name: 'Самоа', nameRu: 'Самоа', nameEn: 'Samoa' },
|
|
149
|
+
{ code: 'SM', name: 'Сан-Марино', nameRu: 'Сан-Марино', nameEn: 'San Marino' },
|
|
150
|
+
{ code: 'ST', name: 'Сан-Томе і Принсіпі', nameRu: 'Сан-Томе и Принсипи', nameEn: 'São Tomé & Príncipe' },
|
|
151
|
+
{ code: 'SA', name: 'Саудівська Аравія', nameRu: 'Саудовская Аравия', nameEn: 'Saudi Arabia' },
|
|
152
|
+
{ code: 'SN', name: 'Сенегал', nameRu: 'Сенегал', nameEn: 'Senegal' },
|
|
153
|
+
{ code: 'RS', name: 'Сербія', nameRu: 'Сербия', nameEn: 'Serbia' },
|
|
154
|
+
{ code: 'SC', name: 'Сейшели', nameRu: 'Сейшельские о-ва', nameEn: 'Seychelles' },
|
|
155
|
+
{ code: 'SL', name: 'Сьєрра-Леоне', nameRu: 'Сьерра-Леоне', nameEn: 'Sierra Leone' },
|
|
156
|
+
{ code: 'SG', name: 'Сінгапур', nameRu: 'Сингапур', nameEn: 'Singapore' },
|
|
157
|
+
{ code: 'SK', name: 'Словаччина', nameRu: 'Словакия', nameEn: 'Slovakia' },
|
|
158
|
+
{ code: 'SI', name: 'Словенія', nameRu: 'Словения', nameEn: 'Slovenia' },
|
|
159
|
+
{ code: 'SB', name: 'Соломонові Острови', nameRu: 'Соломоновы о-ва', nameEn: 'Solomon Islands' },
|
|
160
|
+
{ code: 'SO', name: 'Сомалі', nameRu: 'Сомали', nameEn: 'Somalia' },
|
|
161
|
+
{ code: 'ZA', name: 'ПАР', nameRu: 'Южно-Африканская Республика', nameEn: 'South Africa' },
|
|
162
|
+
{ code: 'SS', name: 'Південний Судан', nameRu: 'Южный Судан', nameEn: 'South Sudan' },
|
|
163
|
+
{ code: 'ES', name: 'Іспанія', nameRu: 'Испания', nameEn: 'Spain' },
|
|
164
|
+
{ code: 'LK', name: 'Шрі-Ланка', nameRu: 'Шри-Ланка', nameEn: 'Sri Lanka' },
|
|
165
|
+
{ code: 'SD', name: 'Судан', nameRu: 'Судан', nameEn: 'Sudan' },
|
|
166
|
+
{ code: 'SR', name: 'Суринам', nameRu: 'Суринам', nameEn: 'Suriname' },
|
|
167
|
+
{ code: 'SE', name: 'Швеція', nameRu: 'Швеция', nameEn: 'Sweden' },
|
|
168
|
+
{ code: 'CH', name: 'Швейцарія', nameRu: 'Швейцария', nameEn: 'Switzerland' },
|
|
169
|
+
{ code: 'SY', name: 'Сирія', nameRu: 'Сирия', nameEn: 'Syria' },
|
|
170
|
+
{ code: 'TW', name: 'Тайвань', nameRu: 'Тайвань', nameEn: 'Taiwan' },
|
|
171
|
+
{ code: 'TJ', name: 'Таджикистан', nameRu: 'Таджикистан', nameEn: 'Tajikistan' },
|
|
172
|
+
{ code: 'TZ', name: 'Танзанія', nameRu: 'Танзания', nameEn: 'Tanzania' },
|
|
173
|
+
{ code: 'TH', name: 'Таїланд', nameRu: 'Таиланд', nameEn: 'Thailand' },
|
|
174
|
+
{ code: 'TL', name: 'Тімор-Лесте', nameRu: 'Восточный Тимор', nameEn: 'Timor-Leste' },
|
|
175
|
+
{ code: 'TG', name: 'Того', nameRu: 'Того', nameEn: 'Togo' },
|
|
176
|
+
{ code: 'TO', name: 'Тонга', nameRu: 'Тонга', nameEn: 'Tonga' },
|
|
177
|
+
{ code: 'TT', name: 'Тринідад і Тобаго', nameRu: 'Тринидад и Тобаго', nameEn: 'Trinidad & Tobago' },
|
|
178
|
+
{ code: 'TN', name: 'Туніс', nameRu: 'Тунис', nameEn: 'Tunisia' },
|
|
179
|
+
{ code: 'TR', name: 'Туреччина', nameRu: 'Турция', nameEn: 'Türkiye' },
|
|
180
|
+
{ code: 'TM', name: 'Туркменістан', nameRu: 'Туркменистан', nameEn: 'Turkmenistan' },
|
|
181
|
+
{ code: 'TV', name: 'Тувалу', nameRu: 'Тувалу', nameEn: 'Tuvalu' },
|
|
182
|
+
{ code: 'UG', name: 'Уганда', nameRu: 'Уганда', nameEn: 'Uganda' },
|
|
183
|
+
{ code: 'UA', name: 'Україна', nameRu: 'Украина', nameEn: 'Ukraine' },
|
|
184
|
+
{ code: 'AE', name: 'ОАЕ', nameRu: 'ОАЭ', nameEn: 'United Arab Emirates' },
|
|
185
|
+
{ code: 'GB', name: 'Велика Британія', nameRu: 'Великобритания', nameEn: 'United Kingdom' },
|
|
186
|
+
{ code: 'US', name: 'США', nameRu: 'Соединенные Штаты', nameEn: 'United States' },
|
|
187
|
+
{ code: 'UY', name: 'Уругвай', nameRu: 'Уругвай', nameEn: 'Uruguay' },
|
|
188
|
+
{ code: 'UZ', name: 'Узбекистан', nameRu: 'Узбекистан', nameEn: 'Uzbekistan' },
|
|
189
|
+
{ code: 'VU', name: 'Вануату', nameRu: 'Вануату', nameEn: 'Vanuatu' },
|
|
190
|
+
{ code: 'VE', name: 'Венесуела', nameRu: 'Венесуэла', nameEn: 'Venezuela' },
|
|
191
|
+
{ code: 'VN', name: "В'єтнам", nameRu: 'Вьетнам', nameEn: 'Vietnam' },
|
|
192
|
+
{ code: 'YE', name: 'Ємен', nameRu: 'Йемен', nameEn: 'Yemen' },
|
|
193
|
+
{ code: 'ZM', name: 'Замбія', nameRu: 'Замбия', nameEn: 'Zambia' },
|
|
194
|
+
{ code: 'ZW', name: 'Зімбабве', nameRu: 'Зимбабве', nameEn: 'Zimbabwe' },
|
|
195
195
|
];
|
|
196
196
|
export const COUNTRIES_BY_CODE = new Map(COUNTRIES.map((c) => [c.code, c]));
|
|
197
|
+
function normalizeCountryName(s) {
|
|
198
|
+
return s
|
|
199
|
+
.normalize('NFD')
|
|
200
|
+
.replace(/[\u0300-\u036f]/g, '')
|
|
201
|
+
.toLowerCase()
|
|
202
|
+
.replace(/['\u2019`\u00b4\u02bc.,\-\u2013\u2014()]/g, ' ')
|
|
203
|
+
.replace(/\s+/g, ' ')
|
|
204
|
+
.trim();
|
|
205
|
+
}
|
|
206
|
+
const COUNTRY_ALIASES = {
|
|
207
|
+
usa: 'US',
|
|
208
|
+
us: 'US',
|
|
209
|
+
'united states': 'US',
|
|
210
|
+
'united states of america': 'US',
|
|
211
|
+
сша: 'US',
|
|
212
|
+
uk: 'GB',
|
|
213
|
+
'united kingdom': 'GB',
|
|
214
|
+
'great britain': 'GB',
|
|
215
|
+
britain: 'GB',
|
|
216
|
+
england: 'GB',
|
|
217
|
+
англія: 'GB',
|
|
218
|
+
англия: 'GB',
|
|
219
|
+
британія: 'GB',
|
|
220
|
+
британия: 'GB',
|
|
221
|
+
uae: 'AE',
|
|
222
|
+
оае: 'AE',
|
|
223
|
+
оаэ: 'AE',
|
|
224
|
+
'united arab emirates': 'AE',
|
|
225
|
+
holland: 'NL',
|
|
226
|
+
голландія: 'NL',
|
|
227
|
+
голландия: 'NL',
|
|
228
|
+
'czech republic': 'CZ',
|
|
229
|
+
чехія: 'CZ',
|
|
230
|
+
'south korea': 'KR',
|
|
231
|
+
'republic of korea': 'KR',
|
|
232
|
+
korea: 'KR',
|
|
233
|
+
корея: 'KR',
|
|
234
|
+
'north korea': 'KP',
|
|
235
|
+
'ivory coast': 'CI',
|
|
236
|
+
burma: 'MM',
|
|
237
|
+
'cape verde': 'CV',
|
|
238
|
+
'east timor': 'TL',
|
|
239
|
+
swaziland: 'SZ',
|
|
240
|
+
macedonia: 'MK',
|
|
241
|
+
'russian federation': 'RU',
|
|
242
|
+
росія: 'RU',
|
|
243
|
+
россия: 'RU',
|
|
244
|
+
'p r c': 'CN',
|
|
245
|
+
китай: 'CN',
|
|
246
|
+
};
|
|
247
|
+
const CODE_BY_NAME = new Map();
|
|
248
|
+
for (const c of COUNTRIES) {
|
|
249
|
+
for (const n of [c.name, c.nameRu, c.nameEn])
|
|
250
|
+
CODE_BY_NAME.set(normalizeCountryName(n), c.code);
|
|
251
|
+
}
|
|
252
|
+
for (const [alias, code] of Object.entries(COUNTRY_ALIASES))
|
|
253
|
+
CODE_BY_NAME.set(normalizeCountryName(alias), code);
|
|
254
|
+
export function resolveCountryCode(raw) {
|
|
255
|
+
const s = String(raw ?? '').trim();
|
|
256
|
+
if (!s)
|
|
257
|
+
return null;
|
|
258
|
+
if (s.length === 2 && COUNTRIES_BY_CODE.has(s.toUpperCase()))
|
|
259
|
+
return s.toUpperCase();
|
|
260
|
+
return CODE_BY_NAME.get(normalizeCountryName(s)) ?? null;
|
|
261
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { ColumnType } from '../fields.ts';
|
|
2
|
+
export interface ColumnConversion {
|
|
3
|
+
from: string[];
|
|
4
|
+
to: {
|
|
5
|
+
name: string;
|
|
6
|
+
type: ColumnType;
|
|
7
|
+
}[];
|
|
8
|
+
map(src: Record<string, unknown>): Record<string, unknown>;
|
|
9
|
+
}
|
|
10
|
+
export declare const URL_PARTS: readonly ["scheme", "username", "password", "host", "port", "path", "query", "hash"];
|
|
11
|
+
export declare function urlToLink(key: string): ColumnConversion;
|
|
12
|
+
export declare function linkToUrl(key: string): ColumnConversion;
|
|
13
|
+
export declare function scalarToArray(key: string): ColumnConversion;
|
|
14
|
+
export declare function arrayToScalar(key: string): ColumnConversion;
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
import { parseUrl, buildUrl } from "./url.js";
|
|
2
|
+
export const URL_PARTS = ['scheme', 'username', 'password', 'host', 'port', 'path', 'query', 'hash'];
|
|
3
|
+
const urlColumns = (key) => URL_PARTS.map((p) => ({ name: `${key}__${p}`, type: p === 'port' ? 'integer' : 'text' }));
|
|
4
|
+
function partsToValue(key, src) {
|
|
5
|
+
const v = {};
|
|
6
|
+
for (const p of URL_PARTS) {
|
|
7
|
+
const raw = src[`${key}__${p}`];
|
|
8
|
+
if (raw == null || raw === '')
|
|
9
|
+
continue;
|
|
10
|
+
if (p === 'port') {
|
|
11
|
+
const n = Number(raw);
|
|
12
|
+
if (Number.isFinite(n))
|
|
13
|
+
v.port = n;
|
|
14
|
+
}
|
|
15
|
+
else {
|
|
16
|
+
v[p] = String(raw);
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
return v;
|
|
20
|
+
}
|
|
21
|
+
export function urlToLink(key) {
|
|
22
|
+
return {
|
|
23
|
+
from: URL_PARTS.map((p) => `${key}__${p}`),
|
|
24
|
+
to: [{ name: key, type: 'text' }],
|
|
25
|
+
map: (src) => ({ [key]: buildUrl(partsToValue(key, src)) || null }),
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
export function linkToUrl(key) {
|
|
29
|
+
return {
|
|
30
|
+
from: [key],
|
|
31
|
+
to: urlColumns(key),
|
|
32
|
+
map: (src) => {
|
|
33
|
+
const raw = src[key];
|
|
34
|
+
const v = raw == null ? null : parseUrl(String(raw));
|
|
35
|
+
const out = {};
|
|
36
|
+
for (const p of URL_PARTS)
|
|
37
|
+
out[`${key}__${p}`] = v?.[p] ?? null;
|
|
38
|
+
return out;
|
|
39
|
+
},
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
export function scalarToArray(key) {
|
|
43
|
+
return {
|
|
44
|
+
from: [key],
|
|
45
|
+
to: [{ name: key, type: 'text' }],
|
|
46
|
+
map: (src) => {
|
|
47
|
+
const raw = src[key];
|
|
48
|
+
if (raw == null || raw === '')
|
|
49
|
+
return { [key]: null };
|
|
50
|
+
if (isJsonArray(raw))
|
|
51
|
+
return { [key]: raw };
|
|
52
|
+
return { [key]: JSON.stringify([raw]) };
|
|
53
|
+
},
|
|
54
|
+
};
|
|
55
|
+
}
|
|
56
|
+
export function arrayToScalar(key) {
|
|
57
|
+
return {
|
|
58
|
+
from: [key],
|
|
59
|
+
to: [{ name: key, type: 'text' }],
|
|
60
|
+
map: (src) => {
|
|
61
|
+
const raw = src[key];
|
|
62
|
+
if (raw == null || raw === '')
|
|
63
|
+
return { [key]: null };
|
|
64
|
+
if (!isJsonArray(raw))
|
|
65
|
+
return { [key]: raw };
|
|
66
|
+
try {
|
|
67
|
+
const arr = JSON.parse(String(raw));
|
|
68
|
+
const first = arr[0];
|
|
69
|
+
return { [key]: first == null ? null : typeof first === 'object' ? JSON.stringify(first) : first };
|
|
70
|
+
}
|
|
71
|
+
catch {
|
|
72
|
+
return { [key]: raw };
|
|
73
|
+
}
|
|
74
|
+
},
|
|
75
|
+
};
|
|
76
|
+
}
|
|
77
|
+
function isJsonArray(v) {
|
|
78
|
+
return typeof v === 'string' && v.trimStart().startsWith('[');
|
|
79
|
+
}
|
package/dist/fields.d.ts
CHANGED
|
@@ -105,6 +105,7 @@ export interface FieldClient {
|
|
|
105
105
|
export declare function group(o: {
|
|
106
106
|
key?: string;
|
|
107
107
|
label?: string;
|
|
108
|
+
icon?: string;
|
|
108
109
|
fields: LayoutEl[];
|
|
109
110
|
multiple?: boolean;
|
|
110
111
|
required?: boolean;
|
|
@@ -115,34 +116,27 @@ export declare function group(o: {
|
|
|
115
116
|
view?: {
|
|
116
117
|
display?: GroupDisplay;
|
|
117
118
|
kind?: string;
|
|
118
|
-
icon?: string;
|
|
119
119
|
};
|
|
120
120
|
}): GroupEl;
|
|
121
121
|
export declare function row(o: {
|
|
122
122
|
label?: string;
|
|
123
|
+
icon?: string;
|
|
123
124
|
fields: LayoutEl[];
|
|
124
|
-
view?: {
|
|
125
|
-
icon?: string;
|
|
126
|
-
};
|
|
127
125
|
}): GroupEl;
|
|
128
126
|
export declare function table(o: {
|
|
129
127
|
key: string;
|
|
130
128
|
label: string;
|
|
129
|
+
icon?: string;
|
|
131
130
|
fields: LayoutEl[];
|
|
132
131
|
rules?: {
|
|
133
132
|
unique?: string[];
|
|
134
133
|
};
|
|
135
134
|
required?: boolean;
|
|
136
|
-
view?: {
|
|
137
|
-
icon?: string;
|
|
138
|
-
};
|
|
139
135
|
}): GroupEl;
|
|
140
136
|
export declare function sheet(o: {
|
|
141
137
|
label?: string;
|
|
138
|
+
icon?: string;
|
|
142
139
|
fields: LayoutEl[][];
|
|
143
|
-
view?: {
|
|
144
|
-
icon?: string;
|
|
145
|
-
};
|
|
146
140
|
}): GroupEl;
|
|
147
141
|
export declare function url(o: {
|
|
148
142
|
key: string;
|
|
@@ -153,15 +147,13 @@ type ContainerFactory = typeof row | typeof group | typeof table;
|
|
|
153
147
|
export declare function keyed(o: {
|
|
154
148
|
key: string;
|
|
155
149
|
label: string;
|
|
150
|
+
icon?: string;
|
|
156
151
|
container?: ContainerFactory;
|
|
157
152
|
by: FieldItem;
|
|
158
153
|
fields: LayoutEl[];
|
|
159
154
|
fixed?: boolean;
|
|
160
155
|
unique?: string[];
|
|
161
156
|
required?: boolean;
|
|
162
|
-
view?: {
|
|
163
|
-
icon?: string;
|
|
164
|
-
};
|
|
165
157
|
}): GroupEl;
|
|
166
158
|
export declare const isStorageGroup: (g: GroupEl) => boolean;
|
|
167
159
|
export declare const isCollectionGroup: (g: GroupEl) => boolean;
|
|
@@ -208,6 +200,7 @@ export interface FieldMeta extends FieldClient {
|
|
|
208
200
|
export declare function isJsonStored(field: FieldMeta | FieldClient): boolean;
|
|
209
201
|
export { LANGUAGES, SEX_OPTIONS, WEEKDAY_OPTIONS } from './fields/constants.ts';
|
|
210
202
|
export { parseUrl, buildUrl, hrefOf, type UrlValue } from './fields/url.ts';
|
|
203
|
+
export { URL_PARTS, urlToLink, linkToUrl, scalarToArray, arrayToScalar, type ColumnConversion, } from './fields/convert.ts';
|
|
211
204
|
export declare function applyMultiple(base: FieldMeta, multiple: boolean): FieldMeta;
|
|
212
205
|
export type StringOpts = FieldCoreOpts;
|
|
213
206
|
export declare function string(o: StringOpts & {
|
package/dist/fields.js
CHANGED
|
@@ -35,7 +35,7 @@ export function group(o) {
|
|
|
35
35
|
required: o.required,
|
|
36
36
|
unique: r.unique,
|
|
37
37
|
label: o.label,
|
|
38
|
-
icon:
|
|
38
|
+
icon: o.icon,
|
|
39
39
|
display: v.display ?? 'wrap',
|
|
40
40
|
kind: v.kind,
|
|
41
41
|
fixed: r.fixed,
|
|
@@ -43,17 +43,18 @@ export function group(o) {
|
|
|
43
43
|
};
|
|
44
44
|
}
|
|
45
45
|
export function row(o) {
|
|
46
|
-
return group({ label: o.label, fields: o.fields, view: {
|
|
46
|
+
return group({ label: o.label, icon: o.icon, fields: o.fields, view: { display: 'scroll' } });
|
|
47
47
|
}
|
|
48
48
|
export function table(o) {
|
|
49
49
|
return group({
|
|
50
50
|
key: o.key,
|
|
51
51
|
label: o.label,
|
|
52
|
+
icon: o.icon,
|
|
52
53
|
fields: o.fields,
|
|
53
54
|
multiple: true,
|
|
54
55
|
required: o.required,
|
|
55
56
|
rules: o.rules,
|
|
56
|
-
view: {
|
|
57
|
+
view: { display: 'table' },
|
|
57
58
|
});
|
|
58
59
|
}
|
|
59
60
|
export function sheet(o) {
|
|
@@ -63,7 +64,7 @@ export function sheet(o) {
|
|
|
63
64
|
flat.push(brk());
|
|
64
65
|
flat.push(...rowFields);
|
|
65
66
|
});
|
|
66
|
-
return group({ label: o.label, fields: flat, view: {
|
|
67
|
+
return group({ label: o.label, icon: o.icon, fields: flat, view: { display: 'sheet' } });
|
|
67
68
|
}
|
|
68
69
|
export function url(o) {
|
|
69
70
|
return group({
|
|
@@ -87,7 +88,7 @@ export function keyed(o) {
|
|
|
87
88
|
if (o.fixed && o.by.type.prim !== 'select')
|
|
88
89
|
throw new Error(`[field.keyed] fixed requires by=select (enumerated), got '${o.by.type.prim}'`);
|
|
89
90
|
const make = (o.container ?? group);
|
|
90
|
-
const g = make({ label: o.label, fields: [o.by, ...o.fields]
|
|
91
|
+
const g = make({ label: o.label, icon: o.icon, fields: [o.by, ...o.fields] });
|
|
91
92
|
return {
|
|
92
93
|
...g,
|
|
93
94
|
key: o.key,
|
|
@@ -139,6 +140,7 @@ export function isJsonStored(field) {
|
|
|
139
140
|
}
|
|
140
141
|
export { LANGUAGES, SEX_OPTIONS, WEEKDAY_OPTIONS } from "./fields/constants.js";
|
|
141
142
|
export { parseUrl, buildUrl, hrefOf } from "./fields/url.js";
|
|
143
|
+
export { URL_PARTS, urlToLink, linkToUrl, scalarToArray, arrayToScalar, } from "./fields/convert.js";
|
|
142
144
|
function resolveDate(v) {
|
|
143
145
|
return v === 'today' ? new Date().toISOString().slice(0, 10) : v;
|
|
144
146
|
}
|