pak-geodata 0.1.0 → 0.2.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.ts CHANGED
@@ -1,5 +1,4 @@
1
- import type { Coordinates, AreaType, PakistanArea, PakistanCity, PakistanProvince, ProvinceType, SearchOptions, NearestAreaOptions } from './types.js';
2
- import { haversineDistanceKm } from './geo.js';
1
+ import type { PakistanArea, PakistanCity, PakistanProvince } from './types.js';
3
2
  /**
4
3
  * Returns all verified provinces and administrative territories of Pakistan.
5
4
  */
@@ -36,19 +35,9 @@ export declare function findAreaByPostalCode(postalCode: string | number): Pakis
36
35
  * Returns all areas sharing a given 5-digit Pakistan Post postal code.
37
36
  */
38
37
  export declare function findAreasByPostalCode(postalCode: string | number): PakistanArea[];
39
- /**
40
- * Searches Pakistan areas using structured matching and ranking:
41
- * Exact match > Prefix match > Alias match > Substring / Token match > Fuzzy match.
42
- *
43
- * Scopes candidate pool via O(1) city map when options.cityId is provided.
44
- */
45
- export declare function searchAreas(query: string, options?: SearchOptions, candidateAreas?: readonly PakistanArea[]): PakistanArea[];
46
- /**
47
- * Finds the nearest verified PakistanArea to the given coordinates.
48
- *
49
- * Scopes candidate pool via O(1) city map when options.cityId is provided.
50
- */
51
- export declare function getNearestArea(coords: Coordinates, options?: NearestAreaOptions, candidateAreas?: readonly PakistanArea[]): PakistanArea | null;
52
- export { haversineDistanceKm };
53
- export type { Coordinates, AreaType, PakistanArea, PakistanCity, PakistanProvince, ProvinceType, SearchOptions, NearestAreaOptions };
38
+ export { searchAreas } from './search.js';
39
+ export { getNearestArea, haversineDistanceKm } from './geo.js';
40
+ export { normalizeUrduText, toWesternDigits, toEasternDigits, stripUrduDiacritics } from './urdu.js';
41
+ export { getCityName, getAreaName, toLocationItem, getProvincesAsLocationItems, getCitiesAsLocationItems, getAreasAsLocationItems, searchLocationItems } from './hierarchy.js';
42
+ export type { Coordinates, AreaType, PakistanArea, PakistanCity, PakistanProvince, ProvinceType, SearchOptions, NearestAreaOptions, PakLocationType, PakLocationItem, ProvinceId, CityId } from './types.js';
54
43
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,WAAW,EACX,QAAQ,EACR,YAAY,EACZ,YAAY,EACZ,gBAAgB,EAChB,YAAY,EACZ,aAAa,EACb,kBAAkB,EACnB,MAAM,YAAY,CAAC;AAMpB,OAAO,EAAE,mBAAmB,EAAwC,MAAM,UAAU,CAAC;AAuCrF;;GAEG;AACH,wBAAgB,eAAe,IAAI,gBAAgB,EAAE,CAEpD;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,EAAE,EAAE,MAAM,GAAG,gBAAgB,GAAG,SAAS,CAGxE;AAED;;GAEG;AACH,wBAAgB,YAAY,IAAI,YAAY,EAAE,CAE7C;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,UAAU,EAAE,MAAM,GAAG,YAAY,EAAE,CAGtE;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,EAAE,EAAE,MAAM,GAAG,YAAY,GAAG,SAAS,CAGhE;AAED;;GAEG;AACH,wBAAgB,WAAW,IAAI,YAAY,EAAE,CAE5C;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,YAAY,EAAE,CAG7D;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,GAAG,YAAY,GAAG,SAAS,CAG1F;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,GAAG,YAAY,EAAE,CAGjF;AAED;;;;;GAKG;AACH,wBAAgB,WAAW,CACzB,KAAK,EAAE,MAAM,EACb,OAAO,CAAC,EAAE,aAAa,EACvB,cAAc,CAAC,EAAE,SAAS,YAAY,EAAE,GACvC,YAAY,EAAE,CAMhB;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAC5B,MAAM,EAAE,WAAW,EACnB,OAAO,CAAC,EAAE,kBAAkB,EAC5B,cAAc,CAAC,EAAE,SAAS,YAAY,EAAE,GACvC,YAAY,GAAG,IAAI,CAMrB;AAGD,OAAO,EAAE,mBAAmB,EAAE,CAAC;AAG/B,YAAY,EACV,WAAW,EACX,QAAQ,EACR,YAAY,EACZ,YAAY,EACZ,gBAAgB,EAChB,YAAY,EACZ,aAAa,EACb,kBAAkB,EACnB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,YAAY,EACZ,YAAY,EACZ,gBAAgB,EACjB,MAAM,YAAY,CAAC;AA0CpB;;GAEG;AACH,wBAAgB,eAAe,IAAI,gBAAgB,EAAE,CAEpD;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,EAAE,EAAE,MAAM,GAAG,gBAAgB,GAAG,SAAS,CAGxE;AAED;;GAEG;AACH,wBAAgB,YAAY,IAAI,YAAY,EAAE,CAE7C;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,UAAU,EAAE,MAAM,GAAG,YAAY,EAAE,CAGtE;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,EAAE,EAAE,MAAM,GAAG,YAAY,GAAG,SAAS,CAGhE;AAED;;GAEG;AACH,wBAAgB,WAAW,IAAI,YAAY,EAAE,CAE5C;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,YAAY,EAAE,CAG7D;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,GAAG,YAAY,GAAG,SAAS,CAG1F;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,GAAG,YAAY,EAAE,CAGjF;AAED,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,cAAc,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC;AAG/D,OAAO,EACL,iBAAiB,EACjB,eAAe,EACf,eAAe,EACf,mBAAmB,EACpB,MAAM,WAAW,CAAC;AAGnB,OAAO,EACL,WAAW,EACX,WAAW,EACX,cAAc,EACd,2BAA2B,EAC3B,wBAAwB,EACxB,uBAAuB,EACvB,mBAAmB,EACpB,MAAM,gBAAgB,CAAC;AAGxB,YAAY,EACV,WAAW,EACX,QAAQ,EACR,YAAY,EACZ,YAAY,EACZ,gBAAgB,EAChB,YAAY,EACZ,aAAa,EACb,kBAAkB,EAClB,eAAe,EACf,eAAe,EACf,UAAU,EACV,MAAM,EACP,MAAM,YAAY,CAAC"}
package/dist/index.js CHANGED
@@ -1,8 +1,6 @@
1
1
  import { provinces } from './data/provinces.js';
