founder-schema 0.16.0 → 0.18.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/README.md +263 -19
- package/dist/access/access.d.ts +1 -1
- package/dist/access/access.d.ts.map +1 -1
- package/dist/access/access.js +4 -1
- package/dist/access/access.js.map +1 -1
- package/dist/access/permissions.d.ts +27 -29
- package/dist/access/permissions.d.ts.map +1 -1
- package/dist/access/permissions.js +39 -3
- package/dist/access/permissions.js.map +1 -1
- package/dist/core/common.d.ts +117 -23
- package/dist/core/common.d.ts.map +1 -1
- package/dist/core/common.js +104 -21
- package/dist/core/common.js.map +1 -1
- package/dist/core/errors.d.ts +7 -5
- package/dist/core/errors.d.ts.map +1 -1
- package/dist/core/errors.js +17 -11
- package/dist/core/errors.js.map +1 -1
- package/dist/core/limits.d.ts +55 -17
- package/dist/core/limits.d.ts.map +1 -1
- package/dist/core/limits.js +59 -22
- package/dist/core/limits.js.map +1 -1
- package/dist/core/money.d.ts +33 -0
- package/dist/core/money.d.ts.map +1 -0
- package/dist/core/money.js +36 -0
- package/dist/core/money.js.map +1 -0
- package/dist/core/responses.d.ts +14 -4
- package/dist/core/responses.d.ts.map +1 -1
- package/dist/core/responses.js.map +1 -1
- package/dist/core/validation.d.ts +32 -2
- package/dist/core/validation.d.ts.map +1 -1
- package/dist/core/validation.js +32 -2
- package/dist/core/validation.js.map +1 -1
- package/dist/domains/billing/billing.d.ts +61 -8
- package/dist/domains/billing/billing.d.ts.map +1 -1
- package/dist/domains/billing/billing.js +58 -22
- package/dist/domains/billing/billing.js.map +1 -1
- package/dist/domains/billing/gst.d.ts.map +1 -1
- package/dist/domains/billing/gst.js +4 -3
- package/dist/domains/billing/gst.js.map +1 -1
- package/dist/domains/chat/chat.d.ts +0 -21
- package/dist/domains/chat/chat.d.ts.map +1 -1
- package/dist/domains/chat/chat.js +0 -20
- package/dist/domains/chat/chat.js.map +1 -1
- package/dist/domains/communities/communities.d.ts +30 -12
- package/dist/domains/communities/communities.d.ts.map +1 -1
- package/dist/domains/communities/communities.js +43 -15
- package/dist/domains/communities/communities.js.map +1 -1
- package/dist/domains/contributions/contributions.d.ts +1 -1
- package/dist/domains/contributions/contributions.js +1 -1
- package/dist/domains/contributions/contributions.js.map +1 -1
- package/dist/domains/dashboard/dashboard.d.ts +3 -1
- package/dist/domains/dashboard/dashboard.d.ts.map +1 -1
- package/dist/domains/dashboard/dashboard.js +23 -7
- package/dist/domains/dashboard/dashboard.js.map +1 -1
- package/dist/domains/discover/discover.d.ts +8 -8
- package/dist/domains/feed/feed.d.ts +55 -153
- package/dist/domains/feed/feed.d.ts.map +1 -1
- package/dist/domains/feed/feed.js +53 -58
- package/dist/domains/feed/feed.js.map +1 -1
- package/dist/domains/location/india.d.ts +215 -0
- package/dist/domains/location/india.d.ts.map +1 -0
- package/dist/domains/location/india.js +1203 -0
- package/dist/domains/location/india.js.map +1 -0
- package/dist/domains/members/members.d.ts +2 -2
- package/dist/domains/membership/membership.d.ts +26 -0
- package/dist/domains/membership/membership.d.ts.map +1 -1
- package/dist/domains/membership/membership.js +55 -1
- package/dist/domains/membership/membership.js.map +1 -1
- package/dist/domains/moderation/moderation.d.ts +2 -2
- package/dist/domains/moderation/moderation.js +3 -3
- package/dist/domains/moderation/moderation.js.map +1 -1
- package/dist/domains/notifications/notifications.d.ts +1 -10
- package/dist/domains/notifications/notifications.d.ts.map +1 -1
- package/dist/domains/notifications/notifications.js +2 -3
- package/dist/domains/notifications/notifications.js.map +1 -1
- package/dist/domains/onboarding/onboarding-answers.d.ts +112 -0
- package/dist/domains/onboarding/onboarding-answers.d.ts.map +1 -0
- package/dist/domains/onboarding/onboarding-answers.js +164 -0
- package/dist/domains/onboarding/onboarding-answers.js.map +1 -0
- package/dist/domains/onboarding/onboarding.d.ts +398 -62
- package/dist/domains/onboarding/onboarding.d.ts.map +1 -1
- package/dist/domains/onboarding/onboarding.js +229 -68
- package/dist/domains/onboarding/onboarding.js.map +1 -1
- package/dist/domains/products/products.d.ts +43 -8
- package/dist/domains/products/products.d.ts.map +1 -1
- package/dist/domains/products/products.js +57 -11
- package/dist/domains/products/products.js.map +1 -1
- package/dist/domains/profile/founder-profile.d.ts +120 -68
- package/dist/domains/profile/founder-profile.d.ts.map +1 -1
- package/dist/domains/profile/founder-profile.js +80 -29
- package/dist/domains/profile/founder-profile.js.map +1 -1
- package/dist/domains/profile/my-profile.d.ts +3 -3
- package/dist/domains/reviews/reviews.d.ts +1 -1
- package/dist/domains/reviews/reviews.d.ts.map +1 -1
- package/dist/domains/reviews/reviews.js +2 -2
- package/dist/domains/reviews/reviews.js.map +1 -1
- package/dist/domains/support/support.d.ts +22 -3
- package/dist/domains/support/support.d.ts.map +1 -1
- package/dist/domains/support/support.js +19 -5
- package/dist/domains/support/support.js.map +1 -1
- package/dist/domains/team/team.d.ts.map +1 -1
- package/dist/domains/team/team.js +3 -6
- package/dist/domains/team/team.js.map +1 -1
- package/dist/domains/uploads/uploads.d.ts +7 -22
- package/dist/domains/uploads/uploads.d.ts.map +1 -1
- package/dist/domains/uploads/uploads.js +7 -21
- package/dist/domains/uploads/uploads.js.map +1 -1
- package/dist/env.d.ts +26 -13
- package/dist/env.d.ts.map +1 -1
- package/dist/env.js +58 -23
- package/dist/env.js.map +1 -1
- package/dist/index.d.ts +18 -15
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +19 -14
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,1203 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* founder-schema — Where a founder is based: India's states, union territories
|
|
3
|
+
* and cities (0.17.0, moved here from the web client, where the location step's
|
|
4
|
+
* lists lived in the screen).
|
|
5
|
+
*
|
|
6
|
+
* Founder Circle is in India for now (the user, 2026-10-18: the country is
|
|
7
|
+
* shown locked to India and a state and city are chosen from lists). The RULE
|
|
8
|
+
* is `indiaLocationSchema` below; this file is its data, read by every side:
|
|
9
|
+
*
|
|
10
|
+
* states all 28 states and 8 union territories, by their current names: a
|
|
11
|
+
* CLOSED list, so a state is one of these or refused (`stateUnknown`)
|
|
12
|
+
* cities per state, the larger cities first, the rest A to Z. A HELP, NOT A
|
|
13
|
+
* RULE: the profile stores the city as text and Discover matches
|
|
14
|
+
* text, so the list spares members the typing and the spelling
|
|
15
|
+
* variants, and the picker also takes a town it does not hold
|
|
16
|
+
* aliases older or other names a member may search by ("Bangalore" finds
|
|
17
|
+
* Bengaluru), and the district names the location lookup answers
|
|
18
|
+
* with ("Bengaluru Urban"), so the server's suggestion and a member's
|
|
19
|
+
* search land on the list's own spelling
|
|
20
|
+
*
|
|
21
|
+
* Written for this product from public knowledge of India's cities; no
|
|
22
|
+
* third-party dataset is copied in.
|
|
23
|
+
*
|
|
24
|
+
* @module founder-schema/domains/location/india
|
|
25
|
+
*/
|
|
26
|
+
import { z } from 'zod';
|
|
27
|
+
import { CITY_MAX } from '../../core/limits.js';
|
|
28
|
+
import { VALIDATION_MESSAGE } from '../../core/validation.js';
|
|
29
|
+
/** The one country a location may be in, for now. */
|
|
30
|
+
export const INDIA = 'India';
|
|
31
|
+
/** India's international dialing code: what a phone number is shown with (the stored number has none). */
|
|
32
|
+
export const INDIA_DIALING_CODE = '+91';
|
|
33
|
+
export const INDIA_STATES = [
|
|
34
|
+
{
|
|
35
|
+
name: 'Andhra Pradesh',
|
|
36
|
+
cities: [
|
|
37
|
+
'Visakhapatnam',
|
|
38
|
+
'Vijayawada',
|
|
39
|
+
'Guntur',
|
|
40
|
+
'Nellore',
|
|
41
|
+
'Kurnool',
|
|
42
|
+
'Rajamahendravaram',
|
|
43
|
+
'Tirupati',
|
|
44
|
+
'Kakinada',
|
|
45
|
+
'Kadapa',
|
|
46
|
+
'Anantapur',
|
|
47
|
+
'Amaravati',
|
|
48
|
+
'Adoni',
|
|
49
|
+
'Bhimavaram',
|
|
50
|
+
'Chilakaluripet',
|
|
51
|
+
'Chittoor',
|
|
52
|
+
'Dharmavaram',
|
|
53
|
+
'Eluru',
|
|
54
|
+
'Gudivada',
|
|
55
|
+
'Guntakal',
|
|
56
|
+
'Hindupur',
|
|
57
|
+
'Machilipatnam',
|
|
58
|
+
'Madanapalle',
|
|
59
|
+
'Nandyal',
|
|
60
|
+
'Narasaraopet',
|
|
61
|
+
'Ongole',
|
|
62
|
+
'Proddatur',
|
|
63
|
+
'Puttaparthi',
|
|
64
|
+
'Srikakulam',
|
|
65
|
+
'Tadepalligudem',
|
|
66
|
+
'Tenali',
|
|
67
|
+
'Vizianagaram',
|
|
68
|
+
],
|
|
69
|
+
},
|
|
70
|
+
{
|
|
71
|
+
name: 'Arunachal Pradesh',
|
|
72
|
+
cities: [
|
|
73
|
+
'Itanagar',
|
|
74
|
+
'Naharlagun',
|
|
75
|
+
'Pasighat',
|
|
76
|
+
'Aalo',
|
|
77
|
+
'Bomdila',
|
|
78
|
+
'Changlang',
|
|
79
|
+
'Daporijo',
|
|
80
|
+
'Khonsa',
|
|
81
|
+
'Namsai',
|
|
82
|
+
'Roing',
|
|
83
|
+
'Seppa',
|
|
84
|
+
'Tawang',
|
|
85
|
+
'Tezu',
|
|
86
|
+
'Ziro',
|
|
87
|
+
],
|
|
88
|
+
},
|
|
89
|
+
{
|
|
90
|
+
name: 'Assam',
|
|
91
|
+
cities: [
|
|
92
|
+
'Guwahati',
|
|
93
|
+
'Dibrugarh',
|
|
94
|
+
'Silchar',
|
|
95
|
+
'Jorhat',
|
|
96
|
+
'Tezpur',
|
|
97
|
+
'Nagaon',
|
|
98
|
+
'Tinsukia',
|
|
99
|
+
'Barpeta',
|
|
100
|
+
'Bongaigaon',
|
|
101
|
+
'Dhubri',
|
|
102
|
+
'Diphu',
|
|
103
|
+
'Goalpara',
|
|
104
|
+
'Golaghat',
|
|
105
|
+
'Haflong',
|
|
106
|
+
'Hailakandi',
|
|
107
|
+
'Karimganj',
|
|
108
|
+
'Kokrajhar',
|
|
109
|
+
'Mangaldoi',
|
|
110
|
+
'Nalbari',
|
|
111
|
+
'North Lakhimpur',
|
|
112
|
+
'Sivasagar',
|
|
113
|
+
],
|
|
114
|
+
},
|
|
115
|
+
{
|
|
116
|
+
name: 'Bihar',
|
|
117
|
+
cities: [
|
|
118
|
+
'Patna',
|
|
119
|
+
'Gaya Ji',
|
|
120
|
+
'Bhagalpur',
|
|
121
|
+
'Muzaffarpur',
|
|
122
|
+
'Darbhanga',
|
|
123
|
+
'Purnia',
|
|
124
|
+
'Arrah',
|
|
125
|
+
'Aurangabad',
|
|
126
|
+
'Begusarai',
|
|
127
|
+
'Bettiah',
|
|
128
|
+
'Bihar Sharif',
|
|
129
|
+
'Bodh Gaya',
|
|
130
|
+
'Buxar',
|
|
131
|
+
'Chapra',
|
|
132
|
+
'Dehri',
|
|
133
|
+
'Hajipur',
|
|
134
|
+
'Jamalpur',
|
|
135
|
+
'Jehanabad',
|
|
136
|
+
'Katihar',
|
|
137
|
+
'Kishanganj',
|
|
138
|
+
'Motihari',
|
|
139
|
+
'Munger',
|
|
140
|
+
'Nawada',
|
|
141
|
+
'Saharsa',
|
|
142
|
+
'Sasaram',
|
|
143
|
+
'Sitamarhi',
|
|
144
|
+
'Siwan',
|
|
145
|
+
],
|
|
146
|
+
},
|
|
147
|
+
{
|
|
148
|
+
name: 'Chhattisgarh',
|
|
149
|
+
cities: [
|
|
150
|
+
'Raipur',
|
|
151
|
+
'Bhilai',
|
|
152
|
+
'Bilaspur',
|
|
153
|
+
'Korba',
|
|
154
|
+
'Durg',
|
|
155
|
+
'Ambikapur',
|
|
156
|
+
'Bhatapara',
|
|
157
|
+
'Chirmiri',
|
|
158
|
+
'Dhamtari',
|
|
159
|
+
'Jagdalpur',
|
|
160
|
+
'Janjgir',
|
|
161
|
+
'Kanker',
|
|
162
|
+
'Mahasamund',
|
|
163
|
+
'Nava Raipur',
|
|
164
|
+
'Raigarh',
|
|
165
|
+
'Rajnandgaon',
|
|
166
|
+
],
|
|
167
|
+
},
|
|
168
|
+
{
|
|
169
|
+
name: 'Goa',
|
|
170
|
+
cities: [
|
|
171
|
+
'Panaji',
|
|
172
|
+
'Margao',
|
|
173
|
+
'Vasco da Gama',
|
|
174
|
+
'Mapusa',
|
|
175
|
+
'Ponda',
|
|
176
|
+
'Bicholim',
|
|
177
|
+
'Canacona',
|
|
178
|
+
'Curchorem',
|
|
179
|
+
'Pernem',
|
|
180
|
+
'Porvorim',
|
|
181
|
+
'Quepem',
|
|
182
|
+
'Sanguem',
|
|
183
|
+
'Valpoi',
|
|
184
|
+
],
|
|
185
|
+
},
|
|
186
|
+
{
|
|
187
|
+
name: 'Gujarat',
|
|
188
|
+
cities: [
|
|
189
|
+
'Ahmedabad',
|
|
190
|
+
'Surat',
|
|
191
|
+
'Vadodara',
|
|
192
|
+
'Rajkot',
|
|
193
|
+
'Gandhinagar',
|
|
194
|
+
'Bhavnagar',
|
|
195
|
+
'Jamnagar',
|
|
196
|
+
'Junagadh',
|
|
197
|
+
'Amreli',
|
|
198
|
+
'Anand',
|
|
199
|
+
'Ankleshwar',
|
|
200
|
+
'Bharuch',
|
|
201
|
+
'Bhuj',
|
|
202
|
+
'Botad',
|
|
203
|
+
'Dahod',
|
|
204
|
+
'Deesa',
|
|
205
|
+
'Gandhidham',
|
|
206
|
+
'Godhra',
|
|
207
|
+
'Himmatnagar',
|
|
208
|
+
'Kalol',
|
|
209
|
+
'Mehsana',
|
|
210
|
+
'Morbi',
|
|
211
|
+
'Nadiad',
|
|
212
|
+
'Navsari',
|
|
213
|
+
'Palanpur',
|
|
214
|
+
'Patan',
|
|
215
|
+
'Porbandar',
|
|
216
|
+
'Surendranagar',
|
|
217
|
+
'Valsad',
|
|
218
|
+
'Vapi',
|
|
219
|
+
'Veraval',
|
|
220
|
+
],
|
|
221
|
+
},
|
|
222
|
+
{
|
|
223
|
+
name: 'Haryana',
|
|
224
|
+
cities: [
|
|
225
|
+
'Gurugram',
|
|
226
|
+
'Faridabad',
|
|
227
|
+
'Panipat',
|
|
228
|
+
'Ambala',
|
|
229
|
+
'Karnal',
|
|
230
|
+
'Rohtak',
|
|
231
|
+
'Hisar',
|
|
232
|
+
'Sonipat',
|
|
233
|
+
'Panchkula',
|
|
234
|
+
'Bahadurgarh',
|
|
235
|
+
'Bhiwani',
|
|
236
|
+
'Charkhi Dadri',
|
|
237
|
+
'Fatehabad',
|
|
238
|
+
'Hansi',
|
|
239
|
+
'Jhajjar',
|
|
240
|
+
'Jind',
|
|
241
|
+
'Kaithal',
|
|
242
|
+
'Kurukshetra',
|
|
243
|
+
'Manesar',
|
|
244
|
+
'Narnaul',
|
|
245
|
+
'Nuh',
|
|
246
|
+
'Palwal',
|
|
247
|
+
'Rewari',
|
|
248
|
+
'Sirsa',
|
|
249
|
+
'Yamunanagar',
|
|
250
|
+
],
|
|
251
|
+
},
|
|
252
|
+
{
|
|
253
|
+
name: 'Himachal Pradesh',
|
|
254
|
+
cities: [
|
|
255
|
+
'Shimla',
|
|
256
|
+
'Dharamshala',
|
|
257
|
+
'Solan',
|
|
258
|
+
'Mandi',
|
|
259
|
+
'Baddi',
|
|
260
|
+
'Bilaspur',
|
|
261
|
+
'Chamba',
|
|
262
|
+
'Hamirpur',
|
|
263
|
+
'Kangra',
|
|
264
|
+
'Keylong',
|
|
265
|
+
'Kullu',
|
|
266
|
+
'Manali',
|
|
267
|
+
'Nahan',
|
|
268
|
+
'Palampur',
|
|
269
|
+
'Paonta Sahib',
|
|
270
|
+
'Reckong Peo',
|
|
271
|
+
'Sundernagar',
|
|
272
|
+
'Una',
|
|
273
|
+
],
|
|
274
|
+
},
|
|
275
|
+
{
|
|
276
|
+
name: 'Jharkhand',
|
|
277
|
+
cities: [
|
|
278
|
+
'Ranchi',
|
|
279
|
+
'Jamshedpur',
|
|
280
|
+
'Dhanbad',
|
|
281
|
+
'Bokaro',
|
|
282
|
+
'Deoghar',
|
|
283
|
+
'Hazaribagh',
|
|
284
|
+
'Adityapur',
|
|
285
|
+
'Chaibasa',
|
|
286
|
+
'Chatra',
|
|
287
|
+
'Dumka',
|
|
288
|
+
'Garhwa',
|
|
289
|
+
'Giridih',
|
|
290
|
+
'Godda',
|
|
291
|
+
'Gumla',
|
|
292
|
+
'Jamtara',
|
|
293
|
+
'Khunti',
|
|
294
|
+
'Koderma',
|
|
295
|
+
'Latehar',
|
|
296
|
+
'Lohardaga',
|
|
297
|
+
'Medininagar',
|
|
298
|
+
'Pakur',
|
|
299
|
+
'Phusro',
|
|
300
|
+
'Ramgarh',
|
|
301
|
+
'Sahibganj',
|
|
302
|
+
'Saraikela',
|
|
303
|
+
'Simdega',
|
|
304
|
+
],
|
|
305
|
+
},
|
|
306
|
+
{
|
|
307
|
+
name: 'Karnataka',
|
|
308
|
+
cities: [
|
|
309
|
+
'Bengaluru',
|
|
310
|
+
'Mysuru',
|
|
311
|
+
'Mangaluru',
|
|
312
|
+
'Hubballi',
|
|
313
|
+
'Dharwad',
|
|
314
|
+
'Belagavi',
|
|
315
|
+
'Kalaburagi',
|
|
316
|
+
'Davanagere',
|
|
317
|
+
'Bagalkot',
|
|
318
|
+
'Ballari',
|
|
319
|
+
'Bidar',
|
|
320
|
+
'Chamarajanagar',
|
|
321
|
+
'Chikkaballapur',
|
|
322
|
+
'Chikkamagaluru',
|
|
323
|
+
'Chitradurga',
|
|
324
|
+
'Gadag',
|
|
325
|
+
'Hassan',
|
|
326
|
+
'Haveri',
|
|
327
|
+
'Hosapete',
|
|
328
|
+
'Karwar',
|
|
329
|
+
'Kolar',
|
|
330
|
+
'Koppal',
|
|
331
|
+
'Madikeri',
|
|
332
|
+
'Mandya',
|
|
333
|
+
'Manipal',
|
|
334
|
+
'Raichur',
|
|
335
|
+
'Ramanagara',
|
|
336
|
+
'Shivamogga',
|
|
337
|
+
'Tumakuru',
|
|
338
|
+
'Udupi',
|
|
339
|
+
'Vijayapura',
|
|
340
|
+
'Yadgir',
|
|
341
|
+
],
|
|
342
|
+
},
|
|
343
|
+
{
|
|
344
|
+
name: 'Kerala',
|
|
345
|
+
cities: [
|
|
346
|
+
'Thiruvananthapuram',
|
|
347
|
+
'Kochi',
|
|
348
|
+
'Kozhikode',
|
|
349
|
+
'Thrissur',
|
|
350
|
+
'Kollam',
|
|
351
|
+
'Kannur',
|
|
352
|
+
'Alappuzha',
|
|
353
|
+
'Palakkad',
|
|
354
|
+
'Kottayam',
|
|
355
|
+
'Malappuram',
|
|
356
|
+
'Aluva',
|
|
357
|
+
'Changanassery',
|
|
358
|
+
'Guruvayur',
|
|
359
|
+
'Kalpetta',
|
|
360
|
+
'Kanhangad',
|
|
361
|
+
'Kasaragod',
|
|
362
|
+
'Kayamkulam',
|
|
363
|
+
'Manjeri',
|
|
364
|
+
'Munnar',
|
|
365
|
+
'Pathanamthitta',
|
|
366
|
+
'Perinthalmanna',
|
|
367
|
+
'Ponnani',
|
|
368
|
+
'Thalassery',
|
|
369
|
+
'Thodupuzha',
|
|
370
|
+
'Tirur',
|
|
371
|
+
'Vatakara',
|
|
372
|
+
],
|
|
373
|
+
},
|
|
374
|
+
{
|
|
375
|
+
name: 'Madhya Pradesh',
|
|
376
|
+
cities: [
|
|
377
|
+
'Indore',
|
|
378
|
+
'Bhopal',
|
|
379
|
+
'Jabalpur',
|
|
380
|
+
'Gwalior',
|
|
381
|
+
'Ujjain',
|
|
382
|
+
'Sagar',
|
|
383
|
+
'Dewas',
|
|
384
|
+
'Satna',
|
|
385
|
+
'Ratlam',
|
|
386
|
+
'Rewa',
|
|
387
|
+
'Agar',
|
|
388
|
+
'Anuppur',
|
|
389
|
+
'Ashoknagar',
|
|
390
|
+
'Balaghat',
|
|
391
|
+
'Barwani',
|
|
392
|
+
'Betul',
|
|
393
|
+
'Bhind',
|
|
394
|
+
'Burhanpur',
|
|
395
|
+
'Chhatarpur',
|
|
396
|
+
'Chhindwara',
|
|
397
|
+
'Damoh',
|
|
398
|
+
'Datia',
|
|
399
|
+
'Dhar',
|
|
400
|
+
'Dindori',
|
|
401
|
+
'Guna',
|
|
402
|
+
'Itarsi',
|
|
403
|
+
'Jhabua',
|
|
404
|
+
'Katni',
|
|
405
|
+
'Khandwa',
|
|
406
|
+
'Khargone',
|
|
407
|
+
'Mandla',
|
|
408
|
+
'Mandsaur',
|
|
409
|
+
'Morena',
|
|
410
|
+
'Narmadapuram',
|
|
411
|
+
'Neemuch',
|
|
412
|
+
'Panna',
|
|
413
|
+
'Pithampur',
|
|
414
|
+
'Rajgarh',
|
|
415
|
+
'Sehore',
|
|
416
|
+
'Seoni',
|
|
417
|
+
'Shahdol',
|
|
418
|
+
'Shajapur',
|
|
419
|
+
'Shivpuri',
|
|
420
|
+
'Sidhi',
|
|
421
|
+
'Singrauli',
|
|
422
|
+
'Tikamgarh',
|
|
423
|
+
'Umaria',
|
|
424
|
+
'Vidisha',
|
|
425
|
+
],
|
|
426
|
+
},
|
|
427
|
+
{
|
|
428
|
+
name: 'Maharashtra',
|
|
429
|
+
cities: [
|
|
430
|
+
'Mumbai',
|
|
431
|
+
'Pune',
|
|
432
|
+
'Nagpur',
|
|
433
|
+
'Thane',
|
|
434
|
+
'Navi Mumbai',
|
|
435
|
+
'Nashik',
|
|
436
|
+
'Chhatrapati Sambhajinagar',
|
|
437
|
+
'Solapur',
|
|
438
|
+
'Kolhapur',
|
|
439
|
+
'Pimpri-Chinchwad',
|
|
440
|
+
'Ahilyanagar',
|
|
441
|
+
'Akola',
|
|
442
|
+
'Alibag',
|
|
443
|
+
'Amravati',
|
|
444
|
+
'Baramati',
|
|
445
|
+
'Beed',
|
|
446
|
+
'Bhandara',
|
|
447
|
+
'Bhiwandi',
|
|
448
|
+
'Buldhana',
|
|
449
|
+
'Chandrapur',
|
|
450
|
+
'Dharashiv',
|
|
451
|
+
'Dhule',
|
|
452
|
+
'Gadchiroli',
|
|
453
|
+
'Gondia',
|
|
454
|
+
'Hingoli',
|
|
455
|
+
'Ichalkaranji',
|
|
456
|
+
'Jalgaon',
|
|
457
|
+
'Jalna',
|
|
458
|
+
'Kalyan',
|
|
459
|
+
'Latur',
|
|
460
|
+
'Lonavala',
|
|
461
|
+
'Malegaon',
|
|
462
|
+
'Mira-Bhayandar',
|
|
463
|
+
'Nanded',
|
|
464
|
+
'Nandurbar',
|
|
465
|
+
'Palghar',
|
|
466
|
+
'Panvel',
|
|
467
|
+
'Parbhani',
|
|
468
|
+
'Ratnagiri',
|
|
469
|
+
'Sangli',
|
|
470
|
+
'Satara',
|
|
471
|
+
'Ulhasnagar',
|
|
472
|
+
'Vasai-Virar',
|
|
473
|
+
'Wardha',
|
|
474
|
+
'Washim',
|
|
475
|
+
'Yavatmal',
|
|
476
|
+
],
|
|
477
|
+
},
|
|
478
|
+
{
|
|
479
|
+
name: 'Manipur',
|
|
480
|
+
cities: [
|
|
481
|
+
'Imphal',
|
|
482
|
+
'Thoubal',
|
|
483
|
+
'Bishnupur',
|
|
484
|
+
'Chandel',
|
|
485
|
+
'Churachandpur',
|
|
486
|
+
'Jiribam',
|
|
487
|
+
'Kakching',
|
|
488
|
+
'Moreh',
|
|
489
|
+
'Senapati',
|
|
490
|
+
'Tamenglong',
|
|
491
|
+
'Ukhrul',
|
|
492
|
+
],
|
|
493
|
+
},
|
|
494
|
+
{
|
|
495
|
+
name: 'Meghalaya',
|
|
496
|
+
cities: [
|
|
497
|
+
'Shillong',
|
|
498
|
+
'Tura',
|
|
499
|
+
'Jowai',
|
|
500
|
+
'Baghmara',
|
|
501
|
+
'Mairang',
|
|
502
|
+
'Nongpoh',
|
|
503
|
+
'Nongstoin',
|
|
504
|
+
'Resubelpara',
|
|
505
|
+
'Sohra',
|
|
506
|
+
'Williamnagar',
|
|
507
|
+
],
|
|
508
|
+
},
|
|
509
|
+
{
|
|
510
|
+
name: 'Mizoram',
|
|
511
|
+
cities: [
|
|
512
|
+
'Aizawl',
|
|
513
|
+
'Lunglei',
|
|
514
|
+
'Champhai',
|
|
515
|
+
'Hnahthial',
|
|
516
|
+
'Khawzawl',
|
|
517
|
+
'Kolasib',
|
|
518
|
+
'Lawngtlai',
|
|
519
|
+
'Mamit',
|
|
520
|
+
'Saitual',
|
|
521
|
+
'Serchhip',
|
|
522
|
+
'Siaha',
|
|
523
|
+
],
|
|
524
|
+
},
|
|
525
|
+
{
|
|
526
|
+
name: 'Nagaland',
|
|
527
|
+
cities: [
|
|
528
|
+
'Kohima',
|
|
529
|
+
'Dimapur',
|
|
530
|
+
'Mokokchung',
|
|
531
|
+
'Chumoukedima',
|
|
532
|
+
'Kiphire',
|
|
533
|
+
'Longleng',
|
|
534
|
+
'Mon',
|
|
535
|
+
'Niuland',
|
|
536
|
+
'Noklak',
|
|
537
|
+
'Peren',
|
|
538
|
+
'Phek',
|
|
539
|
+
'Shamator',
|
|
540
|
+
'Tseminyu',
|
|
541
|
+
'Tuensang',
|
|
542
|
+
'Wokha',
|
|
543
|
+
'Zunheboto',
|
|
544
|
+
],
|
|
545
|
+
},
|
|
546
|
+
{
|
|
547
|
+
name: 'Odisha',
|
|
548
|
+
aliases: ['Orissa'],
|
|
549
|
+
cities: [
|
|
550
|
+
'Bhubaneswar',
|
|
551
|
+
'Cuttack',
|
|
552
|
+
'Rourkela',
|
|
553
|
+
'Berhampur',
|
|
554
|
+
'Sambalpur',
|
|
555
|
+
'Puri',
|
|
556
|
+
'Balasore',
|
|
557
|
+
'Angul',
|
|
558
|
+
'Balangir',
|
|
559
|
+
'Bargarh',
|
|
560
|
+
'Baripada',
|
|
561
|
+
'Bhadrak',
|
|
562
|
+
'Bhawanipatna',
|
|
563
|
+
'Dhenkanal',
|
|
564
|
+
'Jagatsinghpur',
|
|
565
|
+
'Jajpur',
|
|
566
|
+
'Jeypore',
|
|
567
|
+
'Jharsuguda',
|
|
568
|
+
'Kendrapara',
|
|
569
|
+
'Keonjhar',
|
|
570
|
+
'Khordha',
|
|
571
|
+
'Koraput',
|
|
572
|
+
'Malkangiri',
|
|
573
|
+
'Nabarangpur',
|
|
574
|
+
'Nayagarh',
|
|
575
|
+
'Paradip',
|
|
576
|
+
'Phulbani',
|
|
577
|
+
'Rayagada',
|
|
578
|
+
'Sundargarh',
|
|
579
|
+
'Talcher',
|
|
580
|
+
],
|
|
581
|
+
},
|
|
582
|
+
{
|
|
583
|
+
name: 'Punjab',
|
|
584
|
+
cities: [
|
|
585
|
+
'Ludhiana',
|
|
586
|
+
'Amritsar',
|
|
587
|
+
'Jalandhar',
|
|
588
|
+
'Patiala',
|
|
589
|
+
'Mohali',
|
|
590
|
+
'Bathinda',
|
|
591
|
+
'Abohar',
|
|
592
|
+
'Barnala',
|
|
593
|
+
'Batala',
|
|
594
|
+
'Faridkot',
|
|
595
|
+
'Fazilka',
|
|
596
|
+
'Firozpur',
|
|
597
|
+
'Gurdaspur',
|
|
598
|
+
'Hoshiarpur',
|
|
599
|
+
'Kapurthala',
|
|
600
|
+
'Khanna',
|
|
601
|
+
'Malerkotla',
|
|
602
|
+
'Mansa',
|
|
603
|
+
'Moga',
|
|
604
|
+
'Muktsar',
|
|
605
|
+
'Nawanshahr',
|
|
606
|
+
'Pathankot',
|
|
607
|
+
'Phagwara',
|
|
608
|
+
'Rajpura',
|
|
609
|
+
'Rupnagar',
|
|
610
|
+
'Sangrur',
|
|
611
|
+
'Tarn Taran',
|
|
612
|
+
'Zirakpur',
|
|
613
|
+
],
|
|
614
|
+
},
|
|
615
|
+
{
|
|
616
|
+
name: 'Rajasthan',
|
|
617
|
+
cities: [
|
|
618
|
+
'Jaipur',
|
|
619
|
+
'Jodhpur',
|
|
620
|
+
'Kota',
|
|
621
|
+
'Udaipur',
|
|
622
|
+
'Bikaner',
|
|
623
|
+
'Ajmer',
|
|
624
|
+
'Alwar',
|
|
625
|
+
'Bhilwara',
|
|
626
|
+
'Banswara',
|
|
627
|
+
'Baran',
|
|
628
|
+
'Barmer',
|
|
629
|
+
'Beawar',
|
|
630
|
+
'Bharatpur',
|
|
631
|
+
'Bhiwadi',
|
|
632
|
+
'Bundi',
|
|
633
|
+
'Chittorgarh',
|
|
634
|
+
'Churu',
|
|
635
|
+
'Dausa',
|
|
636
|
+
'Dhaulpur',
|
|
637
|
+
'Dungarpur',
|
|
638
|
+
'Gangapur City',
|
|
639
|
+
'Hanumangarh',
|
|
640
|
+
'Jaisalmer',
|
|
641
|
+
'Jalore',
|
|
642
|
+
'Jhalawar',
|
|
643
|
+
'Jhunjhunu',
|
|
644
|
+
'Karauli',
|
|
645
|
+
'Kishangarh',
|
|
646
|
+
'Mount Abu',
|
|
647
|
+
'Nagaur',
|
|
648
|
+
'Neemrana',
|
|
649
|
+
'Pali',
|
|
650
|
+
'Pratapgarh',
|
|
651
|
+
'Rajsamand',
|
|
652
|
+
'Sawai Madhopur',
|
|
653
|
+
'Sikar',
|
|
654
|
+
'Sirohi',
|
|
655
|
+
'Sri Ganganagar',
|
|
656
|
+
'Tonk',
|
|
657
|
+
],
|
|
658
|
+
},
|
|
659
|
+
{
|
|
660
|
+
name: 'Sikkim',
|
|
661
|
+
cities: [
|
|
662
|
+
'Gangtok',
|
|
663
|
+
'Namchi',
|
|
664
|
+
'Gyalshing',
|
|
665
|
+
'Jorethang',
|
|
666
|
+
'Mangan',
|
|
667
|
+
'Pakyong',
|
|
668
|
+
'Rangpo',
|
|
669
|
+
'Ravangla',
|
|
670
|
+
'Singtam',
|
|
671
|
+
'Soreng',
|
|
672
|
+
],
|
|
673
|
+
},
|
|
674
|
+
{
|
|
675
|
+
name: 'Tamil Nadu',
|
|
676
|
+
cities: [
|
|
677
|
+
'Chennai',
|
|
678
|
+
'Coimbatore',
|
|
679
|
+
'Madurai',
|
|
680
|
+
'Tiruchirappalli',
|
|
681
|
+
'Salem',
|
|
682
|
+
'Tiruppur',
|
|
683
|
+
'Erode',
|
|
684
|
+
'Tirunelveli',
|
|
685
|
+
'Vellore',
|
|
686
|
+
'Hosur',
|
|
687
|
+
'Ambur',
|
|
688
|
+
'Ariyalur',
|
|
689
|
+
'Chengalpattu',
|
|
690
|
+
'Cuddalore',
|
|
691
|
+
'Dharmapuri',
|
|
692
|
+
'Dindigul',
|
|
693
|
+
'Gudiyatham',
|
|
694
|
+
'Kallakurichi',
|
|
695
|
+
'Kanchipuram',
|
|
696
|
+
'Kanyakumari',
|
|
697
|
+
'Karaikudi',
|
|
698
|
+
'Karur',
|
|
699
|
+
'Krishnagiri',
|
|
700
|
+
'Kumbakonam',
|
|
701
|
+
'Mayiladuthurai',
|
|
702
|
+
'Nagapattinam',
|
|
703
|
+
'Nagercoil',
|
|
704
|
+
'Namakkal',
|
|
705
|
+
'Ooty',
|
|
706
|
+
'Perambalur',
|
|
707
|
+
'Pollachi',
|
|
708
|
+
'Pudukkottai',
|
|
709
|
+
'Rajapalayam',
|
|
710
|
+
'Ramanathapuram',
|
|
711
|
+
'Ranipet',
|
|
712
|
+
'Sivaganga',
|
|
713
|
+
'Sivakasi',
|
|
714
|
+
'Tenkasi',
|
|
715
|
+
'Thanjavur',
|
|
716
|
+
'Theni',
|
|
717
|
+
'Thoothukudi',
|
|
718
|
+
'Tirupattur',
|
|
719
|
+
'Tiruvallur',
|
|
720
|
+
'Tiruvannamalai',
|
|
721
|
+
'Tiruvarur',
|
|
722
|
+
'Viluppuram',
|
|
723
|
+
'Virudhunagar',
|
|
724
|
+
],
|
|
725
|
+
},
|
|
726
|
+
{
|
|
727
|
+
name: 'Telangana',
|
|
728
|
+
cities: [
|
|
729
|
+
'Hyderabad',
|
|
730
|
+
'Warangal',
|
|
731
|
+
'Nizamabad',
|
|
732
|
+
'Karimnagar',
|
|
733
|
+
'Khammam',
|
|
734
|
+
'Secunderabad',
|
|
735
|
+
'Adilabad',
|
|
736
|
+
'Bhongir',
|
|
737
|
+
'Jagtial',
|
|
738
|
+
'Kamareddy',
|
|
739
|
+
'Kothagudem',
|
|
740
|
+
'Mahbubnagar',
|
|
741
|
+
'Mancherial',
|
|
742
|
+
'Medak',
|
|
743
|
+
'Miryalaguda',
|
|
744
|
+
'Nalgonda',
|
|
745
|
+
'Nirmal',
|
|
746
|
+
'Ramagundam',
|
|
747
|
+
'Sangareddy',
|
|
748
|
+
'Siddipet',
|
|
749
|
+
'Suryapet',
|
|
750
|
+
'Vikarabad',
|
|
751
|
+
'Wanaparthy',
|
|
752
|
+
'Zahirabad',
|
|
753
|
+
],
|
|
754
|
+
},
|
|
755
|
+
{
|
|
756
|
+
name: 'Tripura',
|
|
757
|
+
cities: [
|
|
758
|
+
'Agartala',
|
|
759
|
+
'Dharmanagar',
|
|
760
|
+
'Udaipur',
|
|
761
|
+
'Ambassa',
|
|
762
|
+
'Belonia',
|
|
763
|
+
'Bishalgarh',
|
|
764
|
+
'Kailashahar',
|
|
765
|
+
'Kamalpur',
|
|
766
|
+
'Khowai',
|
|
767
|
+
'Sabroom',
|
|
768
|
+
'Sonamura',
|
|
769
|
+
'Teliamura',
|
|
770
|
+
],
|
|
771
|
+
},
|
|
772
|
+
{
|
|
773
|
+
name: 'Uttar Pradesh',
|
|
774
|
+
cities: [
|
|
775
|
+
'Lucknow',
|
|
776
|
+
'Kanpur',
|
|
777
|
+
'Noida',
|
|
778
|
+
'Ghaziabad',
|
|
779
|
+
'Agra',
|
|
780
|
+
'Varanasi',
|
|
781
|
+
'Prayagraj',
|
|
782
|
+
'Meerut',
|
|
783
|
+
'Greater Noida',
|
|
784
|
+
'Bareilly',
|
|
785
|
+
'Aligarh',
|
|
786
|
+
'Moradabad',
|
|
787
|
+
'Gorakhpur',
|
|
788
|
+
'Amroha',
|
|
789
|
+
'Ayodhya',
|
|
790
|
+
'Azamgarh',
|
|
791
|
+
'Bahraich',
|
|
792
|
+
'Ballia',
|
|
793
|
+
'Banda',
|
|
794
|
+
'Barabanki',
|
|
795
|
+
'Basti',
|
|
796
|
+
'Bulandshahr',
|
|
797
|
+
'Chandausi',
|
|
798
|
+
'Deoria',
|
|
799
|
+
'Etah',
|
|
800
|
+
'Etawah',
|
|
801
|
+
'Farrukhabad',
|
|
802
|
+
'Fatehpur',
|
|
803
|
+
'Firozabad',
|
|
804
|
+
'Gonda',
|
|
805
|
+
'Hapur',
|
|
806
|
+
'Hardoi',
|
|
807
|
+
'Hathras',
|
|
808
|
+
'Jaunpur',
|
|
809
|
+
'Jhansi',
|
|
810
|
+
'Kasganj',
|
|
811
|
+
'Lakhimpur',
|
|
812
|
+
'Lalitpur',
|
|
813
|
+
'Mainpuri',
|
|
814
|
+
'Mathura',
|
|
815
|
+
'Mau',
|
|
816
|
+
'Mirzapur',
|
|
817
|
+
'Modinagar',
|
|
818
|
+
'Muzaffarnagar',
|
|
819
|
+
'Orai',
|
|
820
|
+
'Pilibhit',
|
|
821
|
+
'Raebareli',
|
|
822
|
+
'Rampur',
|
|
823
|
+
'Saharanpur',
|
|
824
|
+
'Sambhal',
|
|
825
|
+
'Shahjahanpur',
|
|
826
|
+
'Sitapur',
|
|
827
|
+
'Sultanpur',
|
|
828
|
+
'Unnao',
|
|
829
|
+
'Vrindavan',
|
|
830
|
+
],
|
|
831
|
+
},
|
|
832
|
+
{
|
|
833
|
+
name: 'Uttarakhand',
|
|
834
|
+
aliases: ['Uttaranchal'],
|
|
835
|
+
cities: [
|
|
836
|
+
'Dehradun',
|
|
837
|
+
'Haridwar',
|
|
838
|
+
'Roorkee',
|
|
839
|
+
'Haldwani',
|
|
840
|
+
'Rudrapur',
|
|
841
|
+
'Kashipur',
|
|
842
|
+
'Rishikesh',
|
|
843
|
+
'Almora',
|
|
844
|
+
'Bageshwar',
|
|
845
|
+
'Champawat',
|
|
846
|
+
'Gopeshwar',
|
|
847
|
+
'Khatima',
|
|
848
|
+
'Kotdwar',
|
|
849
|
+
'Mussoorie',
|
|
850
|
+
'Nainital',
|
|
851
|
+
'Pauri',
|
|
852
|
+
'Pithoragarh',
|
|
853
|
+
'Ramnagar',
|
|
854
|
+
'Rudraprayag',
|
|
855
|
+
'Sitarganj',
|
|
856
|
+
'Srinagar',
|
|
857
|
+
'Tehri',
|
|
858
|
+
'Uttarkashi',
|
|
859
|
+
],
|
|
860
|
+
},
|
|
861
|
+
{
|
|
862
|
+
name: 'West Bengal',
|
|
863
|
+
cities: [
|
|
864
|
+
'Kolkata',
|
|
865
|
+
'Howrah',
|
|
866
|
+
'Siliguri',
|
|
867
|
+
'Durgapur',
|
|
868
|
+
'Asansol',
|
|
869
|
+
'Bardhaman',
|
|
870
|
+
'Bidhannagar',
|
|
871
|
+
'New Town',
|
|
872
|
+
'Kharagpur',
|
|
873
|
+
'Haldia',
|
|
874
|
+
'Alipurduar',
|
|
875
|
+
'Baharampur',
|
|
876
|
+
'Balurghat',
|
|
877
|
+
'Bally',
|
|
878
|
+
'Bankura',
|
|
879
|
+
'Barasat',
|
|
880
|
+
'Barrackpore',
|
|
881
|
+
'Bolpur',
|
|
882
|
+
'Chandannagar',
|
|
883
|
+
'Chinsurah',
|
|
884
|
+
'Contai',
|
|
885
|
+
'Cooch Behar',
|
|
886
|
+
'Darjeeling',
|
|
887
|
+
'Digha',
|
|
888
|
+
'Habra',
|
|
889
|
+
'Jalpaiguri',
|
|
890
|
+
'Kalimpong',
|
|
891
|
+
'Kalyani',
|
|
892
|
+
'Krishnanagar',
|
|
893
|
+
'Malda',
|
|
894
|
+
'Medinipur',
|
|
895
|
+
'Purulia',
|
|
896
|
+
'Raiganj',
|
|
897
|
+
'Serampore',
|
|
898
|
+
'Shantipur',
|
|
899
|
+
'Tamluk',
|
|
900
|
+
],
|
|
901
|
+
},
|
|
902
|
+
{
|
|
903
|
+
name: 'Andaman and Nicobar Islands',
|
|
904
|
+
aliases: ['Andaman & Nicobar Islands', 'Andaman and Nicobar'],
|
|
905
|
+
cities: [
|
|
906
|
+
'Sri Vijaya Puram',
|
|
907
|
+
'Campbell Bay',
|
|
908
|
+
'Car Nicobar',
|
|
909
|
+
'Diglipur',
|
|
910
|
+
'Mayabunder',
|
|
911
|
+
'Rangat',
|
|
912
|
+
'Shaheed Dweep',
|
|
913
|
+
'Swaraj Dweep',
|
|
914
|
+
],
|
|
915
|
+
},
|
|
916
|
+
{ name: 'Chandigarh', cities: ['Chandigarh'] },
|
|
917
|
+
{
|
|
918
|
+
name: 'Dadra and Nagar Haveli and Daman and Diu',
|
|
919
|
+
aliases: [
|
|
920
|
+
'The Dadra and Nagar Haveli and Daman and Diu',
|
|
921
|
+
'Dadra and Nagar Haveli',
|
|
922
|
+
'Daman and Diu',
|
|
923
|
+
],
|
|
924
|
+
cities: ['Silvassa', 'Daman', 'Diu'],
|
|
925
|
+
},
|
|
926
|
+
{
|
|
927
|
+
name: 'Delhi',
|
|
928
|
+
aliases: ['NCT of Delhi', 'National Capital Territory of Delhi'],
|
|
929
|
+
cities: ['Delhi', 'New Delhi'],
|
|
930
|
+
},
|
|
931
|
+
{
|
|
932
|
+
name: 'Jammu and Kashmir',
|
|
933
|
+
aliases: ['Jammu & Kashmir', 'J&K'],
|
|
934
|
+
cities: [
|
|
935
|
+
'Srinagar',
|
|
936
|
+
'Jammu',
|
|
937
|
+
'Anantnag',
|
|
938
|
+
'Bandipora',
|
|
939
|
+
'Baramulla',
|
|
940
|
+
'Budgam',
|
|
941
|
+
'Doda',
|
|
942
|
+
'Ganderbal',
|
|
943
|
+
'Kathua',
|
|
944
|
+
'Katra',
|
|
945
|
+
'Kishtwar',
|
|
946
|
+
'Kulgam',
|
|
947
|
+
'Kupwara',
|
|
948
|
+
'Poonch',
|
|
949
|
+
'Pulwama',
|
|
950
|
+
'Rajouri',
|
|
951
|
+
'Ramban',
|
|
952
|
+
'Reasi',
|
|
953
|
+
'Samba',
|
|
954
|
+
'Shopian',
|
|
955
|
+
'Sopore',
|
|
956
|
+
'Udhampur',
|
|
957
|
+
],
|
|
958
|
+
},
|
|
959
|
+
{ name: 'Ladakh', cities: ['Leh', 'Kargil'] },
|
|
960
|
+
{
|
|
961
|
+
name: 'Lakshadweep',
|
|
962
|
+
cities: ['Kavaratti', 'Agatti', 'Amini', 'Andrott', 'Kadmat', 'Kalpeni', 'Minicoy'],
|
|
963
|
+
},
|
|
964
|
+
{
|
|
965
|
+
name: 'Puducherry',
|
|
966
|
+
aliases: ['Pondicherry'],
|
|
967
|
+
cities: ['Puducherry', 'Karaikal', 'Mahe', 'Yanam'],
|
|
968
|
+
},
|
|
969
|
+
];
|
|
970
|
+
/**
|
|
971
|
+
* Other names a city is searched by, keyed by the list's name: the older name,
|
|
972
|
+
* the district name the location lookup answers with, or both. A search for
|
|
973
|
+
* any of them shows the city as the list writes it.
|
|
974
|
+
*/
|
|
975
|
+
export const CITY_ALIASES = {
|
|
976
|
+
Bengaluru: ['Bangalore', 'Bengaluru Urban', 'Bangalore Urban'],
|
|
977
|
+
Mumbai: ['Bombay', 'Mumbai Suburban', 'Mumbai City'],
|
|
978
|
+
Chennai: ['Madras'],
|
|
979
|
+
Kolkata: ['Calcutta'],
|
|
980
|
+
Gurugram: ['Gurgaon'],
|
|
981
|
+
Noida: ['Gautam Buddha Nagar'],
|
|
982
|
+
Pune: ['Poona'],
|
|
983
|
+
Vadodara: ['Baroda'],
|
|
984
|
+
Visakhapatnam: ['Vizag', 'Vishakhapatnam'],
|
|
985
|
+
Mysuru: ['Mysore'],
|
|
986
|
+
Mangaluru: ['Mangalore', 'Dakshina Kannada'],
|
|
987
|
+
Hubballi: ['Hubli'],
|
|
988
|
+
Belagavi: ['Belgaum'],
|
|
989
|
+
Kalaburagi: ['Gulbarga'],
|
|
990
|
+
Vijayapura: ['Bijapur'],
|
|
991
|
+
Shivamogga: ['Shimoga'],
|
|
992
|
+
Tumakuru: ['Tumkur'],
|
|
993
|
+
Ballari: ['Bellary'],
|
|
994
|
+
Davanagere: ['Davangere'],
|
|
995
|
+
Chikkamagaluru: ['Chikmagalur'],
|
|
996
|
+
Hosapete: ['Hospet', 'Vijayanagara'],
|
|
997
|
+
Thiruvananthapuram: ['Trivandrum'],
|
|
998
|
+
Kochi: ['Cochin', 'Ernakulam'],
|
|
999
|
+
Kozhikode: ['Calicut'],
|
|
1000
|
+
Thrissur: ['Trichur'],
|
|
1001
|
+
Alappuzha: ['Alleppey'],
|
|
1002
|
+
Kollam: ['Quilon'],
|
|
1003
|
+
Kannur: ['Cannanore'],
|
|
1004
|
+
Palakkad: ['Palghat'],
|
|
1005
|
+
Prayagraj: ['Allahabad'],
|
|
1006
|
+
Ayodhya: ['Faizabad'],
|
|
1007
|
+
Varanasi: ['Banaras', 'Benares', 'Kashi'],
|
|
1008
|
+
Tiruchirappalli: ['Trichy'],
|
|
1009
|
+
Thoothukudi: ['Tuticorin'],
|
|
1010
|
+
Ooty: ['Udhagamandalam', 'The Nilgiris'],
|
|
1011
|
+
Kanchipuram: ['Kanchi'],
|
|
1012
|
+
Puducherry: ['Pondicherry'],
|
|
1013
|
+
'Chhatrapati Sambhajinagar': ['Aurangabad'],
|
|
1014
|
+
Ahilyanagar: ['Ahmednagar'],
|
|
1015
|
+
Dharashiv: ['Osmanabad'],
|
|
1016
|
+
Nashik: ['Nasik'],
|
|
1017
|
+
'Pimpri-Chinchwad': ['Pimpri', 'Chinchwad', 'PCMC'],
|
|
1018
|
+
'Vasai-Virar': ['Vasai', 'Virar'],
|
|
1019
|
+
Narmadapuram: ['Hoshangabad'],
|
|
1020
|
+
Medininagar: ['Daltonganj'],
|
|
1021
|
+
Bokaro: ['Bokaro Steel City'],
|
|
1022
|
+
Rajamahendravaram: ['Rajahmundry', 'Rajahmahendravaram'],
|
|
1023
|
+
Anantapur: ['Anantapuramu'],
|
|
1024
|
+
Kadapa: ['Cuddapah'],
|
|
1025
|
+
Berhampur: ['Brahmapur'],
|
|
1026
|
+
Balasore: ['Baleswar'],
|
|
1027
|
+
Keonjhar: ['Kendujhar'],
|
|
1028
|
+
Bidhannagar: ['Salt Lake'],
|
|
1029
|
+
Malda: ['English Bazar'],
|
|
1030
|
+
Baharampur: ['Berhampore'],
|
|
1031
|
+
Bardhaman: ['Burdwan', 'Purba Bardhaman'],
|
|
1032
|
+
Sohra: ['Cherrapunji'],
|
|
1033
|
+
'Sri Vijaya Puram': ['Port Blair', 'South Andaman'],
|
|
1034
|
+
Mohali: ['SAS Nagar', 'Sahibzada Ajit Singh Nagar'],
|
|
1035
|
+
Kurukshetra: ['Thanesar'],
|
|
1036
|
+
Gyalshing: ['Geyzing'],
|
|
1037
|
+
Siaha: ['Saiha'],
|
|
1038
|
+
Aalo: ['Along'],
|
|
1039
|
+
'Gaya Ji': ['Gaya'],
|
|
1040
|
+
Karimganj: ['Sribhumi'],
|
|
1041
|
+
// District names the location lookup answers with, for the city people name.
|
|
1042
|
+
Guwahati: ['Kamrup Metropolitan'],
|
|
1043
|
+
Vijayawada: ['NTR'],
|
|
1044
|
+
Hyderabad: ['Rangareddy', 'Ranga Reddy', 'Medchal Malkajgiri'],
|
|
1045
|
+
Panaji: ['Panjim', 'North Goa'],
|
|
1046
|
+
Margao: ['Madgaon', 'South Goa'],
|
|
1047
|
+
Shillong: ['East Khasi Hills'],
|
|
1048
|
+
Itanagar: ['Papum Pare'],
|
|
1049
|
+
Agartala: ['West Tripura'],
|
|
1050
|
+
Imphal: ['Imphal West', 'Imphal East'],
|
|
1051
|
+
Jamshedpur: ['East Singhbhum', 'Purbi Singhbhum'],
|
|
1052
|
+
Rudrapur: ['Udham Singh Nagar'],
|
|
1053
|
+
Asansol: ['Paschim Bardhaman'],
|
|
1054
|
+
Delhi: [
|
|
1055
|
+
'Central Delhi',
|
|
1056
|
+
'East Delhi',
|
|
1057
|
+
'North Delhi',
|
|
1058
|
+
'North East Delhi',
|
|
1059
|
+
'North West Delhi',
|
|
1060
|
+
'Shahdara',
|
|
1061
|
+
'South Delhi',
|
|
1062
|
+
'South East Delhi',
|
|
1063
|
+
'South West Delhi',
|
|
1064
|
+
'West Delhi',
|
|
1065
|
+
],
|
|
1066
|
+
// Spellings people also use.
|
|
1067
|
+
Chapra: ['Chhapra'],
|
|
1068
|
+
Dhaulpur: ['Dholpur'],
|
|
1069
|
+
Mangaldoi: ['Mangaldai'],
|
|
1070
|
+
Rupnagar: ['Ropar'],
|
|
1071
|
+
'Shaheed Dweep': ['Neil Island'],
|
|
1072
|
+
'Swaraj Dweep': ['Havelock'],
|
|
1073
|
+
};
|
|
1074
|
+
const key = (text) => text
|
|
1075
|
+
.toLowerCase()
|
|
1076
|
+
.replace(/[.\s&]+/g, ' ')
|
|
1077
|
+
.replace(/\band\b/g, ' ')
|
|
1078
|
+
.replace(/\s+/g, ' ')
|
|
1079
|
+
.trim();
|
|
1080
|
+
/**
|
|
1081
|
+
* The state a name means, by its own name or an alias, ignoring case, dots,
|
|
1082
|
+
* "&" and "and" ("JAMMU AND KASHMIR", "Jammu & Kashmir"). `undefined` when it
|
|
1083
|
+
* is not an Indian state or union territory this list knows.
|
|
1084
|
+
*/
|
|
1085
|
+
export function findIndiaState(name) {
|
|
1086
|
+
if (!name)
|
|
1087
|
+
return undefined;
|
|
1088
|
+
const wanted = key(name);
|
|
1089
|
+
if (!wanted)
|
|
1090
|
+
return undefined;
|
|
1091
|
+
return INDIA_STATES.find((state) => key(state.name) === wanted || state.aliases?.some((a) => key(a) === wanted));
|
|
1092
|
+
}
|
|
1093
|
+
/**
|
|
1094
|
+
* The names the state picker lists, in its order (states A to Z, then union
|
|
1095
|
+
* territories A to Z): the closed list a written state is checked against.
|
|
1096
|
+
*/
|
|
1097
|
+
export const INDIA_STATE_NAMES = INDIA_STATES.map((state) => state.name);
|
|
1098
|
+
/** The state pickers' other names, by the list's name: "Orissa" finds Odisha. */
|
|
1099
|
+
export const STATE_ALIASES = Object.fromEntries(INDIA_STATES.filter((state) => state.aliases).map((state) => [state.name, state.aliases ?? []]));
|
|
1100
|
+
/**
|
|
1101
|
+
* A city as the list writes it, when `name` is one of the state's cities or
|
|
1102
|
+
* another name of one ("Bengaluru Urban", the location lookup's district, is
|
|
1103
|
+
* Bengaluru). Anything else comes back as it was given: never guessed.
|
|
1104
|
+
*/
|
|
1105
|
+
export function listedCityName(state, name) {
|
|
1106
|
+
if (!state)
|
|
1107
|
+
return name;
|
|
1108
|
+
const wanted = key(name);
|
|
1109
|
+
const city = state.cities.find((c) => key(c) === wanted || CITY_ALIASES[c]?.some((alias) => key(alias) === wanted));
|
|
1110
|
+
return city ?? name;
|
|
1111
|
+
}
|
|
1112
|
+
/**
|
|
1113
|
+
* A city as the list writes it from its name ALONE (0.18.0), for where no
|
|
1114
|
+
* state comes with it (Discover's `?city=` from a shared link): the list's
|
|
1115
|
+
* spelling when the name, or another name of a city, matches exactly ONE
|
|
1116
|
+
* spelling in the list ("Bangalore" is Bengaluru; "BILASPUR", a city of two
|
|
1117
|
+
* states, is "Bilaspur" either way), and the name unchanged when it matches
|
|
1118
|
+
* none or two different spellings (never guessed between them). `states` is
|
|
1119
|
+
* the list, India's unless a test hands it another.
|
|
1120
|
+
*/
|
|
1121
|
+
export function canonicalCityName(name, states = INDIA_STATES) {
|
|
1122
|
+
const wanted = key(name);
|
|
1123
|
+
if (!wanted)
|
|
1124
|
+
return name;
|
|
1125
|
+
const found = new Set();
|
|
1126
|
+
for (const state of states) {
|
|
1127
|
+
for (const c of state.cities) {
|
|
1128
|
+
if (key(c) === wanted || CITY_ALIASES[c]?.some((alias) => key(alias) === wanted))
|
|
1129
|
+
found.add(c);
|
|
1130
|
+
}
|
|
1131
|
+
}
|
|
1132
|
+
const [only] = found;
|
|
1133
|
+
return found.size === 1 && only ? only : name;
|
|
1134
|
+
}
|
|
1135
|
+
/**
|
|
1136
|
+
* A place as the list writes it, from however it arrived: a member's older
|
|
1137
|
+
* draft ("karnataka"), the location lookup ("Bengaluru Urban" in "KARNATAKA"),
|
|
1138
|
+
* or another client. The state becomes the list's name when the list knows it
|
|
1139
|
+
* (else stays as given, trimmed, for the rule to refuse); the city becomes the
|
|
1140
|
+
* list's spelling when it is one of that state's cities or another name of
|
|
1141
|
+
* one, and is never guessed otherwise; the country is India.
|
|
1142
|
+
*
|
|
1143
|
+
* The SERVER applies it to every location it stores, so Discover's exact match
|
|
1144
|
+
* finds "Bengaluru" however a client spelled it; a client applies it when it
|
|
1145
|
+
* restores or suggests a place, so the member sees the spelling they will get.
|
|
1146
|
+
*/
|
|
1147
|
+
export function canonicalIndiaLocation(place) {
|
|
1148
|
+
const listed = findIndiaState(place.state);
|
|
1149
|
+
return {
|
|
1150
|
+
city: listedCityName(listed, place.city.trim()),
|
|
1151
|
+
state: listed?.name ?? (place.state ?? '').trim(),
|
|
1152
|
+
country: INDIA,
|
|
1153
|
+
};
|
|
1154
|
+
}
|
|
1155
|
+
// ─── The rule ────────────────────────────────────────────────────────────────
|
|
1156
|
+
/**
|
|
1157
|
+
* A location as it is WRITTEN (0.17.0): onboarding's finish, the Me tab's
|
|
1158
|
+
* personal details, and the server's own suggestion. India only, one of its
|
|
1159
|
+
* states and union territories, and a city of any name within it.
|
|
1160
|
+
*
|
|
1161
|
+
* Until 0.17.0 the schema took any country and any state text while the web
|
|
1162
|
+
* locked the country to India and chose the state from this list, so another
|
|
1163
|
+
* client could store what no screen can show. The read side keeps
|
|
1164
|
+
* `locationSchema`: a location stored before this rule is still read as it is.
|
|
1165
|
+
*
|
|
1166
|
+
* The STATE is required: every Indian city has one, and the picker lists a
|
|
1167
|
+
* state's cities only once it is chosen. It is read the way people and the
|
|
1168
|
+
* location lookup write it ("KARNATAKA", "Orissa", "Jammu & Kashmir" are the
|
|
1169
|
+
* list's Karnataka, Odisha, Jammu and Kashmir: `findIndiaState`), so any client
|
|
1170
|
+
* may send another spelling and the list's name is what is kept. Left empty it
|
|
1171
|
+
* is `stateRequired`; one the list does not know is `stateUnknown`.
|
|
1172
|
+
*/
|
|
1173
|
+
export const indiaLocationSchema = z.object({
|
|
1174
|
+
city: z.string().trim().min(1).max(CITY_MAX),
|
|
1175
|
+
// A typed string in, the list's name out: never a preprocess (0.18.0: its
|
|
1176
|
+
// input read as `unknown`, so a caller typing the body by `z.input` could
|
|
1177
|
+
// send anything and still compile).
|
|
1178
|
+
// Missing, blank and unknown all reach the CHOICE (`invalid_value`, as a
|
|
1179
|
+
// picker's refusal always was): a form words an unchosen state "Choose your
|
|
1180
|
+
// state", not "fill this in" (0.18.0, ram's suite: a length check, then a
|
|
1181
|
+
// missing key, each changed that). Typed in: a string, or left out.
|
|
1182
|
+
state: z
|
|
1183
|
+
.string({ error: VALIDATION_MESSAGE.stateUnknown })
|
|
1184
|
+
.default('')
|
|
1185
|
+
.transform((given) => findIndiaState(given)?.name ?? given.trim())
|
|
1186
|
+
.pipe(z.enum(INDIA_STATE_NAMES, {
|
|
1187
|
+
error: (issue) => issue.input === '' ? VALIDATION_MESSAGE.stateRequired : VALIDATION_MESSAGE.stateUnknown,
|
|
1188
|
+
})),
|
|
1189
|
+
country: z.literal(INDIA),
|
|
1190
|
+
});
|
|
1191
|
+
/**
|
|
1192
|
+
* The city these coordinates look like, for the member to CONFIRM, or `null`
|
|
1193
|
+
* when the lookup could not place them confidently (or they are outside India,
|
|
1194
|
+
* whose area data is all there is). A suggestion, never a write: only what the
|
|
1195
|
+
* member then submits becomes their location.
|
|
1196
|
+
*
|
|
1197
|
+
* In the WRITE shape (0.17.0): the server names the state and city the way
|
|
1198
|
+
* this list does (`findIndiaState`, `listedCityName`: the lookup's "Bengaluru
|
|
1199
|
+
* Urban" is Bengaluru), so what it suggests is what the member could have
|
|
1200
|
+
* picked, and saving it unchanged can never be refused.
|
|
1201
|
+
*/
|
|
1202
|
+
export const suggestedLocationSchema = indiaLocationSchema.nullable();
|
|
1203
|
+
//# sourceMappingURL=india.js.map
|