pak-geodata 0.4.0 → 0.5.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 CHANGED
@@ -16,7 +16,7 @@ Designed with **zero runtime dependencies**, strict geofencing, sub-millisecond
16
16
  - **Dual Module Support**: Full ESM (`import`) and CommonJS (`require`) support.
17
17
  - **Bilingual Administrative Hierarchy (`PakLocationItem`)**: Unified administrative data structure connecting provinces, cities/districts, and areas with synchronized English and Urdu names.
18
18
  - **Resilient O(1) Key Lookups**: Pre-indexed instant resolution via `getCityName(key, lang)` and `getAreaName(cityKey, areaKey, lang)` supporting case-insensitive slugs, title names, and colloquial aliases.
19
- - **Lightweight PWA Subpath (`pak-geodata/hierarchy`)**: Code-split micro-bundle (< 5 KB gzipped) designed specifically for offline-first emergency response Progressive Web Apps.
19
+ - **Lightweight PWA Subpath (`pak-geodata/hierarchy`)**: Code-split micro-bundle (< 5 KB gzipped) designed specifically for offline-first Progressive Web Apps and reporting workflows.
20
20
  - **Urdu Script & Numeral Normalization**: Robust bidirectional matching across Eastern Arabic numerals (`۳` vs `3`), Urdu letter variants (`ي` vs `ی`, `ك` vs `ک`), and diacritic stripping.
21
21
  - **Subpath Tree-Shaking**: Import only the areas you need (e.g. `pak-geodata/areas/lahore`) to keep your bundle footprint under a few kilobytes.
22
22
  - **Offline & Self-Contained**: All verified golden datasets are bundled with the library: no remote API calls or latency.
@@ -207,7 +207,7 @@ console.log(provinces[0]); // { id: 'punjab', nameEn: 'Punjab', nameUr: 'پنج
207
207
  const punjabCities = getCitiesAsLocationItems('punjab');
208
208
  console.log(`Punjab has ${punjabCities.length} verified cities/districts`);
209
209
 
210
- // 3. City-scoped bilingual search (Sanctuary overload)
210
+ // 3. City-scoped bilingual search (returns PakLocationItem[])
211
211
  const results = searchAreas('Lahore', 'DHA 5', 'ur');
212
212
  console.log(results[0]);
213
213
  // { id: 'lahore-dha-phase-5', nameEn: 'DHA Phase 5', nameUr: 'ڈی ایچ اے فیز ۵', type: 'area', parentId: 'lahore', ... }
@@ -215,408 +215,34 @@ console.log(results[0]);
215
215
 
216
216
  ---
217
217
 
218
- ## Sanctuary Integration Guide
218
+ ## Bilingual Hierarchy & Lightweight PWA Subpath
219
219
 