2
2
  import { cities } from './data/cities.js';
3
3
  import { allAreas } from './data/areas/index.js';
4
- import { haversineDistanceKm, getNearestArea as baseGetNearestArea } from './geo.js';
5
- import { searchAreas as baseSearchAreas } from './search.js';
6
4
  // Pre-indexed lookup maps for O(1) lookups
7
5
  const provinceByIdMap = new Map();
8
6
  for (const p of provinces) {
@@ -100,31 +98,11 @@ export function findAreasByPostalCode(postalCode) {
100
98
  return [];
101
99
  return [...(areasByPostalCodeMap.get(String(postalCode).trim()) || [])];
102
100
  }
103
- /**
104
- * Searches Pakistan areas using structured matching and ranking:
105
- * Exact match > Prefix match > Alias match > Substring / Token match > Fuzzy match.
106
- *
107
- * Scopes candidate pool via O(1) city map when options.cityId is provided.
108
- */
109
- export function searchAreas(query, options, candidateAreas) {
110
- let pool = candidateAreas;
111
- if (!pool && options?.cityId && typeof options.cityId === 'string') {
112
- pool = areasByCityMap.get(options.cityId.toLowerCase().trim()) || [];
113
- }
114
- return baseSearchAreas(query, options, pool);
115
- }
116
- /**
117
- * Finds the nearest verified PakistanArea to the given coordinates.
118
- *
119
- * Scopes candidate pool via O(1) city map when options.cityId is provided.
120
- */
121
- export function getNearestArea(coords, options, candidateAreas) {
122
- let pool = candidateAreas;
123
- if (!pool && options?.cityId && typeof options.cityId === 'string') {
124
- pool = areasByCityMap.get(options.cityId.toLowerCase().trim()) || [];
125
- }
126
- return baseGetNearestArea(coords, options, pool);
127
- }
128
- // Re-export spatial distance utility
129
- export { haversineDistanceKm };
101
+ // Re-export search and spatial geocoding
102
+ export { searchAreas } from './search.js';
103
+ export { getNearestArea, haversineDistanceKm } from './geo.js';
104
+ // Re-export Urdu normalization engine
105
+ export { normalizeUrduText, toWesternDigits, toEasternDigits, stripUrduDiacritics } from './urdu.js';
106
+ // Re-export hierarchy and bilingual name lookups
107
+ export { getCityName, getAreaName, toLocationItem, getProvincesAsLocationItems, getCitiesAsLocationItems, getAreasAsLocationItems, searchLocationItems } from './hierarchy.js';
130
108
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/search.d.ts CHANGED
@@ -1,12 +1,26 @@
1
- import type { PakistanArea, SearchOptions } from './types.js';
1
+ import type { PakistanArea, SearchOptions, PakLocationItem } from './types.js';
2
+ /**
3
+ * Searches areas within a specific city and returns ranked results as PakLocationItem[].
4
+ *
5
+ * Each returned PakLocationItem always contains both English (`nameEn`) and Urdu (`nameUr`) names.
6
+ * The `_lang` parameter is accepted for Sanctuary compatibility.
7
+ *
8
+ * @param cityKey - City identifier, English name, or Urdu name
9
+ * @param query - Search term (English or Urdu)
10
+ * @param _lang - Optional language code accepted for Sanctuary compatibility
11
+ * @returns Ranked array of PakLocationItem elements
12
+ */
13
+ export declare function searchLocationItems(cityKey: string, query: string, _lang?: 'en' | 'ur'): PakLocationItem[];
2
14
  /**
3
15
  * Searches Pakistan areas using structured matching and ranking:
4
16
  * Exact match > Prefix match > Alias match > Substring / Token match > Fuzzy match.
5
17
  *
6
- * @param query - Search term (English, Urdu, ID, or colloquial alias)
7
- * @param options - Optional filters (cityId, provinceId, limit)
8
- * @param candidateAreas - Custom pool of areas (defaults to all verified areas)
9
- * @returns Ranked array of matching PakistanArea objects
18
+ * Overload 1 (Sanctuary signature):
19
+ * searchAreas(cityKey: string, query: string, lang?: 'en' | 'ur'): PakLocationItem[]
20
+ *
21
+ * Overload 2 (Classic signature):
22
+ * searchAreas(query: string, options?: SearchOptions, candidateAreas?: readonly PakistanArea[]): PakistanArea[]
10
23
  */
24
+ export declare function searchAreas(cityKey: string, query: string, lang?: 'en' | 'ur'): PakLocationItem[];
11
25
  export declare function searchAreas(query: string, options?: SearchOptions, candidateAreas?: readonly PakistanArea[]): PakistanArea[];
12
26
  //# sourceMappingURL=search.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../src/search.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AA+C9D;;;;;;;;GAQG;AACH,wBAAgB,WAAW,CACzB,KAAK,EAAE,MAAM,EACb,OAAO,CAAC,EAAE,aAAa,EACvB,cAAc,GAAE,SAAS,YAAY,EAAa,GACjD,YAAY,EAAE,CA6HhB"}
1
+ {"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../src/search.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AA+P/E;;;;;;;;;;GAUG;AACH,wBAAgB,mBAAmB,CACjC,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,MAAM,EACb,KAAK,CAAC,EAAE,IAAI,GAAG,IAAI,GAClB,eAAe,EAAE,CAanB;AAED;;;;;;;;;GASG;AACH,wBAAgB,WAAW,CACzB,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,MAAM,EACb,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,GACjB,eAAe,EAAE,CAAC;AACrB,wBAAgB,WAAW,CACzB,KAAK,EAAE,MAAM,EACb,OAAO,CAAC,EAAE,aAAa,EACvB,cAAc,CAAC,EAAE,SAAS,YAAY,EAAE,GACvC,YAAY,EAAE,CAAC"}
package/dist/search.js CHANGED
@@ -1,12 +1,6 @@
1
1
  import { allAreas } from './data/areas/index.js';
2
- // Pre-indexed lookup map for O(1) candidate pool selection by city
3
- const areasByCityMap = new Map();
4
- for (const a of allAreas) {
5
- const cityKey = a.cityId.toLowerCase();
6
- const list = areasByCityMap.get(cityKey) || [];
7
- list.push(a);
8
- areasByCityMap.set(cityKey, list);
9
- }
2
+ import { normalizeUrduText } from './urdu.js';
3
+ import { toLocationItem, cityLookupMap } from './hierarchy.js';
10
4
  function normalizeString(str) {
11
5
  return str.toLowerCase().trim().replace(/[-_.,/]/g, ' ').replace(/\s+/g, ' ');
12
6
  }
@@ -34,16 +28,69 @@ function levenshteinDistance(a, b) {
34
28
  }
35
29
  return matrix[b.length];
36
30
  }
