all-pakistan-cities-list 1.0.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/LICENSE +21 -0
- package/README.md +104 -0
- package/data/cities.html +305 -0
- package/data/cities.json +322 -0
- package/index.d.ts +49 -0
- package/index.js +85 -0
- package/package.json +54 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Atta ur rahman
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
ADDED
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
# All-Pakistan-cities-list
|
|
2
|
+

|
|
3
|
+

|
|
4
|
+

|
|
5
|
+

|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
A comprehensive, up-to-date list of 279 cities and towns across Pakistan, organized by province and region โ including Punjab, Sindh, Khyber Pakhtunkhwa (with former FATA merged districts), Balochistan, Azad Jammu & Kashmir, Gilgit-Baltistan, and the Islamabad Capital Territory.
|
|
9
|
+
๐ฆ View on npm ยท ๐ View on GitHub
|
|
10
|
+
Ships as structured JSON data plus a lightweight helper API, along with a ready-to-use HTML `<select>` dropdown for forms โ ideal for e-commerce checkouts, delivery/CRM apps, registration forms, and location pickers targeting a Pakistani audience.
|
|
11
|
+
Why this package
|
|
12
|
+
โ
Complete โ all provinces and territories, including regions often missing from other lists (AJK, Gilgit-Baltistan, former FATA)
|
|
13
|
+
โ
Corrected โ fixed common spelling errors (e.g. Shikarpur, Fateh Jhang, Pishin) and de-duplicated ambiguous town names
|
|
14
|
+
โ
Disambiguated โ similarly-named towns are labeled by district (e.g. `Jalalpur Pirwala (Multan)` vs `Jalalpur Jattan (Gujrat)`)
|
|
15
|
+
โ
Framework-agnostic โ plain JSON + a small helper API, works in Node, browsers, React, Vue, or any backend
|
|
16
|
+
โ
TypeScript-ready โ includes type definitions
|
|
17
|
+
โ
Public domain โ CC0 licensed, no attribution required
|
|
18
|
+
Install
|
|
19
|
+
```bash
|
|
20
|
+
npm install all-pakistan-cities-list
|
|
21
|
+
```
|
|
22
|
+
```bash
|
|
23
|
+
yarn add all-pakistan-cities-list
|
|
24
|
+
```
|
|
25
|
+
```bash
|
|
26
|
+
pnpm add all-pakistan-cities-list
|
|
27
|
+
```
|
|
28
|
+
Usage
|
|
29
|
+
Get all cities
|
|
30
|
+
```js
|
|
31
|
+
const { getAllCities } = require('all-pakistan-cities-list');
|
|
32
|
+
|
|
33
|
+
console.log(getAllCities());
|
|
34
|
+
// ['Ahmed Nager Chatha', 'Ahmadpur East', ..., 'Yasin']
|
|
35
|
+
```
|
|
36
|
+
Get all region/province names
|
|
37
|
+
```js
|
|
38
|
+
const { getRegions } = require('all-pakistan-cities-list');
|
|
39
|
+
|
|
40
|
+
console.log(getRegions());
|
|
41
|
+
// ['Islamabad Capital Territory', 'Punjab', 'Sindh', 'Khyber Pakhtunkhwa (KPK)', 'Balochistan', 'Azad Jammu & Kashmir', 'Gilgit-Baltistan']
|
|
42
|
+
```
|
|
43
|
+
Get cities in a specific region
|
|
44
|
+
```js
|
|
45
|
+
const { getCitiesByRegion } = require('all-pakistan-cities-list');
|
|
46
|
+
|
|
47
|
+
console.log(getCitiesByRegion('Sindh'));
|
|
48
|
+
// ['Badin', 'Bhirkan', 'Rajo Khanani', ..., 'Warah']
|
|
49
|
+
```
|
|
50
|
+
Search cities (autocomplete-friendly)
|
|
51
|
+
```js
|
|
52
|
+
const { searchCities } = require('all-pakistan-cities-list');
|
|
53
|
+
|
|
54
|
+
console.log(searchCities('jalal'));
|
|
55
|
+
// ['Jalalpur Pirwala (Multan)', 'Jalalpur Jattan (Gujrat)', 'Jalalpur Bhattian (Hafizabad)']
|
|
56
|
+
```
|
|
57
|
+
Access the raw structured data
|
|
58
|
+
```js
|
|
59
|
+
const { raw } = require('all-pakistan-cities-list');
|
|
60
|
+
|
|
61
|
+
console.log(raw.total_cities); // 279
|
|
62
|
+
console.log(raw.regions[0]);
|
|
63
|
+
// { region: 'Islamabad Capital Territory', cities: ['Islamabad'] }
|
|
64
|
+
```
|
|
65
|
+
ES Modules / TypeScript
|
|
66
|
+
```ts
|
|
67
|
+
import { getAllCities, getCitiesByRegion, searchCities, raw } from 'all-pakistan-cities-list';
|
|
68
|
+
```
|
|
69
|
+
HTML dropdown
|
|
70
|
+
A ready-to-use `<select>` element with semantic `<optgroup>` sections is included at `data/cities.html` โ drop it directly into any form.
|
|
71
|
+
City counts by region
|
|
72
|
+
Region Cities
|
|
73
|
+
Islamabad Capital Territory 1
|
|
74
|
+
Punjab 104
|
|
75
|
+
Sindh 56
|
|
76
|
+
Khyber Pakhtunkhwa (incl. former FATA) 57
|
|
77
|
+
Balochistan 32
|
|
78
|
+
Azad Jammu & Kashmir 17
|
|
79
|
+
Gilgit-Baltistan 12
|
|
80
|
+
Total 279
|
|
81
|
+
API Reference
|
|
82
|
+
Function Description Returns
|
|
83
|
+
`getAllCities()` Flat list of every city in the dataset `string[]`
|
|
84
|
+
`getRegions()` List of all region/province names `string[]`
|
|
85
|
+
`getCitiesByRegion(region)` Cities within a given region (case-insensitive match) `string[]`
|
|
86
|
+
`searchCities(query)` Case-insensitive substring search across all cities `string[]`
|
|
87
|
+
`raw` The full underlying JSON data structure `CitiesData`
|
|
88
|
+
Data source & maintenance
|
|
89
|
+
This list is manually compiled and periodically corrected for spelling, duplicates, and administrative changes (e.g. former FATA districts merged into KPK in 2018). Contributions and corrections are welcome โ see below.
|
|
90
|
+
Contributing
|
|
91
|
+
Found a missing city, an incorrect spelling, or an outdated administrative boundary? Contributions are welcome:
|
|
92
|
+
Fork the repository: speedytangent/all-Pakistan-cities-list
|
|
93
|
+
Clone it: `git clone https://github.com/speedytangent/all-Pakistan-cities-list.git`
|
|
94
|
+
Update `data/cities.json` (and `data/cities.html` if applicable)
|
|
95
|
+
Open a pull request with a short description of the change
|
|
96
|
+
License
|
|
97
|
+
Released under CC0 1.0 โ public domain. Use freely in personal, open-source, or commercial projects with no attribution required.
|
|
98
|
+
Related
|
|
99
|
+
If you're building a location picker, delivery app, or registration form for Pakistan, this package pairs well with:
|
|
100
|
+
Postal code / zip code datasets
|
|
101
|
+
Province/district boundary GeoJSON files
|
|
102
|
+
Urdu-language city name transliterations (planned for a future release โ contributions welcome)
|
|
103
|
+
---
|
|
104
|
+
If this package is useful to you, consider starring the repo on GitHub โ it helps others discover it.
|
package/data/cities.html
ADDED
|
@@ -0,0 +1,305 @@
|
|
|
1
|
+
<select name="Location" id="Location" required>
|
|
2
|
+
<option value="" disabled selected>Select The City</option>
|
|
3
|
+
|
|
4
|
+
<optgroup label="Islamabad Capital Territory">
|
|
5
|
+
<option value="Islamabad">Islamabad</option>
|
|
6
|
+
</optgroup>
|
|
7
|
+
|
|
8
|
+
<optgroup label="Punjab Cities">
|
|
9
|
+
<option value="Ahmed Nager Chatha">Ahmed Nager Chatha</option>
|
|
10
|
+
<option value="Ahmadpur East">Ahmadpur East</option>
|
|
11
|
+
<option value="Ali Khan Abad">Ali Khan Abad</option>
|
|
12
|
+
<option value="Alipur">Alipur</option>
|
|
13
|
+
<option value="Arifwala">Arifwala</option>
|
|
14
|
+
<option value="Attock">Attock</option>
|
|
15
|
+
<option value="Bhera">Bhera</option>
|
|
16
|
+
<option value="Bhalwal">Bhalwal</option>
|
|
17
|
+
<option value="Bahawalnagar">Bahawalnagar</option>
|
|
18
|
+
<option value="Bahawalpur">Bahawalpur</option>
|
|
19
|
+
<option value="Bhakkar">Bhakkar</option>
|
|
20
|
+
<option value="Burewala">Burewala</option>
|
|
21
|
+
<option value="Chillianwala">Chillianwala</option>
|
|
22
|
+
<option value="Chakwal">Chakwal</option>
|
|
23
|
+
<option value="Chichawatni">Chichawatni</option>
|
|
24
|
+
<option value="Chiniot">Chiniot</option>
|
|
25
|
+
<option value="Chishtian">Chishtian</option>
|
|
26
|
+
<option value="Daska">Daska</option>
|
|
27
|
+
<option value="Darya Khan">Darya Khan</option>
|
|
28
|
+
<option value="Dera Ghazi Khan">Dera Ghazi Khan</option>
|
|
29
|
+
<option value="Dhaular">Dhaular</option>
|
|
30
|
+
<option value="Dina">Dina</option>
|
|
31
|
+
<option value="Dinga">Dinga</option>
|
|
32
|
+
<option value="Dipalpur">Dipalpur</option>
|
|
33
|
+
<option value="Faisalabad">Faisalabad</option>
|
|
34
|
+
<option value="Ferozewala">Ferozewala</option>
|
|
35
|
+
<option value="Fateh Jhang">Fateh Jhang</option>
|
|
36
|
+
<option value="Ghakhar Mandi">Ghakhar Mandi</option>
|
|
37
|
+
<option value="Gojra">Gojra</option>
|
|
38
|
+
<option value="Gujranwala">Gujranwala</option>
|
|
39
|
+
<option value="Gujrat">Gujrat</option>
|
|
40
|
+
<option value="Gujar Khan">Gujar Khan</option>
|
|
41
|
+
<option value="Hafizabad">Hafizabad</option>
|
|
42
|
+
<option value="Haroonabad">Haroonabad</option>
|
|
43
|
+
<option value="Hasilpur">Hasilpur</option>
|
|
44
|
+
<option value="Haveli Lakha">Haveli Lakha</option>
|
|
45
|
+
<option value="Jatoi">Jatoi</option>
|
|
46
|
+
<option value="Jalalpur Pirwala">Jalalpur Pirwala (Multan)</option>
|
|
47
|
+
<option value="Jalalpur Jattan">Jalalpur Jattan (Gujrat)</option>
|
|
48
|
+
<option value="Jalalpur Bhattian">Jalalpur Bhattian (Hafizabad)</option>
|
|
49
|
+
<option value="Jattan">Jattan</option>
|
|
50
|
+
<option value="Jampur">Jampur</option>
|
|
51
|
+
<option value="Jaranwala">Jaranwala</option>
|
|
52
|
+
<option value="Jhang">Jhang</option>
|
|
53
|
+
<option value="Jhelum">Jhelum</option>
|
|
54
|
+
<option value="Kalabagh">Kalabagh</option>
|
|
55
|
+
<option value="Karor Lal Esan">Karor Lal Esan</option>
|
|
56
|
+
<option value="Kasur">Kasur</option>
|
|
57
|
+
<option value="Kamalia">Kamalia</option>
|
|
58
|
+
<option value="Kamoke">Kamoke</option>
|
|
59
|
+
<option value="Khanewal">Khanewal</option>
|
|
60
|
+
<option value="Khanpur">Khanpur</option>
|
|
61
|
+
<option value="Kharian">Kharian</option>
|
|
62
|
+
<option value="Khushab">Khushab</option>
|
|
63
|
+
<option value="Kot Addu">Kot Addu</option>
|
|
64
|
+
<option value="Jauharabad">Jauharabad</option>
|
|
65
|
+
<option value="Lahore">Lahore</option>
|
|
66
|
+
<option value="Lalamusa">Lalamusa</option>
|
|
67
|
+
<option value="Layyah">Layyah</option>
|
|
68
|
+
<option value="Liaquat Pur">Liaquat Pur</option>
|
|
69
|
+
<option value="Lodhran">Lodhran</option>
|
|
70
|
+
<option value="Malakwal">Malakwal</option>
|
|
71
|
+
<option value="Mamoori">Mamoori</option>
|
|
72
|
+
<option value="Mailsi">Mailsi</option>
|
|
73
|
+
<option value="Mandi Bahauddin">Mandi Bahauddin</option>
|
|
74
|
+
<option value="Mian Channu">Mian Channu</option>
|
|
75
|
+
<option value="Mianwali">Mianwali</option>
|
|
76
|
+
<option value="Multan">Multan</option>
|
|
77
|
+
<option value="Murree">Murree</option>
|
|
78
|
+
<option value="Muridke">Muridke</option>
|
|
79
|
+
<option value="Mianwali Bangla">Mianwali Bangla</option>
|
|
80
|
+
<option value="Muzaffargarh">Muzaffargarh</option>
|
|
81
|
+
<option value="Narowal">Narowal</option>
|
|
82
|
+
<option value="Nankana Sahib">Nankana Sahib</option>
|
|
83
|
+
<option value="Okara">Okara</option>
|
|
84
|
+
<option value="Renala Khurd">Renala Khurd</option>
|
|
85
|
+
<option value="Pakpattan">Pakpattan</option>
|
|
86
|
+
<option value="Pattoki">Pattoki</option>
|
|
87
|
+
<option value="Pir Mahal">Pir Mahal</option>
|
|
88
|
+
<option value="Qaimpur">Qaimpur</option>
|
|
89
|
+
<option value="Qila Didar Singh">Qila Didar Singh</option>
|
|
90
|
+
<option value="Rabwah">Rabwah</option>
|
|
91
|
+
<option value="Raiwind">Raiwind</option>
|
|
92
|
+
<option value="Rajanpur">Rajanpur</option>
|
|
93
|
+
<option value="Rahim Yar Khan">Rahim Yar Khan</option>
|
|
94
|
+
<option value="Rawalpindi">Rawalpindi</option>
|
|
95
|
+
<option value="Sadiqabad">Sadiqabad</option>
|
|
96
|
+
<option value="Safdarabad">Safdarabad</option>
|
|
97
|
+
<option value="Sahiwal">Sahiwal</option>
|
|
98
|
+
<option value="Sangla Hill">Sangla Hill</option>
|
|
99
|
+
<option value="Sarai Alamgir">Sarai Alamgir</option>
|
|
100
|
+
<option value="Sargodha">Sargodha</option>
|
|
101
|
+
<option value="Shakargarh">Shakargarh</option>
|
|
102
|
+
<option value="Sheikhupura">Sheikhupura</option>
|
|
103
|
+
<option value="Sialkot">Sialkot</option>
|
|
104
|
+
<option value="Sohawa">Sohawa</option>
|
|
105
|
+
<option value="Soianwala">Soianwala</option>
|
|
106
|
+
<option value="Siranwali">Siranwali</option>
|
|
107
|
+
<option value="Talagang">Talagang</option>
|
|
108
|
+
<option value="Taxila">Taxila</option>
|
|
109
|
+
<option value="Toba Tek Singh">Toba Tek Singh</option>
|
|
110
|
+
<option value="Vehari">Vehari</option>
|
|
111
|
+
<option value="Wah Cantonment">Wah Cantonment</option>
|
|
112
|
+
<option value="Wazirabad">Wazirabad</option>
|
|
113
|
+
</optgroup>
|
|
114
|
+
|
|
115
|
+
<optgroup label="Sindh Cities">
|
|
116
|
+
<option value="Badin">Badin</option>
|
|
117
|
+
<option value="Bhirkan">Bhirkan</option>
|
|
118
|
+
<option value="Rajo Khanani">Rajo Khanani</option>
|
|
119
|
+
<option value="Chak">Chak</option>
|
|
120
|
+
<option value="Dadu">Dadu</option>
|
|
121
|
+
<option value="Digri">Digri</option>
|
|
122
|
+
<option value="Diplo">Diplo</option>
|
|
123
|
+
<option value="Dokri">Dokri</option>
|
|
124
|
+
<option value="Ghotki">Ghotki</option>
|
|
125
|
+
<option value="Haala">Haala</option>
|
|
126
|
+
<option value="Hyderabad">Hyderabad</option>
|
|
127
|
+
<option value="Islamkot">Islamkot</option>
|
|
128
|
+
<option value="Jacobabad">Jacobabad</option>
|
|
129
|
+
<option value="Jamshoro">Jamshoro</option>
|
|
130
|
+
<option value="Jungshahi">Jungshahi</option>
|
|
131
|
+
<option value="Kandhkot">Kandhkot</option>
|
|
132
|
+
<option value="Kandiaro">Kandiaro</option>
|
|
133
|
+
<option value="Karachi">Karachi</option>
|
|
134
|
+
<option value="Kashmore">Kashmore</option>
|
|
135
|
+
<option value="Keti Bandar">Keti Bandar</option>
|
|
136
|
+
<option value="Khairpur">Khairpur</option>
|
|
137
|
+
<option value="Kotri">Kotri</option>
|
|
138
|
+
<option value="Larkana">Larkana</option>
|
|
139
|
+
<option value="Matiari">Matiari</option>
|
|
140
|
+
<option value="Mehar">Mehar</option>
|
|
141
|
+
<option value="Mirpur Khas">Mirpur Khas</option>
|
|
142
|
+
<option value="Mithani">Mithani</option>
|
|
143
|
+
<option value="Mithi">Mithi</option>
|
|
144
|
+
<option value="Mehrabpur">Mehrabpur</option>
|
|
145
|
+
<option value="Moro">Moro</option>
|
|
146
|
+
<option value="Nagarparkar">Nagarparkar</option>
|
|
147
|
+
<option value="Naudero">Naudero</option>
|
|
148
|
+
<option value="Naushahro Feroze">Naushahro Feroze</option>
|
|
149
|
+
<option value="Naushara">Naushara</option>
|
|
150
|
+
<option value="Nawabshah">Nawabshah</option>
|
|
151
|
+
<option value="Nazimabad">Nazimabad</option>
|
|
152
|
+
<option value="Qambar">Qambar</option>
|
|
153
|
+
<option value="Qasimabad">Qasimabad</option>
|
|
154
|
+
<option value="Ranipur">Ranipur</option>
|
|
155
|
+
<option value="Ratodero">Ratodero</option>
|
|
156
|
+
<option value="Rohri">Rohri</option>
|
|
157
|
+
<option value="Sakrand">Sakrand</option>
|
|
158
|
+
<option value="Sanghar">Sanghar</option>
|
|
159
|
+
<option value="Shahbandar">Shahbandar</option>
|
|
160
|
+
<option value="Shahdadkot">Shahdadkot</option>
|
|
161
|
+
<option value="Shahdadpur">Shahdadpur</option>
|
|
162
|
+
<option value="Shahpur Chakar">Shahpur Chakar</option>
|
|
163
|
+
<option value="Shikarpur">Shikarpur</option>
|
|
164
|
+
<option value="Sukkur">Sukkur</option>
|
|
165
|
+
<option value="Tangwani">Tangwani</option>
|
|
166
|
+
<option value="Tando Adam Khan">Tando Adam Khan</option>
|
|
167
|
+
<option value="Tando Allahyar">Tando Allahyar</option>
|
|
168
|
+
<option value="Tando Muhammad Khan">Tando Muhammad Khan</option>
|
|
169
|
+
<option value="Thatta">Thatta</option>
|
|
170
|
+
<option value="Umerkot">Umerkot</option>
|
|
171
|
+
<option value="Warah">Warah</option>
|
|
172
|
+
</optgroup>
|
|
173
|
+
|
|
174
|
+
<optgroup label="Khyber Pakhtunkhwa (KPK) Cities">
|
|
175
|
+
<option value="Abbottabad">Abbottabad</option>
|
|
176
|
+
<option value="Adezai">Adezai</option>
|
|
177
|
+
<option value="Alpuri">Alpuri</option>
|
|
178
|
+
<option value="Akora Khattak">Akora Khattak</option>
|
|
179
|
+
<option value="Ayubia">Ayubia</option>
|
|
180
|
+
<option value="Banda Daud Shah">Banda Daud Shah</option>
|
|
181
|
+
<option value="Bannu">Bannu</option>
|
|
182
|
+
<option value="Batkhela">Batkhela</option>
|
|
183
|
+
<option value="Battagram">Battagram</option>
|
|
184
|
+
<option value="Birote">Birote</option>
|
|
185
|
+
<option value="Chakdara">Chakdara</option>
|
|
186
|
+
<option value="Charsadda">Charsadda</option>
|
|
187
|
+
<option value="Chitral">Chitral</option>
|
|
188
|
+
<option value="Daggar">Daggar</option>
|
|
189
|
+
<option value="Dargai">Dargai</option>
|
|
190
|
+
<option value="Dera Ismail Khan">Dera Ismail Khan</option>
|
|
191
|
+
<option value="Doaba">Doaba</option>
|
|
192
|
+
<option value="Dir">Dir</option>
|
|
193
|
+
<option value="Drosh">Drosh</option>
|
|
194
|
+
<option value="Hangu">Hangu</option>
|
|
195
|
+
<option value="Haripur">Haripur</option>
|
|
196
|
+
<option value="Karak">Karak</option>
|
|
197
|
+
<option value="Kohat">Kohat</option>
|
|
198
|
+
<option value="Kulachi">Kulachi</option>
|
|
199
|
+
<option value="Lakki Marwat">Lakki Marwat</option>
|
|
200
|
+
<option value="Latamber">Latamber</option>
|
|
201
|
+
<option value="Madyan">Madyan</option>
|
|
202
|
+
<option value="Mansehra">Mansehra</option>
|
|
203
|
+
<option value="Mardan">Mardan</option>
|
|
204
|
+
<option value="Mastuj">Mastuj</option>
|
|
205
|
+
<option value="Mingora">Mingora</option>
|
|
206
|
+
<option value="Nowshera">Nowshera</option>
|
|
207
|
+
<option value="Paharpur">Paharpur</option>
|
|
208
|
+
<option value="Pabbi">Pabbi</option>
|
|
209
|
+
<option value="Peshawar">Peshawar</option>
|
|
210
|
+
<option value="Saidu Sharif">Saidu Sharif</option>
|
|
211
|
+
<option value="Shorkot">Shorkot</option>
|
|
212
|
+
<option value="Shewa Adda">Shewa Adda</option>
|
|
213
|
+
<option value="Swabi">Swabi</option>
|
|
214
|
+
<option value="Swat">Swat</option>
|
|
215
|
+
<option value="Tangi">Tangi</option>
|
|
216
|
+
<option value="Tank">Tank</option>
|
|
217
|
+
<option value="Thall">Thall</option>
|
|
218
|
+
<option value="Timergara">Timergara</option>
|
|
219
|
+
<option value="Tordher">Tordher</option>
|
|
220
|
+
<option value="" disabled>โ Former FATA (now merged districts) โ</option>
|
|
221
|
+
<option value="Landi Kotal">Landi Kotal (Khyber)</option>
|
|
222
|
+
<option value="Jamrud">Jamrud (Khyber)</option>
|
|
223
|
+
<option value="Bara">Bara (Khyber)</option>
|
|
224
|
+
<option value="Parachinar">Parachinar (Kurram)</option>
|
|
225
|
+
<option value="Sadda">Sadda (Kurram)</option>
|
|
226
|
+
<option value="Kalaya">Kalaya (Orakzai)</option>
|
|
227
|
+
<option value="Ghalanai">Ghalanai (Mohmand)</option>
|
|
228
|
+
<option value="Khar">Khar (Bajaur)</option>
|
|
229
|
+
<option value="Miran Shah">Miran Shah (North Waziristan)</option>
|
|
230
|
+
<option value="Mir Ali">Mir Ali (North Waziristan)</option>
|
|
231
|
+
<option value="Wana">Wana (South Waziristan)</option>
|
|
232
|
+
<option value="Ladha">Ladha (South Waziristan)</option>
|
|
233
|
+
</optgroup>
|
|
234
|
+
|
|
235
|
+
<optgroup label="Balochistan Cities">
|
|
236
|
+
<option value="Awaran">Awaran</option>
|
|
237
|
+
<option value="Barkhan">Barkhan</option>
|
|
238
|
+
<option value="Chagai">Chagai</option>
|
|
239
|
+
<option value="Dera Bugti">Dera Bugti</option>
|
|
240
|
+
<option value="Gwadar">Gwadar</option>
|
|
241
|
+
<option value="Harnai">Harnai</option>
|
|
242
|
+
<option value="Jafarabad">Jafarabad</option>
|
|
243
|
+
<option value="Jhal Magsi">Jhal Magsi</option>
|
|
244
|
+
<option value="Kacchi">Kacchi</option>
|
|
245
|
+
<option value="Kalat">Kalat</option>
|
|
246
|
+
<option value="Kech">Kech</option>
|
|
247
|
+
<option value="Kharan">Kharan</option>
|
|
248
|
+
<option value="Khuzdar">Khuzdar</option>
|
|
249
|
+
<option value="Killa Abdullah">Killa Abdullah</option>
|
|
250
|
+
<option value="Killa Saifullah">Killa Saifullah</option>
|
|
251
|
+
<option value="Kohlu">Kohlu</option>
|
|
252
|
+
<option value="Lasbela">Lasbela</option>
|
|
253
|
+
<option value="Lehri">Lehri</option>
|
|
254
|
+
<option value="Loralai">Loralai</option>
|
|
255
|
+
<option value="Mastung">Mastung</option>
|
|
256
|
+
<option value="Musakhel">Musakhel</option>
|
|
257
|
+
<option value="Nasirabad">Nasirabad</option>
|
|
258
|
+
<option value="Nushki">Nushki</option>
|
|
259
|
+
<option value="Panjgur">Panjgur</option>
|
|
260
|
+
<option value="Pishin">Pishin</option>
|
|
261
|
+
<option value="Quetta">Quetta</option>
|
|
262
|
+
<option value="Sherani">Sherani</option>
|
|
263
|
+
<option value="Sibi">Sibi</option>
|
|
264
|
+
<option value="Sohbatpur">Sohbatpur</option>
|
|
265
|
+
<option value="Washuk">Washuk</option>
|
|
266
|
+
<option value="Zhob">Zhob</option>
|
|
267
|
+
<option value="Ziarat">Ziarat</option>
|
|
268
|
+
</optgroup>
|
|
269
|
+
|
|
270
|
+
<optgroup label="Azad Jammu & Kashmir Cities">
|
|
271
|
+
<option value="Muzaffarabad">Muzaffarabad</option>
|
|
272
|
+
<option value="Mirpur">Mirpur</option>
|
|
273
|
+
<option value="Kotli">Kotli</option>
|
|
274
|
+
<option value="Bhimber">Bhimber</option>
|
|
275
|
+
<option value="Rawalakot">Rawalakot</option>
|
|
276
|
+
<option value="Bagh">Bagh</option>
|
|
277
|
+
<option value="Athmuqam">Athmuqam</option>
|
|
278
|
+
<option value="Hattian Bala">Hattian Bala</option>
|
|
279
|
+
<option value="Pallandri">Pallandri</option>
|
|
280
|
+
<option value="Dhirkot">Dhirkot</option>
|
|
281
|
+
<option value="Forward Kahuta">Forward Kahuta</option>
|
|
282
|
+
<option value="Sehnsa">Sehnsa</option>
|
|
283
|
+
<option value="Samahni">Samahni</option>
|
|
284
|
+
<option value="Chakswari">Chakswari</option>
|
|
285
|
+
<option value="New Mirpur City">New Mirpur City</option>
|
|
286
|
+
<option value="Barnala">Barnala</option>
|
|
287
|
+
<option value="Trarkhal">Trarkhal</option>
|
|
288
|
+
</optgroup>
|
|
289
|
+
|
|
290
|
+
<optgroup label="Gilgit-Baltistan Cities">
|
|
291
|
+
<option value="Gilgit">Gilgit</option>
|
|
292
|
+
<option value="Skardu">Skardu</option>
|
|
293
|
+
<option value="Hunza">Hunza (Karimabad)</option>
|
|
294
|
+
<option value="Nagar">Nagar</option>
|
|
295
|
+
<option value="Ghanche">Ghanche (Khaplu)</option>
|
|
296
|
+
<option value="Ghizer">Ghizer (Gahkuch)</option>
|
|
297
|
+
<option value="Astore">Astore</option>
|
|
298
|
+
<option value="Shigar">Shigar</option>
|
|
299
|
+
<option value="Diamer">Diamer (Chilas)</option>
|
|
300
|
+
<option value="Kharmang">Kharmang</option>
|
|
301
|
+
<option value="Gupis">Gupis</option>
|
|
302
|
+
<option value="Yasin">Yasin</option>
|
|
303
|
+
</optgroup>
|
|
304
|
+
|
|
305
|
+
</select>
|
package/data/cities.json
ADDED
|
@@ -0,0 +1,322 @@
|
|
|
1
|
+
{
|
|
2
|
+
"country": "Pakistan",
|
|
3
|
+
"total_cities": 279,
|
|
4
|
+
"regions": [
|
|
5
|
+
{
|
|
6
|
+
"region": "Islamabad Capital Territory",
|
|
7
|
+
"cities": [
|
|
8
|
+
"Islamabad"
|
|
9
|
+
]
|
|
10
|
+
},
|
|
11
|
+
{
|
|
12
|
+
"region": "Punjab",
|
|
13
|
+
"cities": [
|
|
14
|
+
"Ahmed Nager Chatha",
|
|
15
|
+
"Ahmadpur East",
|
|
16
|
+
"Ali Khan Abad",
|
|
17
|
+
"Alipur",
|
|
18
|
+
"Arifwala",
|
|
19
|
+
"Attock",
|
|
20
|
+
"Bhera",
|
|
21
|
+
"Bhalwal",
|
|
22
|
+
"Bahawalnagar",
|
|
23
|
+
"Bahawalpur",
|
|
24
|
+
"Bhakkar",
|
|
25
|
+
"Burewala",
|
|
26
|
+
"Chillianwala",
|
|
27
|
+
"Chakwal",
|
|
28
|
+
"Chichawatni",
|
|
29
|
+
"Chiniot",
|
|
30
|
+
"Chishtian",
|
|
31
|
+
"Daska",
|
|
32
|
+
"Darya Khan",
|
|
33
|
+
"Dera Ghazi Khan",
|
|
34
|
+
"Dhaular",
|
|
35
|
+
"Dina",
|
|
36
|
+
"Dinga",
|
|
37
|
+
"Dipalpur",
|
|
38
|
+
"Faisalabad",
|
|
39
|
+
"Ferozewala",
|
|
40
|
+
"Fateh Jhang",
|
|
41
|
+
"Ghakhar Mandi",
|
|
42
|
+
"Gojra",
|
|
43
|
+
"Gujranwala",
|
|
44
|
+
"Gujrat",
|
|
45
|
+
"Gujar Khan",
|
|
46
|
+
"Hafizabad",
|
|
47
|
+
"Haroonabad",
|
|
48
|
+
"Hasilpur",
|
|
49
|
+
"Haveli Lakha",
|
|
50
|
+
"Jatoi",
|
|
51
|
+
"Jalalpur Pirwala (Multan)",
|
|
52
|
+
"Jalalpur Jattan (Gujrat)",
|
|
53
|
+
"Jalalpur Bhattian (Hafizabad)",
|
|
54
|
+
"Jattan",
|
|
55
|
+
"Jampur",
|
|
56
|
+
"Jaranwala",
|
|
57
|
+
"Jhang",
|
|
58
|
+
"Jhelum",
|
|
59
|
+
"Kalabagh",
|
|
60
|
+
"Karor Lal Esan",
|
|
61
|
+
"Kasur",
|
|
62
|
+
"Kamalia",
|
|
63
|
+
"Kamoke",
|
|
64
|
+
"Khanewal",
|
|
65
|
+
"Khanpur",
|
|
66
|
+
"Kharian",
|
|
67
|
+
"Khushab",
|
|
68
|
+
"Kot Addu",
|
|
69
|
+
"Jauharabad",
|
|
70
|
+
"Lahore",
|
|
71
|
+
"Lalamusa",
|
|
72
|
+
"Layyah",
|
|
73
|
+
"Liaquat Pur",
|
|
74
|
+
"Lodhran",
|
|
75
|
+
"Malakwal",
|
|
76
|
+
"Mamoori",
|
|
77
|
+
"Mailsi",
|
|
78
|
+
"Mandi Bahauddin",
|
|
79
|
+
"Mian Channu",
|
|
80
|
+
"Mianwali",
|
|
81
|
+
"Multan",
|
|
82
|
+
"Murree",
|
|
83
|
+
"Muridke",
|
|
84
|
+
"Mianwali Bangla",
|
|
85
|
+
"Muzaffargarh",
|
|
86
|
+
"Narowal",
|
|
87
|
+
"Nankana Sahib",
|
|
88
|
+
"Okara",
|
|
89
|
+
"Renala Khurd",
|
|
90
|
+
"Pakpattan",
|
|
91
|
+
"Pattoki",
|
|
92
|
+
"Pir Mahal",
|
|
93
|
+
"Qaimpur",
|
|
94
|
+
"Qila Didar Singh",
|
|
95
|
+
"Rabwah",
|
|
96
|
+
"Raiwind",
|
|
97
|
+
"Rajanpur",
|
|
98
|
+
"Rahim Yar Khan",
|
|
99
|
+
"Rawalpindi",
|
|
100
|
+
"Sadiqabad",
|
|
101
|
+
"Safdarabad",
|
|
102
|
+
"Sahiwal",
|
|
103
|
+
"Sangla Hill",
|
|
104
|
+
"Sarai Alamgir",
|
|
105
|
+
"Sargodha",
|
|
106
|
+
"Shakargarh",
|
|
107
|
+
"Sheikhupura",
|
|
108
|
+
"Sialkot",
|
|
109
|
+
"Sohawa",
|
|
110
|
+
"Soianwala",
|
|
111
|
+
"Siranwali",
|
|
112
|
+
"Talagang",
|
|
113
|
+
"Taxila",
|
|
114
|
+
"Toba Tek Singh",
|
|
115
|
+
"Vehari",
|
|
116
|
+
"Wah Cantonment",
|
|
117
|
+
"Wazirabad"
|
|
118
|
+
]
|
|
119
|
+
},
|
|
120
|
+
{
|
|
121
|
+
"region": "Sindh",
|
|
122
|
+
"cities": [
|
|
123
|
+
"Badin",
|
|
124
|
+
"Bhirkan",
|
|
125
|
+
"Rajo Khanani",
|
|
126
|
+
"Chak",
|
|
127
|
+
"Dadu",
|
|
128
|
+
"Digri",
|
|
129
|
+
"Diplo",
|
|
130
|
+
"Dokri",
|
|
131
|
+
"Ghotki",
|
|
132
|
+
"Haala",
|
|
133
|
+
"Hyderabad",
|
|
134
|
+
"Islamkot",
|
|
135
|
+
"Jacobabad",
|
|
136
|
+
"Jamshoro",
|
|
137
|
+
"Jungshahi",
|
|
138
|
+
"Kandhkot",
|
|
139
|
+
"Kandiaro",
|
|
140
|
+
"Karachi",
|
|
141
|
+
"Kashmore",
|
|
142
|
+
"Keti Bandar",
|
|
143
|
+
"Khairpur",
|
|
144
|
+
"Kotri",
|
|
145
|
+
"Larkana",
|
|
146
|
+
"Matiari",
|
|
147
|
+
"Mehar",
|
|
148
|
+
"Mirpur Khas",
|
|
149
|
+
"Mithani",
|
|
150
|
+
"Mithi",
|
|
151
|
+
"Mehrabpur",
|
|
152
|
+
"Moro",
|
|
153
|
+
"Nagarparkar",
|
|
154
|
+
"Naudero",
|
|
155
|
+
"Naushahro Feroze",
|
|
156
|
+
"Naushara",
|
|
157
|
+
"Nawabshah",
|
|
158
|
+
"Nazimabad",
|
|
159
|
+
"Qambar",
|
|
160
|
+
"Qasimabad",
|
|
161
|
+
"Ranipur",
|
|
162
|
+
"Ratodero",
|
|
163
|
+
"Rohri",
|
|
164
|
+
"Sakrand",
|
|
165
|
+
"Sanghar",
|
|
166
|
+
"Shahbandar",
|
|
167
|
+
"Shahdadkot",
|
|
168
|
+
"Shahdadpur",
|
|
169
|
+
"Shahpur Chakar",
|
|
170
|
+
"Shikarpur",
|
|
171
|
+
"Sukkur",
|
|
172
|
+
"Tangwani",
|
|
173
|
+
"Tando Adam Khan",
|
|
174
|
+
"Tando Allahyar",
|
|
175
|
+
"Tando Muhammad Khan",
|
|
176
|
+
"Thatta",
|
|
177
|
+
"Umerkot",
|
|
178
|
+
"Warah"
|
|
179
|
+
]
|
|
180
|
+
},
|
|
181
|
+
{
|
|
182
|
+
"region": "Khyber Pakhtunkhwa (KPK)",
|
|
183
|
+
"cities": [
|
|
184
|
+
"Abbottabad",
|
|
185
|
+
"Adezai",
|
|
186
|
+
"Alpuri",
|
|
187
|
+
"Akora Khattak",
|
|
188
|
+
"Ayubia",
|
|
189
|
+
"Banda Daud Shah",
|
|
190
|
+
"Bannu",
|
|
191
|
+
"Batkhela",
|
|
192
|
+
"Battagram",
|
|
193
|
+
"Birote",
|
|
194
|
+
"Chakdara",
|
|
195
|
+
"Charsadda",
|
|
196
|
+
"Chitral",
|
|
197
|
+
"Daggar",
|
|
198
|
+
"Dargai",
|
|
199
|
+
"Dera Ismail Khan",
|
|
200
|
+
"Doaba",
|
|
201
|
+
"Dir",
|
|
202
|
+
"Drosh",
|
|
203
|
+
"Hangu",
|
|
204
|
+
"Haripur",
|
|
205
|
+
"Karak",
|
|
206
|
+
"Kohat",
|
|
207
|
+
"Kulachi",
|
|
208
|
+
"Lakki Marwat",
|
|
209
|
+
"Latamber",
|
|
210
|
+
"Madyan",
|
|
211
|
+
"Mansehra",
|
|
212
|
+
"Mardan",
|
|
213
|
+
"Mastuj",
|
|
214
|
+
"Mingora",
|
|
215
|
+
"Nowshera",
|
|
216
|
+
"Paharpur",
|
|
217
|
+
"Pabbi",
|
|
218
|
+
"Peshawar",
|
|
219
|
+
"Saidu Sharif",
|
|
220
|
+
"Shorkot",
|
|
221
|
+
"Shewa Adda",
|
|
222
|
+
"Swabi",
|
|
223
|
+
"Swat",
|
|
224
|
+
"Tangi",
|
|
225
|
+
"Tank",
|
|
226
|
+
"Thall",
|
|
227
|
+
"Timergara",
|
|
228
|
+
"Tordher"
|
|
229
|
+
],
|
|
230
|
+
"former_fata_merged_districts": [
|
|
231
|
+
"Landi Kotal (Khyber)",
|
|
232
|
+
"Jamrud (Khyber)",
|
|
233
|
+
"Bara (Khyber)",
|
|
234
|
+
"Parachinar (Kurram)",
|
|
235
|
+
"Sadda (Kurram)",
|
|
236
|
+
"Kalaya (Orakzai)",
|
|
237
|
+
"Ghalanai (Mohmand)",
|
|
238
|
+
"Khar (Bajaur)",
|
|
239
|
+
"Miran Shah (North Waziristan)",
|
|
240
|
+
"Mir Ali (North Waziristan)",
|
|
241
|
+
"Wana (South Waziristan)",
|
|
242
|
+
"Ladha (South Waziristan)"
|
|
243
|
+
]
|
|
244
|
+
},
|
|
245
|
+
{
|
|
246
|
+
"region": "Balochistan",
|
|
247
|
+
"cities": [
|
|
248
|
+
"Awaran",
|
|
249
|
+
"Barkhan",
|
|
250
|
+
"Chagai",
|
|
251
|
+
"Dera Bugti",
|
|
252
|
+
"Gwadar",
|
|
253
|
+
"Harnai",
|
|
254
|
+
"Jafarabad",
|
|
255
|
+
"Jhal Magsi",
|
|
256
|
+
"Kacchi",
|
|
257
|
+
"Kalat",
|
|
258
|
+
"Kech",
|
|
259
|
+
"Kharan",
|
|
260
|
+
"Khuzdar",
|
|
261
|
+
"Killa Abdullah",
|
|
262
|
+
"Killa Saifullah",
|
|
263
|
+
"Kohlu",
|
|
264
|
+
"Lasbela",
|
|
265
|
+
"Lehri",
|
|
266
|
+
"Loralai",
|
|
267
|
+
"Mastung",
|
|
268
|
+
"Musakhel",
|
|
269
|
+
"Nasirabad",
|
|
270
|
+
"Nushki",
|
|
271
|
+
"Panjgur",
|
|
272
|
+
"Pishin",
|
|
273
|
+
"Quetta",
|
|
274
|
+
"Sherani",
|
|
275
|
+
"Sibi",
|
|
276
|
+
"Sohbatpur",
|
|
277
|
+
"Washuk",
|
|
278
|
+
"Zhob",
|
|
279
|
+
"Ziarat"
|
|
280
|
+
]
|
|
281
|
+
},
|
|
282
|
+
{
|
|
283
|
+
"region": "Azad Jammu & Kashmir",
|
|
284
|
+
"cities": [
|
|
285
|
+
"Muzaffarabad",
|
|
286
|
+
"Mirpur",
|
|
287
|
+
"Kotli",
|
|
288
|
+
"Bhimber",
|
|
289
|
+
"Rawalakot",
|
|
290
|
+
"Bagh",
|
|
291
|
+
"Athmuqam",
|
|
292
|
+
"Hattian Bala",
|
|
293
|
+
"Pallandri",
|
|
294
|
+
"Dhirkot",
|
|
295
|
+
"Forward Kahuta",
|
|
296
|
+
"Sehnsa",
|
|
297
|
+
"Samahni",
|
|
298
|
+
"Chakswari",
|
|
299
|
+
"New Mirpur City",
|
|
300
|
+
"Barnala",
|
|
301
|
+
"Trarkhal"
|
|
302
|
+
]
|
|
303
|
+
},
|
|
304
|
+
{
|
|
305
|
+
"region": "Gilgit-Baltistan",
|
|
306
|
+
"cities": [
|
|
307
|
+
"Gilgit",
|
|
308
|
+
"Skardu",
|
|
309
|
+
"Hunza (Karimabad)",
|
|
310
|
+
"Nagar",
|
|
311
|
+
"Ghanche (Khaplu)",
|
|
312
|
+
"Ghizer (Gahkuch)",
|
|
313
|
+
"Astore",
|
|
314
|
+
"Shigar",
|
|
315
|
+
"Diamer (Chilas)",
|
|
316
|
+
"Kharmang",
|
|
317
|
+
"Gupis",
|
|
318
|
+
"Yasin"
|
|
319
|
+
]
|
|
320
|
+
}
|
|
321
|
+
]
|
|
322
|
+
}
|
package/index.d.ts
ADDED
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
export interface Region {
|
|
2
|
+
/** Name of the province/region, e.g. "Punjab" */
|
|
3
|
+
region: string;
|
|
4
|
+
/** Cities/towns belonging to this region */
|
|
5
|
+
cities: string[];
|
|
6
|
+
/** Only present on the Khyber Pakhtunkhwa (KPK) region entry */
|
|
7
|
+
former_fata_merged_districts?: string[];
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
export interface CitiesData {
|
|
11
|
+
country: string;
|
|
12
|
+
total_cities: number;
|
|
13
|
+
regions: Region[];
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
export interface GetCitiesByRegionOptions {
|
|
17
|
+
/**
|
|
18
|
+
* Whether to include former FATA towns when requesting the KPK region.
|
|
19
|
+
* Defaults to true.
|
|
20
|
+
*/
|
|
21
|
+
includeFormerFata?: boolean;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
/** The full underlying dataset. */
|
|
25
|
+
export const raw: CitiesData;
|
|
26
|
+
|
|
27
|
+
/** Returns a flat array of every city/town in the dataset. */
|
|
28
|
+
export function getAllCities(): string[];
|
|
29
|
+
|
|
30
|
+
/** Returns the list of all region/province names in the dataset. */
|
|
31
|
+
export function getRegions(): string[];
|
|
32
|
+
|
|
33
|
+
/**
|
|
34
|
+
* Returns the cities belonging to a given region.
|
|
35
|
+
* Matching is case-insensitive.
|
|
36
|
+
*/
|
|
37
|
+
export function getCitiesByRegion(
|
|
38
|
+
region: string,
|
|
39
|
+
options?: GetCitiesByRegionOptions
|
|
40
|
+
): string[];
|
|
41
|
+
|
|
42
|
+
/** Case-insensitive substring search across all cities. */
|
|
43
|
+
export function searchCities(query: string): string[];
|
|
44
|
+
|
|
45
|
+
/**
|
|
46
|
+
* Returns true if the given string matches a known city name exactly
|
|
47
|
+
* (case-insensitive).
|
|
48
|
+
*/
|
|
49
|
+
export function isValidCity(city: string): boolean;
|
package/index.js
ADDED
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
const data = require('./data/cities.json');
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Returns a flat array of every city/town in the dataset.
|
|
7
|
+
* @returns {string[]}
|
|
8
|
+
*/
|
|
9
|
+
function getAllCities() {
|
|
10
|
+
return data.regions.reduce((acc, region) => {
|
|
11
|
+
acc.push(...region.cities);
|
|
12
|
+
if (region.former_fata_merged_districts) {
|
|
13
|
+
acc.push(...region.former_fata_merged_districts);
|
|
14
|
+
}
|
|
15
|
+
return acc;
|
|
16
|
+
}, []);
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
/**
|
|
20
|
+
* Returns the list of all region/province names in the dataset.
|
|
21
|
+
* @returns {string[]}
|
|
22
|
+
*/
|
|
23
|
+
function getRegions() {
|
|
24
|
+
return data.regions.map((region) => region.region);
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
/**
|
|
28
|
+
* Returns the cities belonging to a given region.
|
|
29
|
+
* Matching is case-insensitive and trims whitespace.
|
|
30
|
+
* @param {string} region
|
|
31
|
+
* @param {{ includeFormerFata?: boolean }} [options]
|
|
32
|
+
* @returns {string[]}
|
|
33
|
+
*/
|
|
34
|
+
function getCitiesByRegion(region, options) {
|
|
35
|
+
if (!region || typeof region !== 'string') return [];
|
|
36
|
+
|
|
37
|
+
const opts = options || {};
|
|
38
|
+
const includeFormerFata = opts.includeFormerFata !== false;
|
|
39
|
+
|
|
40
|
+
const target = region.trim().toLowerCase();
|
|
41
|
+
const match = data.regions.find(
|
|
42
|
+
(r) => r.region.trim().toLowerCase() === target
|
|
43
|
+
);
|
|
44
|
+
|
|
45
|
+
if (!match) return [];
|
|
46
|
+
|
|
47
|
+
const cities = [...match.cities];
|
|
48
|
+
if (includeFormerFata && match.former_fata_merged_districts) {
|
|
49
|
+
cities.push(...match.former_fata_merged_districts);
|
|
50
|
+
}
|
|
51
|
+
return cities;
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
/**
|
|
55
|
+
* Case-insensitive substring search across all cities.
|
|
56
|
+
* @param {string} query
|
|
57
|
+
* @returns {string[]}
|
|
58
|
+
*/
|
|
59
|
+
function searchCities(query) {
|
|
60
|
+
if (!query || typeof query !== 'string') return [];
|
|
61
|
+
const q = query.trim().toLowerCase();
|
|
62
|
+
if (!q) return [];
|
|
63
|
+
return getAllCities().filter((city) => city.toLowerCase().includes(q));
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
/**
|
|
67
|
+
* Returns true if the given string matches a known city name exactly
|
|
68
|
+
* (case-insensitive).
|
|
69
|
+
* @param {string} city
|
|
70
|
+
* @returns {boolean}
|
|
71
|
+
*/
|
|
72
|
+
function isValidCity(city) {
|
|
73
|
+
if (!city || typeof city !== 'string') return false;
|
|
74
|
+
const target = city.trim().toLowerCase();
|
|
75
|
+
return getAllCities().some((c) => c.toLowerCase() === target);
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
module.exports = {
|
|
79
|
+
raw: data,
|
|
80
|
+
getAllCities,
|
|
81
|
+
getRegions,
|
|
82
|
+
getCitiesByRegion,
|
|
83
|
+
searchCities,
|
|
84
|
+
isValidCity
|
|
85
|
+
};
|
package/package.json
ADDED
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "all-pakistan-cities-list",
|
|
3
|
+
"version": "1.0.0",
|
|
4
|
+
"description": "Comprehensive, corrected list of 279 Pakistani cities by province โ Punjab, Sindh, KPK (incl. former FATA), Balochistan, Azad Jammu & Kashmir, Gilgit-Baltistan, and Islamabad. Includes JSON data, helper functions, and an HTML dropdown.",
|
|
5
|
+
"main": "index.js",
|
|
6
|
+
"types": "index.d.ts",
|
|
7
|
+
"files": [
|
|
8
|
+
"index.js",
|
|
9
|
+
"index.d.ts",
|
|
10
|
+
"data/"
|
|
11
|
+
],
|
|
12
|
+
"scripts": {
|
|
13
|
+
"test": "node -e \"const c=require('./index.js'); console.assert(c.getAllCities().length===c.raw.total_cities, 'city count mismatch'); console.log('OK:', c.raw.total_cities, 'cities');\""
|
|
14
|
+
},
|
|
15
|
+
"keywords": [
|
|
16
|
+
"pakistan",
|
|
17
|
+
"pakistan-cities",
|
|
18
|
+
"cities",
|
|
19
|
+
"cities-list",
|
|
20
|
+
"punjab",
|
|
21
|
+
"sindh",
|
|
22
|
+
"kpk",
|
|
23
|
+
"khyber-pakhtunkhwa",
|
|
24
|
+
"balochistan",
|
|
25
|
+
"azad-kashmir",
|
|
26
|
+
"azad-jammu-kashmir",
|
|
27
|
+
"gilgit-baltistan",
|
|
28
|
+
"islamabad",
|
|
29
|
+
"fata",
|
|
30
|
+
"location",
|
|
31
|
+
"location-picker",
|
|
32
|
+
"dropdown",
|
|
33
|
+
"select",
|
|
34
|
+
"autocomplete",
|
|
35
|
+
"json",
|
|
36
|
+
"geo",
|
|
37
|
+
"geodata"
|
|
38
|
+
],
|
|
39
|
+
"license": "CC0-1.0",
|
|
40
|
+
"author": {
|
|
41
|
+
"name": "Atta Ur Rahman"
|
|
42
|
+
},
|
|
43
|
+
"repository": {
|
|
44
|
+
"type": "git",
|
|
45
|
+
"url": "git+https://github.com/speedytangent/all-Pakistan-cities-list.git"
|
|
46
|
+
},
|
|
47
|
+
"bugs": {
|
|
48
|
+
"url": "https://github.com/speedytangent/all-Pakistan-cities-list/issues"
|
|
49
|
+
},
|
|
50
|
+
"homepage": "https://github.com/speedytangent/all-Pakistan-cities-list#readme",
|
|
51
|
+
"engines": {
|
|
52
|
+
"node": ">=12"
|
|
53
|
+
}
|
|
54
|
+
}
|