220
- This guide documents the design patterns, data contracts, and implementation specifications built into `pak-geodata` for **Sanctuary**—an offline-first emergency rescue reporting and tracking Progressive Web App (PWA) operating across Pakistan.
221
-
222
- ### 1. Bilingual Administrative Hierarchy (`PakLocationItem`)
223
-
224
- Emergency dispatching, disaster triage, and community reporting span multiple administrative tiers. Rather than handling disconnected data shapes for provinces, cities, and neighborhoods, `pak-geodata` provides a unified data contract: `PakLocationItem`.
225
-
226
- ```typescript
227
- export type PakLocationType = 'province' | 'division' | 'district' | 'tehsil' | 'area';
228
-
229
- export interface PakLocationItem {
230
- id: string; // Canonical identifier (e.g. "punjab", "lahore", "lahore-gulberg-iii")
231
- nameEn: string; // Standardized English name (e.g. "Punjab", "Lahore", "Gulberg III")
232
- nameUr: string; // Native Urdu script (e.g. "پنجاب", "لاہور", "گلبرگ ۳")
233
- type: PakLocationType; // Administrative level
234
- parentId?: string; // Hierarchy linkage: area -> cityId -> provinceId
235
- coordinates?: {
236
- lat: number;
237
- lng: number;
238
- };
239
- }
240
- ```
241
-
242
- #### Hierarchy Traversal Functions
243
-
244
- - **`getProvincesAsLocationItems(): PakLocationItem[]`**
245
- Returns all 7 provinces and federal territories (`type: 'province'`, `parentId: undefined`).
246
- - **`getCitiesAsLocationItems(provinceId?: string): PakLocationItem[]`**
247
- Returns all 79 verified municipal cities/districts (`type: 'district'`, `parentId: provinceId`). If `provinceId` is provided, filters cities belonging to that province.
248
- - **`getAreasAsLocationItems(cityKey: string): PakLocationItem[]`**
249
- Returns all verified areas in a given city (`type: 'area'`, `parentId: cityId`).
250
- - **`toLocationItem(entity)`**
251
- Universal converter accepting any `PakistanProvince`, `PakistanCity`, or `PakistanArea` object and mapping it to a standard `PakLocationItem`.
220
+ For applications requiring hierarchical administrative selection (Province → City/District → Area), `pak-geodata` provides a unified bilingual interface `PakLocationItem` and an ultra-lightweight `< 5 KB` gzipped subpath export:
252
221
 
253
222
  ```typescript
254
223
  import {
255
224
  getProvincesAsLocationItems,
256
225
  getCitiesAsLocationItems,
257
- getAreasAsLocationItems
258
- } from 'pak-geodata';
226
+ getAreasAsLocationItems,
227
+ getCityName,
228
+ getAreaName,
229
+ searchAreas
230
+ } from 'pak-geodata/hierarchy'; // Ultra-lightweight subpath (< 5 KB gzipped)
259
231
 
260
- // Load provinces
232
+ // 1. Traverse administrative hierarchy
261
233
  const provinces = getProvincesAsLocationItems();
262
-
263
- // Load cities in Sindh
264
234
  const sindhCities = getCitiesAsLocationItems('sindh');
265
-
266
- // Load areas in Karachi
267
235
  const karachiAreas = getAreasAsLocationItems('karachi');
268
- ```
269
-
270
- ---
271
-
272
- ### 2. Standardized English Storage & Real-Time Localized Display
273
-
274
- #### Architectural Rationale
275
- In distributed emergency rescue architectures (PostgreSQL, SQLite, PowerSync, CouchDB), storing free-form Urdu or mixed-script strings in core database records causes severe indexing fragmentation, duplicate collation issues, and inter-agency sync friction.
276
-
277
- **The Golden Pattern:**
278
- 1. **Database / Persistence Layer**: Always persist canonical, standardized English keys (`city: "Lahore"`, `location_area: "Gulberg"` or `"Gulberg III"`).
279
- 2. **Presentation / UI Layer**: Resolve these keys dynamically at render time into English or native Urdu Nastaliq using resilient O(1) lookup helpers.
280
236
 
281
- #### Resilient O(1) Lookup Helpers
237
+ // 2. Resilient O(1) lookups (English & native Urdu Nastaliq)
238
+ console.log(getCityName('lahore', 'ur')); // "لاہور"
239
+ console.log(getAreaName('lahore', 'Gulberg', 'ur')); // "گلبرگ ۳"
282
240
 