31
+ function createNormalizedCandidate(area) {
32
+ const normName = normalizeString(area.name);
33
+ const normId = normalizeString(area.id);
34
+ const rawUrdu = area.urduName ? area.urduName.trim() : '';
35
+ const normUrdu = area.urduName ? normalizeUrduText(area.urduName) : '';
36
+ const normAliases = area.aliases.map((a) => normalizeString(a));
37
+ const allText = `${normName} ${normId} ${normAliases.join(' ')} ${normUrdu} ${rawUrdu}`.trim();
38
+ return {
39
+ area,
40
+ normName,
41
+ normId,
42
+ normUrdu,
43
+ rawUrdu,
44
+ normAliases,
45
+ allText
46
+ };
47
+ }
48
+ // Pre-tokenize and normalize all candidates at module load time to eliminate
49
+ // repeated string allocations and lowercasing inside keystroke search loops.
50
+ const normalizedCandidates = allAreas.map(createNormalizedCandidate);
51
+ const candidateByAreaMap = new Map();
52
+ for (const c of normalizedCandidates) {
53
+ candidateByAreaMap.set(c.area, c);
54
+ }
55
+ const normalizedByCityMap = new Map();
56
+ for (const c of normalizedCandidates) {
57
+ const cityKey = c.area.cityId.toLowerCase();
58
+ const list = normalizedByCityMap.get(cityKey) || [];
59
+ list.push(c);
60
+ normalizedByCityMap.set(cityKey, list);
61
+ }
37
62
  /**
38
- * Searches Pakistan areas using structured matching and ranking:
39
- * Exact match > Prefix match > Alias match > Substring / Token match > Fuzzy match.
40
- *
41
- * @param query - Search term (English, Urdu, ID, or colloquial alias)
42
- * @param options - Optional filters (cityId, provinceId, limit)
43
- * @param candidateAreas - Custom pool of areas (defaults to all verified areas)
44
- * @returns Ranked array of matching PakistanArea objects
63
+ * Resolves candidates pool with O(1) city selection and pre-normalized metadata.
45
64
  */
46
- export function searchAreas(query, options, candidateAreas = allAreas) {
65
+ function getCandidatePool(options, candidateAreas = allAreas) {
66
+ let list;
67
+ if (candidateAreas === allAreas) {
68
+ if (options?.cityId && typeof options.cityId === 'string') {
69
+ const cityId = options.cityId.toLowerCase().trim();
70
+ list = normalizedByCityMap.get(cityId) || [];
71
+ }
72
+ else {
73
+ list = normalizedCandidates;
74
+ }
75
+ }
76
+ else {
77
+ let filtered = candidateAreas;
78
+ if (options?.cityId && typeof options.cityId === 'string') {
79
+ const cityId = options.cityId.toLowerCase().trim();
80
+ filtered = filtered.filter((a) => a.cityId.toLowerCase() === cityId);
81
+ }
82
+ list = filtered.map((a) => candidateByAreaMap.get(a) || createNormalizedCandidate(a));
83
+ }
84
+ if (options?.provinceId && typeof options.provinceId === 'string') {
85
+ const provinceId = options.provinceId.toLowerCase().trim();
86
+ list = list.filter((c) => c.area.provinceId.toLowerCase() === provinceId);
87
+ }
88
+ return list;
89
+ }
90
+ /**
91
+ * Classic search implementation returning PakistanArea[].
92
+ */
93
+ function classicSearchAreas(query, options, candidateAreas = allAreas) {
47
94
  if (typeof query !== 'string') {
48
95
  return [];
49
96
  }
@@ -52,86 +99,87 @@ export function searchAreas(query, options, candidateAreas = allAreas) {
52
99
  return [];
53
100
  }
54
101
  const normQuery = normalizeString(trimmed);
102
+ const normUrduQuery = normalizeUrduText(trimmed);
55
103
  const queryTokens = normQuery.split(' ').filter(Boolean);
56
- let filtered = candidateAreas;
57
- if (options?.cityId && typeof options.cityId === 'string') {
58
- const cityId = options.cityId.toLowerCase().trim();
59
- if (candidateAreas === allAreas) {
60
- filtered = areasByCityMap.get(cityId) || [];
61
- }
62
- else {
63
- filtered = filtered.filter((a) => a.cityId.toLowerCase() === cityId);
64
- }
65
- }
66
- if (options?.provinceId && typeof options.provinceId === 'string') {
67
- const provinceId = options.provinceId.toLowerCase().trim();
68
- filtered = filtered.filter((a) => a.provinceId.toLowerCase() === provinceId);
69
- }
104
+ const urduTokens = normUrduQuery ? normUrduQuery.split(' ').filter(Boolean) : [];
105
+ const pool = getCandidatePool(options, candidateAreas);
70
106
  const scored = [];
71
- for (const area of filtered) {
107
+ for (const c of pool) {
72
108
  let score = 0;
73
- const normName = normalizeString(area.name);
74
- const normId = normalizeString(area.id);
75
- const normUrdu = area.urduName ? area.urduName.trim() : '';
76
- const normAliases = area.aliases.map((a) => normalizeString(a));
77
109
  // 1. Exact matches
78
- if (normName === normQuery) {
110
+ if (c.normName === normQuery) {
79
111
  score = Math.max(score, 1000);
80
112
  }
81
- else if (normId === normQuery) {
113
+ else if (c.normId === normQuery) {
82
114
  score = Math.max(score, 950);
83
115
  }
84
- else if (normUrdu && normUrdu === trimmed) {
116
+ else if ((c.normUrdu && c.normUrdu === normUrduQuery) ||
117
+ (c.rawUrdu && c.rawUrdu === trimmed)) {
85
118
  score = Math.max(score, 900);
86
119
  }
87
- else if (normAliases.some((al) => al === normQuery)) {
120
+ else if (c.normAliases.some((al) => al === normQuery)) {
88
121
  score = Math.max(score, 850);
89
122
  }
90
123
  // 2. Prefix matches
91
124
  if (score < 800) {
92
- if (normName.startsWith(normQuery)) {
93
- score = Math.max(score, 700 + (normQuery.length / normName.length) * 50);
125
+ if (c.normName.startsWith(normQuery)) {
126
+ score = Math.max(score, 700 + (normQuery.length / c.normName.length) * 50);
94
127
  }
95
- else if (normUrdu && normUrdu.startsWith(trimmed)) {
128
+ else if ((c.normUrdu && normUrduQuery && c.normUrdu.startsWith(normUrduQuery)) ||
129
+ (c.rawUrdu && c.rawUrdu.startsWith(trimmed))) {
96
130
  score = Math.max(score, 650);
97
131
  }
98
- else if (normAliases.some((al) => al.startsWith(normQuery))) {
132
+ else if (c.normAliases.some((al) => al.startsWith(normQuery))) {
99
133
  score = Math.max(score, 600);
100
134
  }
101
135
  }
102
136
  // 3. Substring / Token matches
103
137
  if (score < 600) {
104
- if (normName.includes(normQuery)) {
138
+ if (c.normName.includes(normQuery)) {
105
139
  score = Math.max(score, 500);
106
140
  }
107
- else if (normUrdu && normUrdu.includes(trimmed)) {
141
+ else if ((c.normUrdu && normUrduQuery && c.normUrdu.includes(normUrduQuery)) ||
142
+ (c.rawUrdu && c.rawUrdu.includes(trimmed))) {
108
143
  score = Math.max(score, 450);
109
144
  }
110
- else if (normAliases.some((al) => al.includes(normQuery))) {
145
+ else if (c.normAliases.some((al) => al.includes(normQuery))) {
111
146
  score = Math.max(score, 400);
112
147
  }
113
- else if (queryTokens.length > 0) {
114
- const areaAllText = `${normName} ${normId} ${normAliases.join(' ')}`;
115
- const matchedTokens = queryTokens.filter((token) => areaAllText.includes(token));
116
- if (matchedTokens.length === queryTokens.length) {
117
- score = Math.max(score, 300 + (queryTokens.length * 20));
148
+ else {
149
+ let tokenScore = 0;
150
+ if (queryTokens.length > 0) {
151
+ const matched = queryTokens.filter((token) => c.allText.includes(token));
152
+ if (matched.length === queryTokens.length) {
153
+ tokenScore = Math.max(tokenScore, 300 + queryTokens.length * 20);
154
+ }
155
+ else if (matched.length > 0) {
156
+ tokenScore = Math.max(tokenScore, 100 + (matched.length / queryTokens.length) * 100);
157
+ }
158
+ }
159
+ if (urduTokens.length > 0) {
160
+ const matchedUrdu = urduTokens.filter((token) => c.allText.includes(token));
161
+ if (matchedUrdu.length === urduTokens.length) {
162
+ tokenScore = Math.max(tokenScore, 300 + urduTokens.length * 20);
163
+ }
164
+ else if (matchedUrdu.length > 0) {
165
+ tokenScore = Math.max(tokenScore, 100 + (matchedUrdu.length / urduTokens.length) * 100);
166
+ }
118
167
  }
119
- else if (matchedTokens.length > 0) {
120
- score = Math.max(score, 100 + (matchedTokens.length / queryTokens.length) * 100);
168
+ if (tokenScore > 0) {
169
+ score = Math.max(score, tokenScore);
121
170
  }
122
171
  }
123
172
  }
124
173
  // 4. Fuzzy fallback for short queries or slight typos (4 <= length <= 40)
125
174
  if (score === 0 && normQuery.length >= 4 && normQuery.length <= 40) {
126
- const dist = levenshteinDistance(normQuery, normName);
127
- const maxLen = Math.max(normQuery.length, normName.length);
175
+ const dist = levenshteinDistance(normQuery, c.normName);
176
+ const maxLen = Math.max(normQuery.length, c.normName.length);
128
177
  const similarity = 1 - dist / maxLen;
129
178
  if (similarity >= 0.72) {
130
179
  score = Math.max(score, 150 * similarity);
131
180
  }
132
181
  else {
133
- // Test aliases fuzzy
134
- for (const al of normAliases) {
182
+ for (const al of c.normAliases) {
135
183
  if (al.length >= 3) {
136
184
  const aliasDist = levenshteinDistance(normQuery, al);
137
185
  const aliasMaxLen = Math.max(normQuery.length, al.length);
@@ -145,16 +193,16 @@ export function searchAreas(query, options, candidateAreas = allAreas) {
145
193
  }
146
194
  }
147
195
  if (score > 0) {
148
- scored.push({ area, score });
196
+ scored.push({ candidate: c, score });
149
197
  }
150
198
  }
151
199
  scored.sort((a, b) => {
152
200
  if (b.score !== a.score) {
153
201
  return b.score - a.score;
154
202
  }
155
- return a.area.name.localeCompare(b.area.name);
203
+ return a.candidate.area.name.localeCompare(b.candidate.area.name);
156
204
  });
157
- const results = scored.map((s) => s.area);
205
+ const results = scored.map((s) => s.candidate.area);
158
206
  if (options?.limit !== undefined) {
159
207
  if (options.limit <= 0) {
160
208
  return [];
@@ -163,4 +211,43 @@ export function searchAreas(query, options, candidateAreas = allAreas) {
163
211
  }
164
212
  return results;
165
213
  }
214
+ /**
215
+ * Searches areas within a specific city and returns ranked results as PakLocationItem[].
216
+ *
217
+ * Each returned PakLocationItem always contains both English (`nameEn`) and Urdu (`nameUr`) names.
218
+ * The `_lang` parameter is accepted for Sanctuary compatibility.
219
+ *
220
+ * @param cityKey - City identifier, English name, or Urdu name
221
+ * @param query - Search term (English or Urdu)
222
+ * @param _lang - Optional language code accepted for Sanctuary compatibility
223
+ * @returns Ranked array of PakLocationItem elements
224
+ */
225
+ export function searchLocationItems(cityKey, query, _lang) {
226
+ if (typeof cityKey !== 'string' || typeof query !== 'string')
227
+ return [];
228
+ const trimmedCity = cityKey.trim();
229
+ const trimmedQuery = query.trim();
230
+ if (!trimmedCity || !trimmedQuery)
231
+ return [];
232
+ const city = cityLookupMap.get(trimmedCity.toLowerCase()) ||
233
+ cityLookupMap.get(normalizeUrduText(trimmedCity));
234
+ if (!city)
235
+ return [];
236
+ const results = classicSearchAreas(trimmedQuery, { cityId: city.id });
237
+ return results.map(toLocationItem);
238
+ }
239
+ export function searchAreas(firstArg, secondArg, thirdArg) {
240
+ // Runtime dispatch: when argument 2 is a string, route to Sanctuary mode
241
+ if (typeof secondArg === 'string') {
242
+ const cityKey = firstArg;
243
+ const query = secondArg;
244
+ const lang = thirdArg === 'ur' ? 'ur' : 'en';
245
+ return searchLocationItems(cityKey, query, lang);
246
+ }
247
+ // Otherwise, route to classic search mode
248
+ const query = firstArg;
249
+ const options = typeof secondArg === 'object' && secondArg !== null ? secondArg : undefined;
250
+ const candidateAreas = Array.isArray(thirdArg) ? thirdArg : allAreas;
251
+ return classicSearchAreas(query, options, candidateAreas);
252
+ }
166
253
  //# sourceMappingURL=search.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"search.js","sourceRoot":"","sources":["../src/search.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"search.js","sourceRoot":"","sources":["../src/search.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACjD,OAAO,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAC9C,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAY/D,SAAS,eAAe,CAAC,GAAW;IAClC,OAAO,GAAG,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;AAChF,CAAC;AAED,SAAS,mBAAmB,CAAC,CAAS,EAAE,CAAS;IAC/C,IAAI,CAAC,KAAK,CAAC;QAAE,OAAO,CAAC,CAAC;IACtB,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,CAAC,CAAC,MAAM,CAAC;IACpC,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,CAAC,CAAC,MAAM,CAAC;IAEpC,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACnC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IAChB,CAAC;IAED,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACnC,IAAI,IAAI,GAAG,CAAC,CAAC;QACb,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACnC,MAAM,GAAG,GACP,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;gBACnB,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC;gBACf,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;YACnD,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC;YACrB,IAAI,GAAG,GAAG,CAAC;QACb,CAAC;QACD,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC;IAC1B,CAAC;IAED,OAAO,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;AAC1B,CAAC;AAED,SAAS,yBAAyB,CAAC,IAAkB;IACnD,MAAM,QAAQ,GAAG,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC5C,MAAM,MAAM,GAAG,eAAe,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACxC,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IAC1D,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IACvE,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC;IAChE,MAAM,OAAO,GAAG,GAAG,QAAQ,IAAI,MAAM,IAAI,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,QAAQ,IAAI,OAAO,EAAE,CAAC,IAAI,EAAE,CAAC;IAC/F,OAAO;QACL,IAAI;QACJ,QAAQ;QACR,MAAM;QACN,QAAQ;QACR,OAAO;QACP,WAAW;QACX,OAAO;KACR,CAAC;AACJ,CAAC;AAED,6EAA6E;AAC7E,6EAA6E;AAC7E,MAAM,oBAAoB,GAAmC,QAAQ,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAC;AAErG,MAAM,kBAAkB,GAAG,IAAI,GAAG,EAAqC,CAAC;AACxE,KAAK,MAAM,CAAC,IAAI,oBAAoB,EAAE,CAAC;IACrC,kBAAkB,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;AACpC,CAAC;AAED,MAAM,mBAAmB,GAAG,IAAI,GAAG,EAAiC,CAAC;AACrE,KAAK,MAAM,CAAC,IAAI,oBAAoB,EAAE,CAAC;IACrC,MAAM,OAAO,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC;IAC5C,MAAM,IAAI,GAAG,mBAAmB,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;IACpD,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACb,mBAAmB,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;AACzC,CAAC;AAOD;;GAEG;AACH,SAAS,gBAAgB,CACvB,OAAuB,EACvB,iBAA0C,QAAQ;IAElD,IAAI,IAAoC,CAAC;IAEzC,IAAI,cAAc,KAAK,QAAQ,EAAE,CAAC;QAChC,IAAI,OAAO,EAAE,MAAM,IAAI,OAAO,OAAO,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;YAC1D,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE,CAAC;YACnD,IAAI,GAAG,mBAAmB,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;QAC/C,CAAC;aAAM,CAAC;YACN,IAAI,GAAG,oBAAoB,CAAC;QAC9B,CAAC;IACH,CAAC;SAAM,CAAC;QACN,IAAI,QAAQ,GAAG,cAAc,CAAC;QAC9B,IAAI,OAAO,EAAE,MAAM,IAAI,OAAO,OAAO,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;YAC1D,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE,CAAC;YACnD,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,EAAE,KAAK,MAAM,CAAC,CAAC;QACvE,CAAC;QACD,IAAI,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,yBAAyB,CAAC,CAAC,CAAC,CAAC,CAAC;IACxF,CAAC;IAED,IAAI,OAAO,EAAE,UAAU,IAAI,OAAO,OAAO,CAAC,UAAU,KAAK,QAAQ,EAAE,CAAC;QAClE,MAAM,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE,CAAC;QAC3D,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE,KAAK,UAAU,CAAC,CAAC;IAC5E,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;GAEG;AACH,SAAS,kBAAkB,CACzB,KAAa,EACb,OAAuB,EACvB,iBAA0C,QAAQ;IAElD,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;IAC7B,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,MAAM,SAAS,GAAG,eAAe,CAAC,OAAO,CAAC,CAAC;IAC3C,MAAM,aAAa,GAAG,iBAAiB,CAAC,OAAO,CAAC,CAAC;IACjD,MAAM,WAAW,GAAG,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IACzD,MAAM,UAAU,GAAG,aAAa,CAAC,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAEjF,MAAM,IAAI,GAAG,gBAAgB,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC;IACvD,MAAM,MAAM,GAAsB,EAAE,CAAC;IAErC,KAAK,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC;QACrB,IAAI,KAAK,GAAG,CAAC,CAAC;QAEd,mBAAmB;QACnB,IAAI,CAAC,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;YAC7B,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QAChC,CAAC;aAAM,IAAI,CAAC,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;YAClC,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;QAC/B,CAAC;aAAM,IACL,CAAC,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,QAAQ,KAAK,aAAa,CAAC;YAC5C,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,OAAO,KAAK,OAAO,CAAC,EACpC,CAAC;YACD,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;QAC/B,CAAC;aAAM,IAAI,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,KAAK,SAAS,CAAC,EAAE,CAAC;YACxD,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;QAC/B,CAAC;QAED,oBAAoB;QACpB,IAAI,KAAK,GAAG,GAAG,EAAE,CAAC;YAChB,IAAI,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;gBACrC,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,GAAG,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC;YAC7E,CAAC;iBAAM,IACL,CAAC,CAAC,CAAC,QAAQ,IAAI,aAAa,IAAI,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;gBACrE,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,EAC5C,CAAC;gBACD,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;YAC/B,CAAC;iBAAM,IAAI,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC;gBAChE,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;YAC/B,CAAC;QACH,CAAC;QAED,+BAA+B;QAC/B,IAAI,KAAK,GAAG,GAAG,EAAE,CAAC;YAChB,IAAI,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;gBACnC,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;YAC/B,CAAC;iBAAM,IACL,CAAC,CAAC,CAAC,QAAQ,IAAI,aAAa,IAAI,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;gBACnE,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,EAC1C,CAAC;gBACD,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;YAC/B,CAAC;iBAAM,IAAI,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC;gBAC9D,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;YAC/B,CAAC;iBAAM,CAAC;gBACN,IAAI,UAAU,GAAG,CAAC,CAAC;gBACnB,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBAC3B,MAAM,OAAO,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;oBACzE,IAAI,OAAO,CAAC,MAAM,KAAK,WAAW,CAAC,MAAM,EAAE,CAAC;wBAC1C,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,GAAG,GAAG,WAAW,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC;oBACnE,CAAC;yBAAM,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;wBAC9B,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,GAAG,GAAG,CAAC,OAAO,CAAC,MAAM,GAAG,WAAW,CAAC,MAAM,CAAC,GAAG,GAAG,CAAC,CAAC;oBACvF,CAAC;gBACH,CAAC;gBACD,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBAC1B,MAAM,WAAW,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;oBAC5E,IAAI,WAAW,CAAC,MAAM,KAAK,UAAU,CAAC,MAAM,EAAE,CAAC;wBAC7C,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,GAAG,GAAG,UAAU,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC;oBAClE,CAAC;yBAAM,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;wBAClC,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,GAAG,GAAG,CAAC,WAAW,CAAC,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC,GAAG,GAAG,CAAC,CAAC;oBAC1F,CAAC;gBACH,CAAC;gBACD,IAAI,UAAU,GAAG,CAAC,EAAE,CAAC;oBACnB,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;gBACtC,CAAC;YACH,CAAC;QACH,CAAC;QAED,0EAA0E;QAC1E,IAAI,KAAK,KAAK,CAAC,IAAI,SAAS,CAAC,MAAM,IAAI,CAAC,IAAI,SAAS,CAAC,MAAM,IAAI,EAAE,EAAE,CAAC;YACnE,MAAM,IAAI,GAAG,mBAAmB,CAAC,SAAS,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC;YACxD,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;YAC7D,MAAM,UAAU,GAAG,CAAC,GAAG,IAAI,GAAG,MAAM,CAAC;YACrC,IAAI,UAAU,IAAI,IAAI,EAAE,CAAC;gBACvB,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,GAAG,UAAU,CAAC,CAAC;YAC5C,CAAC;iBAAM,CAAC;gBACN,KAAK,MAAM,EAAE,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC;oBAC/B,IAAI,EAAE,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;wBACnB,MAAM,SAAS,GAAG,mBAAmB,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;wBACrD,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC;wBAC1D,MAAM,QAAQ,GAAG,CAAC,GAAG,SAAS,GAAG,WAAW,CAAC;wBAC7C,IAAI,QAAQ,IAAI,IAAI,EAAE,CAAC;4BACrB,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,GAAG,QAAQ,CAAC,CAAC;4BACxC,MAAM;wBACR,CAAC;oBACH,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;QAED,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;YACd,MAAM,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;QACvC,CAAC;IACH,CAAC;IAED,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;QACnB,IAAI,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,KAAK,EAAE,CAAC;YACxB,OAAO,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC;QAC3B,CAAC;QACD,OAAO,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACpE,CAAC,CAAC,CAAC;IAEH,MAAM,OAAO,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;IAEpD,IAAI,OAAO,EAAE,KAAK,KAAK,SAAS,EAAE,CAAC;QACjC,IAAI,OAAO,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC;YACvB,OAAO,EAAE,CAAC;QACZ,CAAC;QACD,OAAO,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;IACzC,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,mBAAmB,CACjC,OAAe,EACf,KAAa,EACb,KAAmB;IAEnB,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,EAAE,CAAC;IACxE,MAAM,WAAW,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;IACnC,MAAM,YAAY,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;IAClC,IAAI,CAAC,WAAW,IAAI,CAAC,YAAY;QAAE,OAAO,EAAE,CAAC;IAE7C,MAAM,IAAI,GACR,aAAa,CAAC,GAAG,CAAC,WAAW,CAAC,WAAW,EAAE,CAAC;QAC5C,aAAa,CAAC,GAAG,CAAC,iBAAiB,CAAC,WAAW,CAAC,CAAC,CAAC;IACpD,IAAI,CAAC,IAAI;QAAE,OAAO,EAAE,CAAC;IAErB,MAAM,OAAO,GAAG,kBAAkB,CAAC,YAAY,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;IACtE,OAAO,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;AACrC,CAAC;AAsBD,MAAM,UAAU,WAAW,CACzB,QAAgB,EAChB,SAAkC,EAClC,QAAgD;IAEhD,yEAAyE;IACzE,IAAI,OAAO,SAAS,KAAK,QAAQ,EAAE,CAAC;QAClC,MAAM,OAAO,GAAG,QAAQ,CAAC;QACzB,MAAM,KAAK,GAAG,SAAS,CAAC;QACxB,MAAM,IAAI,GAAG,QAAQ,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;QAC7C,OAAO,mBAAmB,CAAC,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;IACnD,CAAC;IAED,0CAA0C;IAC1C,MAAM,KAAK,GAAG,QAAQ,CAAC;IACvB,MAAM,OAAO,GAAG,OAAO,SAAS,KAAK,QAAQ,IAAI,SAAS,KAAK,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC;IAC5F,MAAM,cAAc,GAAG,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC;IACrE,OAAO,kBAAkB,CAAC,KAAK,EAAE,OAAO,EAAE,cAAc,CAAC,CAAC;AAC5D,CAAC"}
package/dist/types.d.ts CHANGED
@@ -51,4 +51,15 @@ export interface NearestAreaOptions {
51
51
  provinceId?: string;
52
52
  maxDistanceKm?: number;
53
53
  }
54
+ export type PakLocationType = 'province' | 'division' | 'district' | 'tehsil' | 'area';
55
+ export interface PakLocationItem {
56
+ id: string;
57
+ nameEn: string;
58
+ nameUr: string;
59
+ type: PakLocationType;
60
+ parentId?: string;
61
+ coordinates?: Coordinates;
62
+ }
63
+ export type ProvinceId = 'punjab' | 'sindh' | 'khyber-pakhtunkhwa' | 'balochistan' | 'islamabad-ict' | 'azad-jammu-kashmir' | 'gilgit-baltistan';
64
+ export type CityId = 'lahore' | 'karachi' | 'islamabad' | 'rawalpindi' | 'faisalabad' | (string & {});
54
65
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,WAAW;IAC1B,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;CACb;AAED,MAAM,MAAM,QAAQ,GAChB,cAAc,GACd,QAAQ,GACR,YAAY,GACZ,iBAAiB,GACjB,QAAQ,GACR,YAAY,GACZ,gBAAgB,CAAC;AAErB,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,WAAW,CAAC;IACzB,IAAI,CAAC,EAAE,QAAQ,CAAC;IAChB,QAAQ,EAAE,OAAO,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;CACpB;AAED,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,WAAW,CAAC;IACzB,eAAe,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACnC,MAAM,CAAC,EAAE;QACP,MAAM,EAAE,MAAM,CAAC;QACf,MAAM,EAAE,MAAM,CAAC;QACf,MAAM,EAAE,MAAM,CAAC;QACf,MAAM,EAAE,MAAM,CAAC;KAChB,CAAC;IACF,eAAe,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,MAAM,YAAY,GAAG,UAAU,GAAG,iBAAiB,GAAG,sBAAsB,CAAC;AAEnF,MAAM,WAAW,gBAAgB;IAC/B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,EAAE,MAAM,CAAC;IACtB,IAAI,EAAE,YAAY,CAAC;CACpB;AAED,MAAM,WAAW,aAAa;IAC5B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,kBAAkB;IACjC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,WAAW;IAC1B,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;CACb;AAED,MAAM,MAAM,QAAQ,GAChB,cAAc,GACd,QAAQ,GACR,YAAY,GACZ,iBAAiB,GACjB,QAAQ,GACR,YAAY,GACZ,gBAAgB,CAAC;AAErB,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,WAAW,CAAC;IACzB,IAAI,CAAC,EAAE,QAAQ,CAAC;IAChB,QAAQ,EAAE,OAAO,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;CACpB;AAED,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,WAAW,CAAC;IACzB,eAAe,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACnC,MAAM,CAAC,EAAE;QACP,MAAM,EAAE,MAAM,CAAC;QACf,MAAM,EAAE,MAAM,CAAC;QACf,MAAM,EAAE,MAAM,CAAC;QACf,MAAM,EAAE,MAAM,CAAC;KAChB,CAAC;IACF,eAAe,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,MAAM,YAAY,GAAG,UAAU,GAAG,iBAAiB,GAAG,sBAAsB,CAAC;AAEnF,MAAM,WAAW,gBAAgB;IAC/B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,EAAE,MAAM,CAAC;IACtB,IAAI,EAAE,YAAY,CAAC;CACpB;AAED,MAAM,WAAW,aAAa;IAC5B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,kBAAkB;IACjC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,MAAM,eAAe,GAAG,UAAU,GAAG,UAAU,GAAG,UAAU,GAAG,QAAQ,GAAG,MAAM,CAAC;AAEvF,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,eAAe,CAAC;IACtB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,WAAW,CAAC;CAC3B;AAED,MAAM,MAAM,UAAU,GAClB,QAAQ,GACR,OAAO,GACP,oBAAoB,GACpB,aAAa,GACb,eAAe,GACf,oBAAoB,GACpB,kBAAkB,CAAC;AAEvB,MAAM,MAAM,MAAM,GACd,QAAQ,GACR,SAAS,GACT,WAAW,GACX,YAAY,GACZ,YAAY,GACZ,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC"}
package/dist/urdu.d.ts ADDED
@@ -0,0 +1,5 @@
1
+ export declare function toWesternDigits(text: string): string;
2
+ export declare function toEasternDigits(text: string): string;
3
+ export declare function stripUrduDiacritics(text: string): string;
4
+ export declare function normalizeUrduText(text: string): string;
5
+ //# sourceMappingURL=urdu.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"urdu.d.ts","sourceRoot":"","sources":["../src/urdu.ts"],"names":[],"mappings":"AAcA,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAGpD;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAGpD;AAED,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAIxD;AAED,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAatD"}
package/dist/urdu.js ADDED
@@ -0,0 +1,44 @@
1
+ const EASTERN_TO_WESTERN_DIGITS = {
2
+ // Eastern Arabic-Indic digits (Urdu/Persian: \u06F0-\u06F9)
3
+ '۰': '0', '۱': '1', '۲': '2', '۳': '3', '۴': '4',
4
+ '۵': '5', '۶': '6', '۷': '7', '۸': '8', '۹': '9',
5
+ // Standard Arabic-Indic digits (\u0660-\u0669)
6
+ '٠': '0', '١': '1', '٢': '2', '٣': '3', '٤': '4',
7
+ '٥': '5', '٦': '6', '٧': '7', '٨': '8', '٩': '9'
8
+ };
9
+ const WESTERN_TO_EASTERN_DIGITS = {
10
+ '0': '۰', '1': '۱', '2': '۲', '3': '۳', '4': '۴',
11
+ '5': '۵', '6': '۶', '7': '۷', '8': '۸', '9': '۹'
12
+ };
13
+ export function toWesternDigits(text) {
14
+ if (typeof text !== 'string')
15
+ return '';
16
+ return text.replace(/[۰-۹\u0660-\u0669]/g, (char) => EASTERN_TO_WESTERN_DIGITS[char] || char);
17
+ }
18
+ export function toEasternDigits(text) {
19
+ if (typeof text !== 'string')
20
+ return '';
21
+ return text.replace(/[0-9]/g, (char) => WESTERN_TO_EASTERN_DIGITS[char] || char);
22
+ }
23
+ export function stripUrduDiacritics(text) {
24
+ if (typeof text !== 'string')
25
+ return '';
26
+ // Unicode range for Arabic/Urdu diacritics / tashkeel and Tatweel (\u0640)
27
+ return text.replace(/[\u0640\u064B-\u065F\u0670]/g, '');
28
+ }
29
+ export function normalizeUrduText(text) {
30
+ if (typeof text !== 'string')
31
+ return '';
32
+ let str = stripUrduDiacritics(text);
33
+ // Normalize Arabic Yeh (ي) & Alef Maksura (ى) to Urdu Yeh (ی)
34
+ str = str.replace(/[\u064A\u0649]/g, '\u06CC');
35
+ // Normalize Arabic Kaf (ك) to Urdu Keheh (ک)
36
+ str = str.replace(/\u0643/g, '\u06A9');
37
+ // Normalize Arabic Heh (ه) to Urdu Goal Heh (ہ)
38
+ str = str.replace(/\u0647/g, '\u06C1');
39
+ // Unify numerals to Western digits for robust matching
40
+ str = toWesternDigits(str);
41
+ // Normalize whitespace
42
+ return str.trim().replace(/\s+/g, ' ');
43
+ }
44
+ //# sourceMappingURL=urdu.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"urdu.js","sourceRoot":"","sources":["../src/urdu.ts"],"names":[],"mappings":"AAAA,MAAM,yBAAyB,GAA2B;IACxD,4DAA4D;IAC5D,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG;IAChD,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG;IAChD,+CAA+C;IAC/C,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG;IAChD,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG;CACjD,CAAC;AAEF,MAAM,yBAAyB,GAA2B;IACxD,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG;IAChD,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG;CACjD,CAAC;AAEF,MAAM,UAAU,eAAe,CAAC,IAAY;IAC1C,IAAI,OAAO,IAAI,KAAK,QAAQ;QAAE,OAAO,EAAE,CAAC;IACxC,OAAO,IAAI,CAAC,OAAO,CAAC,qBAAqB,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,yBAAyB,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC;AAChG,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,IAAY;IAC1C,IAAI,OAAO,IAAI,KAAK,QAAQ;QAAE,OAAO,EAAE,CAAC;IACxC,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,yBAAyB,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC;AACnF,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,IAAY;IAC9C,IAAI,OAAO,IAAI,KAAK,QAAQ;QAAE,OAAO,EAAE,CAAC;IACxC,2EAA2E;IAC3E,OAAO,IAAI,CAAC,OAAO,CAAC,8BAA8B,EAAE,EAAE,CAAC,CAAC;AAC1D,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,IAAY;IAC5C,IAAI,OAAO,IAAI,KAAK,QAAQ;QAAE,OAAO,EAAE,CAAC;IACxC,IAAI,GAAG,GAAG,mBAAmB,CAAC,IAAI,CAAC,CAAC;IACpC,8DAA8D;IAC9D,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,iBAAiB,EAAE,QAAQ,CAAC,CAAC;IAC/C,6CAA6C;IAC7C,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;IACvC,gDAAgD;IAChD,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;IACvC,uDAAuD;IACvD,GAAG,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC;IAC3B,uBAAuB;IACvB,OAAO,GAAG,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;AACzC,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "pak-geodata",
3
- "version": "0.1.0",
3
+ "version": "0.2.2",
4
4
  "description": "Comprehensive, typed, offline geographic data for all areas and cities in Pakistan",
5
5
  "author": "Sohaib Bin Mohsin <sohaibbinmohsin@gmail.com> (https://sohaibbinmohsin.com)",
6
6
  "contributors": [
@@ -17,6 +17,11 @@
17
17
  "import": "./dist/index.js",
18
18
  "require": "./dist/index.cjs"
19
19
  },
20
+ "./hierarchy": {
21
+ "types": "./dist/hierarchy.d.ts",
22
+ "import": "./dist/hierarchy.js",
23
+ "require": "./dist/hierarchy.cjs"
24
+ },
20
25
  "./areas/*": {
21
26
  "types": "./dist/areas/*.d.ts",
22
27
  "import": "./dist/areas/*.js",