283
- - **`getCityName(key: string, lang?: 'en' | 'ur'): string`**
284
- Resolves a city slug (`"lahore"`), title-cased name (`"Lahore"`), or Urdu representation (`"لاہور"`) to the requested language.
285
- - `getCityName("lahore", "ur")` $\rightarrow$ `"لاہور"`
286
- - `getCityName("Lahore", "en")` $\rightarrow$ `"Lahore"`
287
- - Resilient fallback: returns the raw `key` if the city is custom or unverified.
288
-
289
- - **`getAreaName(cityKey: string, areaKey: string, lang?: 'en' | 'ur'): string`**
290
- Resolves an area within a city using compound O(1) indexing (`${cityKey}:${areaKey}`). Supports:
291
- - Canonical slugs: `"lahore-gulberg-iii"`
292
- - Local slugs without city prefix: `"gulberg-iii"`
293
- - Title names: `"Gulberg III"`
294
- - Colloquial aliases: `"Gulberg"`, `"dha 5"`
295
- - Urdu script queries: `"گلبرگ ۳"`
296
- - Returns: `"Gulberg III"` (for `'en'`) or `"گلبرگ ۳"` (for `'ur'`).
297
- - Resilient fallback: returns `areaKey` unchanged if unverified or custom-entered.
298
-
299
- ```typescript
300
- import { getCityName, getAreaName } from 'pak-geodata';
301
-
302
- // Standardized DB Record:
303
- const record = { city: 'Lahore', location_area: 'Gulberg' };
304
-
305
- // English display:
306
- console.log(`${getAreaName(record.city, record.location_area, 'en')}, ${getCityName(record.city, 'en')}`);
307
- // "Gulberg III, Lahore"
308
-
309
- // Urdu display:
310
- console.log(`${getCityName(record.city, 'ur')}، ${getAreaName(record.city, record.location_area, 'ur')}`);
311
- // "لاہور، گلبرگ ۳"
312
- ```
313
-
314
- ---
315
-
316
- ### 3. Autocomplete Search with Overloaded `searchAreas` & Urdu Normalization
317
-
318
- Sanctuary requires responsive autocomplete search scoped to a chosen city, returning typed `PakLocationItem[]` results.
319
-
320
- #### Function Overload Signatures
321
-
322
- `pak-geodata` supports two search calling styles:
323
-
324
- ```typescript
325
- // 1. Sanctuary Overload (city-scoped, returns PakLocationItem[])
326
- function searchAreas(cityKey: string, query: string, lang?: 'en' | 'ur'): PakLocationItem[];
327
-
328
- // 2. Direct Named Function (same as Sanctuary overload)
329
- function searchLocationItems(cityKey: string, query: string, lang?: 'en' | 'ur'): PakLocationItem[];
330
-
331
- // 3. Classic GIS Overload (global or options-based, returns raw PakistanArea[])
332
- function searchAreas(query: string, options?: SearchOptions, candidateAreas?: readonly PakistanArea[]): PakistanArea[];
333
- ```
334
-
335
- #### Urdu Script & Numeral Normalization Engine
336
-
337
- Mobile users and rescue field operators in Pakistan frequently switch between English, Urdu Nastaliq keyboards, and Arabic numeral settings. `pak-geodata` transparently pre-normalizes search terms with zero runtime performance cost:
338
- - **Numeral Unification**: Eastern Arabic-Indic numerals (`۰-۹`), standard Arabic-Indic digits (`٠-٩`), and Western digits (`0-9`) match bidirectionally (`"گلبرگ ۳"` or `"گلبرگ ٣"` matches `"Gulberg 3"`).
339
- - **Letter Variant Normalization**:
340
- - Arabic Yeh (`ي`, U+064A) and Alef Maksura (`ى`, U+0649) map to Urdu Yeh (`ی`, U+06CC).
341
- - Arabic Kaf (`ك`, U+0643) maps to Urdu Keheh (`ک`, U+06A9).
342
- - Arabic Heh (`ه`, U+0647) maps to Urdu Goal Heh (`ہ`, U+06C1).
343
- - **Diacritic / Tashkeel & Tatweel Stripping**: Removes Zabar, Zer, Pesh, Tanween, Tashdeed, Sukun, and Tatweel/Kashida (`[\u0640\u064B-\u065F\u0670]`).
344
-
345
- ```typescript
346
- import { searchAreas } from 'pak-geodata';
347
-
348
- // Eastern numeral search returns matched PakLocationItem
241
+ // 3. City-scoped autocomplete search
349
242
  const results = searchAreas('Lahore', 'گلبرگ ۳', 'ur');
350
- console.log(results[0].nameEn); // "Gulberg III"
351
- console.log(results[0].nameUr); // "گلبرگ ۳"
352
- ```
353
-
354
- ---
355
-
356
- ### 4. Lightweight PWA Subpath (`pak-geodata/hierarchy`)
357
-
358
- PWAs operating in low-connectivity 2G/3G environments must minimize JavaScript bundle sizes. The `./hierarchy` subpath contains administrative boundaries and O(1) lookup engines with **zero neighborhood geospatial overhead**:
359
-
360
- ```typescript
361
- // ESM or CommonJS import
362
- import {
363
- getCityName,
364
- getAreaName,
365
- getProvincesAsLocationItems,
366
- getCitiesAsLocationItems,
367
- getAreasAsLocationItems,
368
- searchLocationItems,
369
- toLocationItem
370
- } from 'pak-geodata/hierarchy';
371
243
  ```
372
244
 
373
- - **Bundle footprint**: `< 15 KB` unminified, **`< 5 KB` gzipped**.
374
- - Perfect for initial service worker caching, instant app shell startup, and background tracking views.
375
- - City-specific areas can be dynamically loaded on demand when the user selects a city via `pak-geodata/areas/<city>`.
376
-
377
- ---
378
-
379
- ### 5. Production Implementation Examples
380
-
381
- #### Example 1: Emergency Incident Reporting Form (`/report`)
382
-
383
- This component demonstrates how a reporting intake form allows a user to select a city, search areas with real-time bilingual feedback, and submit standardized English keys into the database:
384
-
385
- ```typescript
386
- import React, { useState, useMemo } from 'react';
387
- import {
388
- getCitiesAsLocationItems,
389
- searchAreas,
390
- type PakLocationItem
391
- } from 'pak-geodata';
392
-
393
- interface IncidentReportPayload {
394
- reportNumber: string;
395
- city: string; // Standardized English: e.g. "Lahore"
396
- location_area: string; // Standardized English: e.g. "Gulberg III"
397
- coordinates?: {
398
- lat: number;
399
- lng: number;
400
- };
401
- notes: string;
402
- }
403
-
404
- interface IncidentReportFormProps {
405
- lang: 'en' | 'ur';
406
- onSubmitReport: (payload: IncidentReportPayload) => Promise<void>;
407
- }
408
-
409
- export function IncidentReportForm({ lang, onSubmitReport }: IncidentReportFormProps) {
410
- const [selectedCityId, setSelectedCityId] = useState<string>('lahore');
411
- const [areaQuery, setAreaQuery] = useState<string>('');
412
- const [selectedArea, setSelectedArea] = useState<PakLocationItem | null>(null);
413
- const [notes, setNotes] = useState<string>('');
414
- const [isSubmitting, setIsSubmitting] = useState<boolean>(false);
415
-
416
- // 1. Load city options formatted for current language
417
- const cities = useMemo(() => getCitiesAsLocationItems(), []);
418
-
419
- // 2. City-scoped bilingual search: handles Urdu script, Eastern numerals ('۳'), and aliases
420
- const areaSuggestions = useMemo(() => {
421
- if (!areaQuery.trim() || !selectedCityId) return [];
422
- // Invokes overloaded Sanctuary signature: searchAreas(cityKey, query, lang)
423
- return searchAreas(selectedCityId, areaQuery, lang);
424
- }, [selectedCityId, areaQuery, lang]);
425
-
426
- const handleSubmit = async (e: React.FormEvent) => {
427
- e.preventDefault();
428
- if (!selectedArea) return;
429
-
430
- setIsSubmitting(true);
431
- try {
432
- const selectedCityObj = cities.find((c) => c.id === selectedCityId);
433
-
434
- // 3. Persist standardized English keys to database / backend
435
- const payload: IncidentReportPayload = {
436
- reportNumber: `SANCTUARY-${Date.now().toString().slice(-6)}`,
437
- city: selectedCityObj?.nameEn || selectedCityId, // Persist English: "Lahore"
438
- location_area: selectedArea.nameEn, // Persist English: "Gulberg III"
439
- coordinates: selectedArea.coordinates,
440
- notes
441
- };
442
-
443
- await onSubmitReport(payload);
444
- setAreaQuery('');
445
- setSelectedArea(null);
446
- setNotes('');
447
- } finally {
448
- setIsSubmitting(false);
449
- }
450
- };
451
-
452
- return (
453
- <form className="incident-form" onSubmit={handleSubmit} dir={lang === 'ur' ? 'rtl' : 'ltr'}>
454
- <h2>{lang === 'ur' ? 'ایمرجنسی رپورٹ درج کریں' : 'Submit Emergency Report'}</h2>
455
-
456
- {/* City Dropdown */}
457
- <div className="form-group">
458
- <label htmlFor="city-select">
459
- {lang === 'ur' ? 'شہر منتخب کریں' : 'Select City'}
460
- </label>
461
- <select
462
- id="city-select"
463
- value={selectedCityId}
464
- onChange={(e) => {
465
- setSelectedCityId(e.target.value);
466
- setSelectedArea(null);
467
- setAreaQuery('');
468
- }}
469
- >
470
- {cities.map((city) => (
471
- <option key={city.id} value={city.id}>
472
- {lang === 'ur' ? city.nameUr : city.nameEn}
473
- </option>
474
- ))}
475
- </select>
476
- </div>
477
-
478
- {/* Area Search / Combobox */}
479
- <div className="form-group autocomplete-container">
480
- <label htmlFor="area-search">
481
- {lang === 'ur' ? 'علاقہ / سیکٹر / محلہ' : 'Area / Neighborhood'}
482
- </label>
483
- <input
484
- id="area-search"
485
- type="text"
486
- value={areaQuery}
487
- onChange={(e) => {
488
- setAreaQuery(e.target.value);
489
- setSelectedArea(null);
490
- }}
491
- placeholder={lang === 'ur' ? 'تلاش کریں (مثلاً: گلبرگ، ڈی ایچ اے، ۳)' : 'Search (e.g. Gulberg, DHA, Phase 5)'}
492
- autoComplete="off"
493
- />
494
-
495
- {/* Suggestion Dropdown */}
496
- {areaSuggestions.length > 0 && !selectedArea && (
497
- <ul className="suggestions-list">
498
- {areaSuggestions.map((item) => (
499
- <li
500
- key={item.id}
501
- onClick={() => {
502
- setSelectedArea(item);
503
- setAreaQuery(lang === 'ur' ? item.nameUr : item.nameEn);
504
- }}
505
- >
506
- <span className="suggestion-primary">
507
- {lang === 'ur' ? item.nameUr : item.nameEn}
508
- </span>
509
- <span className="suggestion-secondary">
510
- {lang === 'ur' ? item.nameEn : item.nameUr}
511
- </span>
512
- </li>
513
- ))}
514
- </ul>
515
- )}
516
- </div>
517
-
518
- {/* Additional Notes */}
519
- <div className="form-group">
520
- <label htmlFor="notes">
521
- {lang === 'ur' ? 'واقعے کی تفصیلات' : 'Incident Details'}
522
- </label>
523
- <textarea
524
- id="notes"
525
- value={notes}
526
- onChange={(e) => setNotes(e.target.value)}
527
- rows={3}
528
- />
529
- </div>
530
-
531
- <button type="submit" disabled={!selectedArea || isSubmitting}>
532
- {isSubmitting
533
- ? (lang === 'ur' ? 'رپورٹ بھیجی جا رہی ہے...' : 'Submitting...')
534
- : (lang === 'ur' ? 'ایمرجنسی ٹیم طلب کریں' : 'Request Emergency Rescue')}
535
- </button>
536
- </form>
537
- );
538
- }
539
- ```
540
-
541
- ---
542
-
543
- #### Example 2: Emergency Incident Tracking View (`/report/track/:reportNumber`)
544
-
545
- This component demonstrates how an incident tracking view loads a database record with standardized English fields and dynamically resolves the city and area names using the lightweight `< 5 KB` `pak-geodata/hierarchy` subpath:
546
-
547
- ```typescript
548
- import React from 'react';
549
- import {
550
- getCityName,
551
- getAreaName
552
- } from 'pak-geodata/hierarchy'; // Ultra-lightweight subpath (< 5 KB gzipped)
553
-
554
- export interface RescueIncidentRecord {
555
- reportNumber: string;
556
- city: string; // Stored English key: e.g. "Lahore"
557
- location_area: string; // Stored English key or alias: e.g. "Gulberg"
558
- status: 'RECEIVED' | 'DISPATCHED' | 'EN_ROUTE' | 'ON_SCENE' | 'RESOLVED';
559
- reportedAt: string;
560
- }
561
-
562
- interface IncidentTrackingViewProps {
563
- incident: RescueIncidentRecord;
564
- lang: 'en' | 'ur';
565
- }
566
-
567
- export function IncidentTrackingView({ incident, lang }: IncidentTrackingViewProps) {
568
- // O(1) Resilient Lookups: resolves slugs, English names, and aliases in O(1) time
569
- // e.g. "Lahore" -> "لاہور", "Gulberg" -> "گلبرگ ۳"
570
- const localizedCity = getCityName(incident.city, lang);
571
- const localizedArea = getAreaName(incident.city, incident.location_area, lang);
572
-
573
- const statusMap = {
574
- RECEIVED: { en: 'Report Received', ur: 'رپورٹ موصول ہو چکی ہے', color: '#f59e0b' },
575
- DISPATCHED: { en: 'Rescue Team Dispatched', ur: 'ریسکیو ٹیم روانہ ہو چکی ہے', color: '#3b82f6' },
576
- EN_ROUTE: { en: 'En Route to Location', ur: 'ٹیم جائے وقوعہ کی طرف گامزن ہے', color: '#6366f1' },
577
- ON_SCENE: { en: 'Team on Scene', ur: 'ٹیم جائے وقوعہ پر پہنچ چکی ہے', color: '#10b981' },
578
- RESOLVED: { en: 'Incident Resolved', ur: 'ریسکیو مشن مکمل', color: '#059669' }
579
- };
580
-
581
- const currentStatus = statusMap[incident.status] || statusMap.RECEIVED;
582
-
583
- return (
584
- <div className="tracking-card" dir={lang === 'ur' ? 'rtl' : 'ltr'}>
585
- <header className="tracking-header">
586
- <span className="badge">
587
- {lang === 'ur' ? 'رپورٹ نمبر:' : 'Report #:'} {incident.reportNumber}
588
- </span>
589
- <span className="timestamp">
590
- {new Date(incident.reportedAt).toLocaleTimeString()}
591
- </span>
592
- </header>
593
-
594
- {/* Localized Location Display */}
595
- <div className="tracking-location-section">
596
- <div className="location-pin">📍</div>
597
- <div className="location-details">
598
- <h3>
599
- {lang === 'ur'
600
- ? `${localizedCity}، ${localizedArea}`
601
- : `${localizedArea}, ${localizedCity}`}
602
- </h3>
603
- <p className="canonical-subtext">
604
- {incident.location_area}, {incident.city}
605
- </p>
606
- </div>
607
- </div>
608
-
609
- {/* Real-time Status */}
610
- <div className="tracking-status" style={{ borderColor: currentStatus.color }}>
611
- <div className="status-indicator" style={{ backgroundColor: currentStatus.color }} />
612
- <span className="status-label">
613
- {currentStatus[lang]}
614
- </span>
615
- </div>
616
- </div>
617
- );
618
- }
619
- ```
245
+ > 📖 **Full Implementation Recipe**: For complete React form components, real-time localized display patterns, and offline database persistence, see the [Bilingual Reporting & Tracking PWA Recipe](https://github.com/sohaibbinmohsin/pak-geodata/blob/main/docs/recipes/bilingual-reporting-pwa.md).
620
246
 
621
247
  ---
622
248
 
package/dist/search.d.ts CHANGED
@@ -3,11 +3,11 @@ import type { PakistanArea, SearchOptions, PakLocationItem } from './types.js';
3
3
  * Searches areas within a specific city and returns ranked results as PakLocationItem[].
4
4
  *
5
5
  * Each returned PakLocationItem always contains both English (`nameEn`) and Urdu (`nameUr`) names.
6
- * The `_lang` parameter is accepted for Sanctuary compatibility.
6
+ * The `_lang` parameter is accepted for caller compatibility.
7
7
  *
8
8
  * @param cityKey - City identifier, English name, or Urdu name
9
9
  * @param query - Search term (English or Urdu)
10
- * @param _lang - Optional language code accepted for Sanctuary compatibility
10
+ * @param _lang - Optional language code accepted for caller compatibility
11
11
  * @returns Ranked array of PakLocationItem elements
12
12
  */
13
13
  export declare function searchLocationItems(cityKey: string, query: string, _lang?: 'en' | 'ur'): PakLocationItem[];
@@ -15,7 +15,7 @@ export declare function searchLocationItems(cityKey: string, query: string, _lan
15
15
  * Searches Pakistan areas using structured matching and ranking:
16
16
  * Exact match > Prefix match > Alias match > Substring / Token match > Fuzzy match.
17
17
  *
18
- * Overload 1 (Sanctuary signature):
18
+ * Overload 1 (City-scoped bilingual signature):
19
19
  * searchAreas(cityKey: string, query: string, lang?: 'en' | 'ur'): PakLocationItem[]
20
20
  *
21
21
  * Overload 2 (Classic signature):
package/dist/search.js CHANGED
@@ -215,11 +215,11 @@ function classicSearchAreas(query, options, candidateAreas = allAreas) {
215
215
  * Searches areas within a specific city and returns ranked results as PakLocationItem[].
216
216
  *
217
217
  * Each returned PakLocationItem always contains both English (`nameEn`) and Urdu (`nameUr`) names.
218
- * The `_lang` parameter is accepted for Sanctuary compatibility.
218
+ * The `_lang` parameter is accepted for caller compatibility.
219
219
  *
220
220
  * @param cityKey - City identifier, English name, or Urdu name
221
221
  * @param query - Search term (English or Urdu)
222
- * @param _lang - Optional language code accepted for Sanctuary compatibility
222
+ * @param _lang - Optional language code accepted for caller compatibility
223
223
  * @returns Ranked array of PakLocationItem elements
224
224
  */
225
225
  export function searchLocationItems(cityKey, query, _lang) {
@@ -237,7 +237,7 @@ export function searchLocationItems(cityKey, query, _lang) {
237
237
  return results.map(toLocationItem);
238
238
  }
239
239
  export function searchAreas(firstArg, secondArg, thirdArg) {
240
- // Runtime dispatch: when argument 2 is a string, route to Sanctuary mode
240
+ // Runtime dispatch: when argument 2 is a string, route to city-scoped bilingual mode
241
241
  if (typeof secondArg === 'string') {
242
242
  const cityKey = firstArg;
243
243
  const query = secondArg;
@@ -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":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "pak-geodata",
3
- "version": "0.4.0",
3
+ "version": "0.5.0",
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": [