@code-plate/iran-cities 1.2.0 → 2.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/CHANGELOG.md +45 -0
- package/LICENSE +21 -0
- package/MIGRATION.fa.md +277 -0
- package/MIGRATION.md +272 -0
- package/NOTICE.md +17 -0
- package/README.fa.md +528 -201
- package/README.md +524 -201
- package/dist/boundaries.cjs +9218 -0
- package/dist/boundaries.cjs.map +1 -0
- package/dist/boundaries.d.cts +30 -0
- package/dist/boundaries.d.mts +30 -0
- package/dist/boundaries.mjs +9215 -0
- package/dist/boundaries.mjs.map +1 -0
- package/dist/changes-B-wz9-Gy.cjs +841 -0
- package/dist/changes-B-wz9-Gy.cjs.map +1 -0
- package/dist/changes-CMVZbfZO.d.mts +8 -0
- package/dist/changes-DLZkHBwZ.mjs +800 -0
- package/dist/changes-DLZkHBwZ.mjs.map +1 -0
- package/dist/changes-DnnwRAKl.d.cts +8 -0
- package/dist/components-B7060em0.mjs +240 -0
- package/dist/components-B7060em0.mjs.map +1 -0
- package/dist/components-BuMUB7XT.d.cts +47 -0
- package/dist/components-DZz72pd1.d.mts +47 -0
- package/dist/components-grWmOsaV.cjs +247 -0
- package/dist/components-grWmOsaV.cjs.map +1 -0
- package/dist/components.css +251 -0
- package/dist/data/cities.csv +1253 -0
- package/dist/data/cities.json +23305 -0
- package/dist/data/iran-cities.sql +1487 -0
- package/dist/data/iran-provinces.geojson +1 -0
- package/dist/data/provinces.csv +32 -0
- package/dist/data/provinces.json +460 -0
- package/dist/hooks-C6kjWLIE.mjs +134 -0
- package/dist/hooks-C6kjWLIE.mjs.map +1 -0
- package/dist/hooks-K7pTMF2R.cjs +139 -0
- package/dist/hooks-K7pTMF2R.cjs.map +1 -0
- package/dist/index.cjs +30 -9307
- package/dist/index.d.cts +25 -0
- package/dist/index.d.mts +25 -25
- package/dist/index.mjs +3 -9264
- package/dist/lite-CtNPRhU-.mjs +1926 -0
- package/dist/lite-CtNPRhU-.mjs.map +1 -0
- package/dist/lite-CutarzAc.cjs +2051 -0
- package/dist/lite-CutarzAc.cjs.map +1 -0
- package/dist/lite-react-1HVWJOWt.cjs +55 -0
- package/dist/lite-react-1HVWJOWt.cjs.map +1 -0
- package/dist/lite-react-Ds-DNmEi.mjs +20 -0
- package/dist/lite-react-Ds-DNmEi.mjs.map +1 -0
- package/dist/lite-react-components.cjs +12 -0
- package/dist/lite-react-components.cjs.map +1 -0
- package/dist/lite-react-components.d.cts +5 -0
- package/dist/lite-react-components.d.mts +5 -0
- package/dist/lite-react-components.mjs +11 -0
- package/dist/lite-react-components.mjs.map +1 -0
- package/dist/lite-react.cjs +8 -0
- package/dist/lite-react.d.cts +7 -0
- package/dist/lite-react.d.mts +7 -0
- package/dist/lite-react.mjs +2 -0
- package/dist/lite.cjs +28 -0
- package/dist/lite.d.cts +23 -0
- package/dist/lite.d.mts +23 -0
- package/dist/lite.mjs +3 -0
- package/dist/react-BKmJ476x.mjs +20 -0
- package/dist/react-BKmJ476x.mjs.map +1 -0
- package/dist/react-BZV3TkXB.cjs +55 -0
- package/dist/react-BZV3TkXB.cjs.map +1 -0
- package/dist/react-components.cjs +12 -0
- package/dist/react-components.cjs.map +1 -0
- package/dist/react-components.d.cts +5 -0
- package/dist/react-components.d.mts +5 -0
- package/dist/react-components.mjs +11 -0
- package/dist/react-components.mjs.map +1 -0
- package/dist/react.cjs +8 -9310
- package/dist/react.d.cts +7 -0
- package/dist/react.d.mts +7 -30
- package/dist/react.mjs +2 -9281
- package/dist/rolldown-runtime-78lK1XfQ.cjs +42 -0
- package/dist/rolldown-runtime-D3KUYPsf.mjs +12 -0
- package/dist/src-DRaUVbc4.mjs +4302 -0
- package/dist/src-DRaUVbc4.mjs.map +1 -0
- package/dist/src-mqZTwJfQ.cjs +4439 -0
- package/dist/src-mqZTwJfQ.cjs.map +1 -0
- package/dist/types/boundaries.d.ts +30 -0
- package/dist/types/changes.d.ts +4 -0
- package/dist/types/components.d.ts +47 -0
- package/dist/types/core.d.ts +25 -0
- package/dist/types/geo.d.ts +2 -0
- package/dist/types/hooks.d.ts +2 -0
- package/dist/types/index.d.ts +28 -0
- package/dist/types/keyboard.d.ts +3 -0
- package/dist/types/lite-react-components.d.ts +5 -0
- package/dist/types/lite-react.d.ts +7 -0
- package/dist/types/lite.d.ts +26 -0
- package/dist/types/normalize.d.ts +1 -0
- package/dist/types/packed.d.ts +16 -0
- package/dist/types/react-components.d.ts +5 -0
- package/dist/types/react.d.ts +7 -0
- package/dist/types/types.d.ts +149 -0
- package/dist/types/valibot.d.ts +23 -0
- package/dist/types/validation-shared.d.ts +11 -0
- package/dist/types/zod.d.ts +23 -0
- package/dist/types-Ds_b0yHP.d.cts +150 -0
- package/dist/types-Ds_b0yHP.d.mts +150 -0
- package/dist/valibot.cjs +47 -0
- package/dist/valibot.cjs.map +1 -0
- package/dist/valibot.d.cts +21 -0
- package/dist/valibot.d.mts +21 -0
- package/dist/valibot.mjs +38 -0
- package/dist/valibot.mjs.map +1 -0
- package/dist/validation-shared-BFilTuY1.cjs +58 -0
- package/dist/validation-shared-BFilTuY1.cjs.map +1 -0
- package/dist/validation-shared-C7l2cv4e.d.cts +8 -0
- package/dist/validation-shared-CJjGRx8p.d.mts +7 -0
- package/dist/validation-shared-mh_saZne.mjs +29 -0
- package/dist/validation-shared-mh_saZne.mjs.map +1 -0
- package/dist/zod.cjs +49 -0
- package/dist/zod.cjs.map +1 -0
- package/dist/zod.d.cts +21 -0
- package/dist/zod.d.mts +21 -0
- package/dist/zod.mjs +42 -0
- package/dist/zod.mjs.map +1 -0
- package/package.json +167 -22
- package/dist/index.cjs.map +0 -1
- package/dist/index.d.ts +0 -25
- package/dist/index.mjs.map +0 -1
- package/dist/react.cjs.map +0 -1
- package/dist/react.d.ts +0 -30
- package/dist/react.mjs.map +0 -1
- package/dist/types-DwK3g-Z0.d.mts +0 -53
- package/dist/types-DwK3g-Z0.d.ts +0 -53
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"changes-B-wz9-Gy.cjs","names":[],"sources":["../src/keyboard.ts","../src/normalize.ts","../src/core.ts","../src/packed.ts","../src/changes.ts"],"sourcesContent":["const LATIN_TO_PERSIAN: Readonly<Record<string, string>> = {\r\n q: 'ض',\r\n w: 'ص',\r\n e: 'ث',\r\n r: 'ق',\r\n t: 'ف',\r\n y: 'غ',\r\n u: 'ع',\r\n i: 'ه',\r\n o: 'خ',\r\n p: 'ح',\r\n '[': 'ج',\r\n ']': 'چ',\r\n a: 'ش',\r\n s: 'س',\r\n d: 'ی',\r\n f: 'ب',\r\n g: 'ل',\r\n h: 'ا',\r\n j: 'ت',\r\n k: 'ن',\r\n l: 'م',\r\n ';': 'ک',\r\n \"'\": 'گ',\r\n z: 'ظ',\r\n x: 'ط',\r\n c: 'ز',\r\n v: 'ر',\r\n b: 'ذ',\r\n n: 'د',\r\n m: 'پ',\r\n ',': 'و',\r\n '\\\\': 'پ',\r\n '`': 'پ',\r\n C: 'ژ',\r\n H: 'آ',\r\n};\r\n\r\nconst PERSIAN_TO_LATIN: Readonly<Record<string, string>> = (() => {\r\n const map: Record<string, string> = {};\r\n for (const [latin, persian] of Object.entries(LATIN_TO_PERSIAN)) {\r\n if (!(persian in map)) map[persian] = latin.toLowerCase();\r\n }\r\n map['ي'] = 'd';\r\n map['ك'] = ';';\r\n map['ئ'] = 'm';\r\n return map;\r\n})();\r\n\r\nconst HAS_LATIN_LETTER = /[a-z]/i;\r\nconst HAS_PERSIAN_LETTER = /[-ۿ]/;\r\n\r\nexport type KeyboardTarget = 'fa' | 'en';\r\n\r\nexport function convertKeyboardLayout(text: string, to: KeyboardTarget): string {\r\n const input = typeof text === 'string' ? text : '';\r\n let out = '';\r\n for (const ch of input) {\r\n if (to === 'fa') {\r\n out += LATIN_TO_PERSIAN[ch] ?? LATIN_TO_PERSIAN[ch.toLowerCase()] ?? ch;\r\n } else {\r\n out += PERSIAN_TO_LATIN[ch] ?? ch;\r\n }\r\n }\r\n return out;\r\n}\r\n\r\nexport function guessKeyboardTarget(text: string): KeyboardTarget | undefined {\r\n if (typeof text !== 'string') return undefined;\r\n const latin = HAS_LATIN_LETTER.test(text);\r\n const persian = HAS_PERSIAN_LETTER.test(text);\r\n if (latin && !persian) return 'fa';\r\n if (persian && !latin) return 'en';\r\n return undefined;\r\n}\r\n","const CHAR_MAP: Readonly<Record<string, string>> = {\r\n 'ي': 'ی',\r\n 'ى': 'ی',\r\n 'ئ': 'ی',\r\n 'ك': 'ک',\r\n 'ة': 'ه',\r\n 'ۀ': 'ه',\r\n 'ؤ': 'و',\r\n 'أ': 'ا',\r\n 'إ': 'ا',\r\n 'آ': 'ا',\r\n 'ٱ': 'ا',\r\n};\r\n\r\nexport function normalize(input: string): string {\r\n return input\r\n .trim()\r\n .toLowerCase()\r\n .replace(/[۰-۹]/g, (d) => String(d.charCodeAt(0) - 0x06f0))\r\n .replace(/[٠-٩]/g, (d) => String(d.charCodeAt(0) - 0x0660))\r\n .replace(/[ً-ٰٟـ]/g, '')\r\n .replace(/[يىئكةۀؤأإآٱ]/g, (ch) => CHAR_MAP[ch] ?? ch)\r\n .replace(/[\\s\\-_'’`]+/g, '');\r\n}\r\n","import { convertKeyboardLayout, guessKeyboardTarget } from './keyboard';\r\nimport { normalize } from './normalize';\r\nimport type {\r\n City,\r\n CityId,\r\n CityKey,\r\n FlatCity,\r\n IranCities,\r\n Province,\r\n ProvinceId,\r\n ProvinceListItem,\r\n Query,\r\n SearchOptions,\r\n Stats,\r\n} from './types';\r\n\r\nexport interface RawCity {\r\n 'city-id': number;\r\n 'city-en': string;\r\n 'city-fa': string;\r\n 'name-en'?: string;\r\n lat?: number;\r\n lng?: number;\r\n 'coord-confidence'?: 'medium' | 'low';\r\n aliases?: string[];\r\n 'legacy-slugs'?: string[];\r\n primary?: boolean;\r\n}\r\n\r\nexport interface RawProvince {\r\n 'province-id': number;\r\n 'province-en': string;\r\n 'province-fa': string;\r\n 'phone-code': string;\r\n 'capital-city-id': number;\r\n 'name-en': string;\r\n neighbors: number[];\r\n cities: RawCity[];\r\n}\r\n\r\ninterface SearchKey {\r\n value: string;\r\n locale: 'en' | 'fa';\r\n}\r\n\r\ninterface SearchEntry<T> {\r\n item: T;\r\n keys: SearchKey[];\r\n isCapital: boolean;\r\n rank: number;\r\n}\r\n\r\nconst LATIN = /[a-z]/;\r\n\r\nconst LOWERCASE_WORDS = new Set(['va', 'and', 'o']);\r\n\r\nexport function displayNameFromSlug(slug: string): string {\r\n const parts = slug.split('-').filter(Boolean);\r\n let out = '';\r\n for (const part of parts) {\r\n if ((part === 'e' || part === 'ye') && out) {\r\n out += `-${part}`;\r\n continue;\r\n }\r\n const word = LOWERCASE_WORDS.has(part) && out ? part : part.charAt(0).toUpperCase() + part.slice(1);\r\n out += out ? ` ${word}` : word;\r\n }\r\n return out;\r\n}\r\n\r\nfunction toText(value: unknown): string {\r\n if (typeof value === 'string') return value;\r\n if (typeof value === 'number' && Number.isFinite(value)) return String(value);\r\n return '';\r\n}\r\n\r\nfunction isPresent(value: Query | null | undefined): value is Query {\r\n return value !== undefined && value !== null && toText(value).trim() !== '';\r\n}\r\n\r\nfunction boundedLevenshtein(a: string, b: string, max: number): number {\r\n if (a === b) return 0;\r\n if (Math.abs(a.length - b.length) > max) return max + 1;\r\n if (a.length === 0) return b.length;\r\n if (b.length === 0) return a.length;\r\n\r\n let prev: number[] = [];\r\n for (let j = 0; j <= b.length; j++) prev.push(j);\r\n\r\n for (let i = 1; i <= a.length; i++) {\r\n const curr: number[] = [i];\r\n let rowMin = i;\r\n for (let j = 1; j <= b.length; j++) {\r\n const cost = a.charCodeAt(i - 1) === b.charCodeAt(j - 1) ? 0 : 1;\r\n const value = Math.min((prev[j] as number) + 1, (curr[j - 1] as number) + 1, (prev[j - 1] as number) + cost);\r\n curr.push(value);\r\n if (value < rowMin) rowMin = value;\r\n }\r\n if (rowMin > max) return max + 1;\r\n prev = curr;\r\n }\r\n return prev[b.length] as number;\r\n}\r\n\r\nfunction matchScore(query: string, target: string, fuzzy: boolean, maxDistance: number): number {\r\n if (!target) return Infinity;\r\n if (target === query) return 0;\r\n if (target.startsWith(query)) return 1;\r\n if (target.includes(query)) return 2;\r\n if (!fuzzy) return Infinity;\r\n\r\n let best = Infinity;\r\n const full = boundedLevenshtein(query, target, maxDistance);\r\n if (full <= maxDistance) best = 3 + full;\r\n\r\n if (query.length >= 3 && target.length > query.length) {\r\n for (const len of [query.length - 1, query.length, query.length + 1]) {\r\n if (len < 1 || len >= target.length) continue;\r\n const prefix = boundedLevenshtein(query, target.slice(0, len), maxDistance);\r\n if (prefix <= maxDistance) best = Math.min(best, 3.5 + prefix);\r\n }\r\n }\r\n return best;\r\n}\r\n\r\nfunction deepFreeze<T>(value: T): T {\r\n if (value && typeof value === 'object' && !Object.isFrozen(value)) {\r\n Object.freeze(value);\r\n for (const key of Object.keys(value as object)) deepFreeze((value as Record<string, unknown>)[key]);\r\n }\r\n return value;\r\n}\r\n\r\nfunction createCollator(): (a: string, b: string) => number {\r\n try {\r\n return new Intl.Collator('fa').compare;\r\n } catch {\r\n return (a, b) => (a < b ? -1 : a > b ? 1 : 0);\r\n }\r\n}\r\n\r\nfunction pickPreferred(list: FlatCity[], primaryIds: Set<CityId>): FlatCity {\r\n return (\r\n list.find((c) => c.isCapital) ??\r\n list.find((c) => primaryIds.has(c.id)) ??\r\n list.reduce((a, b) => (b.id < a.id ? b : a))\r\n );\r\n}\r\n\r\nfunction pushTo<K, V>(map: Map<K, V[]>, key: K, value: V): void {\r\n const list = map.get(key);\r\n if (!list) map.set(key, [value]);\r\n else if (!list.includes(value)) list.push(value);\r\n}\r\n\r\nfunction cityKeys(city: City): SearchKey[] {\r\n const keys: SearchKey[] = [\r\n { value: normalize(city.en), locale: 'en' },\r\n { value: normalize(city.fa), locale: 'fa' },\r\n ];\r\n for (const alias of city.aliases) {\r\n keys.push({ value: normalize(alias), locale: LATIN.test(alias.toLowerCase()) ? 'en' : 'fa' });\r\n }\r\n return keys;\r\n}\r\n\r\nexport function createApi(rawData: readonly RawProvince[]): IranCities {\r\n const compare = createCollator();\r\n const primaryIds = new Set<CityId>();\r\n const legacySlugs: Array<[CityKey, CityId]> = [];\r\n\r\n const provinces: Province[] = rawData.map((p) => {\r\n const provinceEn = p['province-en'];\r\n return {\r\n id: p['province-id'],\r\n en: provinceEn,\r\n fa: p['province-fa'],\r\n nameEn: p['name-en'],\r\n phoneCode: p['phone-code'],\r\n capitalId: p['capital-city-id'],\r\n neighborIds: [...p.neighbors],\r\n cities: p.cities.map((c) => {\r\n if (c.primary) primaryIds.add(c['city-id']);\r\n for (const slug of c['legacy-slugs'] ?? []) legacySlugs.push([slug, c['city-id']]);\r\n const city: { -readonly [K in keyof City]: City[K] } = {\r\n id: c['city-id'],\r\n isCapital: c['city-id'] === p['capital-city-id'],\r\n en: c['city-en'],\r\n fa: c['city-fa'],\r\n nameEn: c['name-en'] ?? displayNameFromSlug(c['city-en']),\r\n slug: `${provinceEn}/${c['city-en']}`,\r\n aliases: c.aliases ? [...c.aliases] : [],\r\n };\r\n if (typeof c.lat === 'number' && typeof c.lng === 'number') {\r\n city.coordinates = { lat: c.lat, lng: c.lng, confidence: c['coord-confidence'] ?? 'high' };\r\n }\r\n return city;\r\n }),\r\n };\r\n });\r\n\r\n const flatCities: FlatCity[] = [];\r\n const cityBySlug = new Map<CityKey, FlatCity>();\r\n const cityById = new Map<CityId, FlatCity>();\r\n const provinceById = new Map<ProvinceId, Province>();\r\n const provinceByPhoneCode = new Map<string, Province>();\r\n const provinceByNormKey = new Map<string, Province>();\r\n const citiesByNormKey = new Map<string, FlatCity[]>();\r\n const searchableCities: SearchEntry<FlatCity>[] = [];\r\n const searchableProvinces: SearchEntry<Province>[] = [];\r\n\r\n for (const p of provinces) {\r\n provinceById.set(p.id, p);\r\n provinceByPhoneCode.set(p.phoneCode, p);\r\n const pKeys: SearchKey[] = [\r\n { value: normalize(p.en), locale: 'en' },\r\n { value: normalize(p.fa), locale: 'fa' },\r\n ];\r\n for (const k of pKeys) if (!provinceByNormKey.has(k.value)) provinceByNormKey.set(k.value, p);\r\n searchableProvinces.push({ item: p, keys: pKeys, isCapital: false, rank: 0 });\r\n\r\n for (const c of p.cities) {\r\n const flat: FlatCity = {\r\n ...c,\r\n provinceId: p.id,\r\n provinceEn: p.en,\r\n provinceFa: p.fa,\r\n provinceNameEn: p.nameEn,\r\n phoneCode: p.phoneCode,\r\n };\r\n flatCities.push(flat);\r\n cityBySlug.set(flat.slug, flat);\r\n cityById.set(flat.id, flat);\r\n const keys = cityKeys(flat);\r\n for (const k of keys) pushTo(citiesByNormKey, k.value, flat);\r\n searchableCities.push({ item: flat, keys, isCapital: flat.isCapital, rank: 0 });\r\n }\r\n }\r\n\r\n for (const [slug, id] of legacySlugs) {\r\n const flat = cityById.get(id);\r\n if (flat && !cityBySlug.has(slug)) cityBySlug.set(slug, flat);\r\n }\r\n\r\n const cityByNormKey = new Map<string, FlatCity>();\r\n for (const [key, list] of citiesByNormKey) {\r\n list.sort((a, b) => a.id - b.id);\r\n cityByNormKey.set(key, pickPreferred(list, primaryIds));\r\n }\r\n\r\n [...searchableCities]\r\n .sort((a, b) => compare(a.item.fa, b.item.fa) || a.item.id - b.item.id)\r\n .forEach((entry, index) => {\r\n entry.rank = index;\r\n });\r\n [...searchableProvinces]\r\n .sort((a, b) => compare(a.item.fa, b.item.fa) || a.item.id - b.item.id)\r\n .forEach((entry, index) => {\r\n entry.rank = index;\r\n });\r\n\r\n const capitals: FlatCity[] = provinces.map((p) => cityById.get(p.capitalId) as FlatCity);\r\n const stats: Stats = { provinceCount: provinces.length, cityCount: flatCities.length };\r\n\r\n deepFreeze(provinces);\r\n deepFreeze(flatCities);\r\n deepFreeze(capitals);\r\n deepFreeze(stats);\r\n for (const list of citiesByNormKey.values()) Object.freeze(list);\r\n\r\n const emptyCities: readonly FlatCity[] = Object.freeze([]);\r\n const emptyCityList: readonly City[] = Object.freeze([]);\r\n\r\n function rankedSearch<T>(pool: SearchEntry<T>[], query: unknown, options: SearchOptions | undefined): T[] {\r\n const opts = options ?? {};\r\n const text = toText(query);\r\n const q = normalize(text);\r\n const target = opts.keyboardFix === false || !q ? undefined : guessKeyboardTarget(text);\r\n const converted = target ? normalize(convertKeyboardLayout(text, target)) : '';\r\n if (!converted || converted === q) return rankedSearchOnce(pool, q, opts);\r\n\r\n const convertedOptions: SearchOptions = { ...opts, locale: target, emptyQuery: 'none' };\r\n const strictOptions: SearchOptions = { ...opts, fuzzy: false, limit: 1 };\r\n if (rankedSearchOnce(pool, q, strictOptions).length > 0) return rankedSearchOnce(pool, q, opts);\r\n if (rankedSearchOnce(pool, converted, { ...convertedOptions, fuzzy: false, limit: 1 }).length > 0) {\r\n return rankedSearchOnce(pool, converted, convertedOptions);\r\n }\r\n const fuzzyResults = rankedSearchOnce(pool, q, opts);\r\n return fuzzyResults.length > 0 ? fuzzyResults : rankedSearchOnce(pool, converted, convertedOptions);\r\n }\r\n\r\n function rankedSearchOnce<T>(pool: SearchEntry<T>[], q: string, opts: SearchOptions): T[] {\r\n const limit = typeof opts.limit === 'number' && opts.limit > 0 ? Math.floor(opts.limit) : undefined;\r\n if (!q) {\r\n if (opts.emptyQuery === 'none') return [];\r\n const all = pool.map((e) => e.item);\r\n return limit ? all.slice(0, limit) : all;\r\n }\r\n\r\n const locale = opts.locale ?? 'both';\r\n const fuzzy = opts.fuzzy ?? false;\r\n const requested =\r\n typeof opts.maxDistance === 'number' && opts.maxDistance >= 0 ? Math.floor(opts.maxDistance) : 2;\r\n const maxDistance = Math.min(requested, Math.floor(q.length / 3));\r\n\r\n const scored: { entry: SearchEntry<T>; score: number }[] = [];\r\n for (const entry of pool) {\r\n let score = Infinity;\r\n for (const key of entry.keys) {\r\n if (locale !== 'both' && key.locale !== locale) continue;\r\n score = Math.min(score, matchScore(q, key.value, fuzzy, maxDistance));\r\n if (score === 0) break;\r\n }\r\n if (score !== Infinity) scored.push({ entry, score });\r\n }\r\n\r\n scored.sort(\r\n (a, b) =>\r\n a.score - b.score ||\r\n Number(b.entry.isCapital) - Number(a.entry.isCapital) ||\r\n a.entry.rank - b.entry.rank,\r\n );\r\n const results = scored.map((s) => s.entry.item);\r\n return limit ? results.slice(0, limit) : results;\r\n }\r\n\r\n function asId(query: Query): number | undefined {\r\n if (typeof query === 'number') return Number.isInteger(query) ? query : undefined;\r\n const t = normalize(toText(query));\r\n return /^\\d+$/.test(t) ? Number(t) : undefined;\r\n }\r\n\r\n function cityMatches(city: City, key: string): boolean {\r\n return normalize(city.en) === key || normalize(city.fa) === key || city.aliases.some((a) => normalize(a) === key);\r\n }\r\n\r\n function getProvinces(): readonly Province[] {\r\n return provinces;\r\n }\r\n\r\n function getProvincesList(): ProvinceListItem[] {\r\n return provinces.map((p) => ({\r\n id: p.id,\r\n en: p.en,\r\n fa: p.fa,\r\n nameEn: p.nameEn,\r\n phoneCode: p.phoneCode,\r\n capitalId: p.capitalId,\r\n }));\r\n }\r\n\r\n function getProvinceById(id: ProvinceId): Province | undefined {\r\n return provinceById.get(Number(id));\r\n }\r\n\r\n function getProvince(query: Query): Province | undefined {\r\n if (!isPresent(query)) return undefined;\r\n const id = asId(query);\r\n if (id !== undefined) return provinceById.get(id);\r\n return provinceByNormKey.get(normalize(toText(query)));\r\n }\r\n\r\n function getCities(provinceQuery: Query): readonly City[] {\r\n return getProvince(provinceQuery)?.cities ?? emptyCityList;\r\n }\r\n\r\n function getAllCities(): readonly FlatCity[] {\r\n return flatCities;\r\n }\r\n\r\n function getCityById(id: CityId): FlatCity | undefined {\r\n return cityById.get(Number(id));\r\n }\r\n\r\n function getCityBySlug(slug: CityKey): FlatCity | undefined {\r\n return cityBySlug.get(toText(slug).trim());\r\n }\r\n\r\n function getCity(cityQuery: Query, provinceQuery?: Query): FlatCity | undefined {\r\n if (!isPresent(cityQuery)) return undefined;\r\n const cityId = asId(cityQuery);\r\n\r\n if (isPresent(provinceQuery)) {\r\n const province = getProvince(provinceQuery);\r\n if (!province) return undefined;\r\n const key = cityId === undefined ? normalize(toText(cityQuery)) : '';\r\n const city = province.cities.find((c) => (cityId !== undefined ? c.id === cityId : cityMatches(c, key)));\r\n return city ? cityById.get(city.id) : undefined;\r\n }\r\n\r\n if (cityId !== undefined) return cityById.get(cityId);\r\n return cityByNormKey.get(normalize(toText(cityQuery)));\r\n }\r\n\r\n function getCitiesByName(cityQuery: string): readonly FlatCity[] {\r\n const key = normalize(toText(cityQuery));\r\n return (key && citiesByNormKey.get(key)) || emptyCities;\r\n }\r\n\r\n function isAmbiguousCityName(cityQuery: string): boolean {\r\n return getCitiesByName(cityQuery).length > 1;\r\n }\r\n\r\n function getProvinceOfCity(cityQuery: Query): Province | undefined {\r\n const city = getCity(cityQuery);\r\n return city ? provinceById.get(city.provinceId) : undefined;\r\n }\r\n\r\n function getCapital(provinceQuery: Query): FlatCity | undefined {\r\n const p = getProvince(provinceQuery);\r\n return p ? cityById.get(p.capitalId) : undefined;\r\n }\r\n\r\n function getCapitals(): FlatCity[] {\r\n return capitals.slice();\r\n }\r\n\r\n function getProvinceByPhoneCode(code: string | number): Province | undefined {\r\n let digits = normalize(toText(code)).replace(/^\\+/, '').replace(/^0+/, '');\r\n if (digits.length > 2 && digits.startsWith('98')) digits = digits.slice(2).replace(/^0+/, '');\r\n if (!/^\\d+$/.test(digits)) return undefined;\r\n return provinceByPhoneCode.get(`0${digits}`);\r\n }\r\n\r\n function searchProvinces(query: string, options?: SearchOptions): Province[] {\r\n return rankedSearch(searchableProvinces, query, options);\r\n }\r\n\r\n function searchCities(query: string, options?: SearchOptions): FlatCity[] {\r\n return rankedSearch(searchableCities, query, options);\r\n }\r\n\r\n function getNeighborProvinces(provinceQuery: Query): Province[] {\r\n const province = getProvince(provinceQuery);\r\n if (!province) return [];\r\n return province.neighborIds.map((id) => provinceById.get(id) as Province);\r\n }\r\n\r\n function areNeighborProvinces(a: Query, b: Query): boolean {\r\n const first = getProvince(a);\r\n const second = getProvince(b);\r\n return !!first && !!second && first.neighborIds.includes(second.id);\r\n }\r\n\r\n function getStats(): Stats {\r\n return stats;\r\n }\r\n\r\n return {\r\n getProvinces,\r\n getProvincesList,\r\n getProvinceById,\r\n getProvince,\r\n getCities,\r\n getAllCities,\r\n getCityById,\r\n getCityBySlug,\r\n getCity,\r\n getCitiesByName,\r\n isAmbiguousCityName,\r\n getProvinceOfCity,\r\n getCapital,\r\n getCapitals,\r\n getProvinceByPhoneCode,\r\n searchProvinces,\r\n searchCities,\r\n getNeighborProvinces,\r\n areNeighborProvinces,\r\n getStats,\r\n };\r\n}\r\n\r\n","import type { RawCity, RawProvince } from './core';\r\n\r\ntype PackedProvince = [number, string, string, string, number, string, number[], number];\r\ntype PackedExtra = [number, string | 0, string[] | 0, 0 | 1, string[] | 0];\r\n\r\nexport interface PackedData {\r\n format: number;\r\n provinces: PackedProvince[];\r\n ids: number[];\r\n en: string;\r\n fa: string;\r\n extras: PackedExtra[];\r\n confidence?: string;\r\n lat?: number[];\r\n lng?: number[];\r\n}\r\n\r\nconst SCALE = 1e7;\r\nconst CONFIDENCE: Readonly<Record<string, RawCity['coord-confidence'] | 'high'>> = {\r\n '1': 'high',\r\n '2': 'medium',\r\n '3': 'low',\r\n};\r\n\r\nexport function unpack(packed: PackedData): RawProvince[] {\r\n if (packed.format !== 1) throw new Error(`Unsupported data format ${packed.format}`);\r\n const en = packed.en.split('|');\r\n const fa = packed.fa.split('|');\r\n const extras = new Map<number, PackedExtra>();\r\n for (const extra of packed.extras) extras.set(extra[0], extra);\r\n\r\n let id = 0;\r\n let lat = 0;\r\n let lng = 0;\r\n let coordIndex = 0;\r\n let cityIndex = 0;\r\n\r\n return packed.provinces.map(([provinceId, provinceEn, provinceFa, phoneCode, capitalId, nameEn, neighbors, count]) => {\r\n const cities: RawCity[] = [];\r\n for (let n = 0; n < count; n++, cityIndex++) {\r\n id += packed.ids[cityIndex] as number;\r\n const city: RawCity = { 'city-id': id, 'city-en': en[cityIndex] as string, 'city-fa': fa[cityIndex] as string };\r\n const code = packed.confidence?.charAt(cityIndex);\r\n if (code && code !== '0' && packed.lat && packed.lng) {\r\n lat += packed.lat[coordIndex] as number;\r\n lng += packed.lng[coordIndex] as number;\r\n coordIndex++;\r\n city.lat = lat / SCALE;\r\n city.lng = lng / SCALE;\r\n const confidence = CONFIDENCE[code];\r\n if (confidence && confidence !== 'high') city['coord-confidence'] = confidence;\r\n }\r\n const extra = extras.get(cityIndex);\r\n if (extra) {\r\n if (extra[1]) city['name-en'] = extra[1];\r\n if (extra[2]) city.aliases = extra[2];\r\n if (extra[3]) city.primary = true;\r\n if (extra[4]) city['legacy-slugs'] = extra[4];\r\n }\r\n cities.push(city);\r\n }\r\n return {\r\n 'province-id': provinceId,\r\n 'province-en': provinceEn,\r\n 'province-fa': provinceFa,\r\n 'phone-code': phoneCode,\r\n 'capital-city-id': capitalId,\r\n 'name-en': nameEn,\r\n neighbors,\r\n cities,\r\n };\r\n });\r\n}\r\n","import type { DataChange } from './types';\r\n\r\nexport const DATA_VERSION: string = '2.0.0';\r\n\r\nexport const DATA_CHANGES: readonly DataChange[] = Object.freeze([\r\n Object.freeze({\r\n version: '1.2.0',\r\n type: 'removed',\r\n provinceId: 20,\r\n before: Object.freeze({ fa: 'گلوگاه' }),\r\n note: 'Duplicate entry of Galugah in Mazandaran removed; the remaining entry keeps the city.',\r\n }),\r\n Object.freeze({\r\n version: '1.2.0',\r\n type: 'renamed',\r\n cityId: 402,\r\n before: Object.freeze({ en: \"sowme'eh-sara\", slug: \"gilan/sowme'eh-sara\" }),\r\n after: Object.freeze({ en: 'sowmeeh-sara', fa: 'صومعه سرا', slug: 'gilan/sowmeeh-sara' }),\r\n note: 'English id normalized to kebab-case; the old id still resolves.',\r\n }),\r\n Object.freeze({\r\n version: '1.2.0',\r\n type: 'renamed',\r\n cityId: 672,\r\n before: Object.freeze({ en: 'هلشی', slug: 'kermanshah/هلشی' }),\r\n after: Object.freeze({ en: 'halashi', fa: 'هلشی', slug: 'kermanshah/halashi' }),\r\n note: 'English id was a Persian string; the old id still resolves.',\r\n }),\r\n Object.freeze({\r\n version: '2.0.0',\r\n type: 'spelling',\r\n cityId: 145,\r\n before: Object.freeze({ fa: 'كليبر' }),\r\n after: Object.freeze({ fa: 'کلیبر' }),\r\n note: 'Arabic letters replaced with Persian ی/ک.',\r\n }),\r\n Object.freeze({\r\n version: '2.0.0',\r\n type: 'spelling',\r\n cityId: 147,\r\n before: Object.freeze({ fa: 'صوفيان' }),\r\n after: Object.freeze({ fa: 'صوفیان' }),\r\n note: 'Arabic letters replaced with Persian ی/ک.',\r\n }),\r\n Object.freeze({\r\n version: '2.0.0',\r\n type: 'spelling',\r\n cityId: 152,\r\n before: Object.freeze({ fa: 'كلوانق' }),\r\n after: Object.freeze({ fa: 'کلوانق' }),\r\n note: 'Arabic letters replaced with Persian ی/ک.',\r\n }),\r\n Object.freeze({\r\n version: '2.0.0',\r\n type: 'spelling',\r\n cityId: 418,\r\n before: Object.freeze({ fa: 'لوندويل' }),\r\n after: Object.freeze({ fa: 'لوندویل' }),\r\n note: 'Arabic letters replaced with Persian ی/ک.',\r\n }),\r\n Object.freeze({\r\n version: '2.0.0',\r\n type: 'spelling',\r\n cityId: 438,\r\n before: Object.freeze({ fa: 'ليسار' }),\r\n after: Object.freeze({ fa: 'لیسار' }),\r\n note: 'Arabic letters replaced with Persian ی/ک.',\r\n }),\r\n Object.freeze({\r\n version: '2.0.0',\r\n type: 'spelling',\r\n cityId: 487,\r\n before: Object.freeze({ fa: 'مريانج' }),\r\n after: Object.freeze({ fa: 'مریانج' }),\r\n note: 'Arabic letters replaced with Persian ی/ک.',\r\n }),\r\n Object.freeze({\r\n version: '2.0.0',\r\n type: 'spelling',\r\n cityId: 529,\r\n before: Object.freeze({ fa: 'تازيان پايين' }),\r\n after: Object.freeze({ fa: 'تازیان پایین' }),\r\n note: 'Arabic letters replaced with Persian ی/ک.',\r\n }),\r\n Object.freeze({\r\n version: '2.0.0',\r\n type: 'spelling',\r\n cityId: 545,\r\n before: Object.freeze({ fa: 'كوخرد' }),\r\n after: Object.freeze({ fa: 'کوخرد' }),\r\n note: 'Arabic letters replaced with Persian ی/ک.',\r\n }),\r\n Object.freeze({\r\n version: '2.0.0',\r\n type: 'spelling',\r\n cityId: 551,\r\n before: Object.freeze({ fa: 'اركواز' }),\r\n after: Object.freeze({ fa: 'ارکواز' }),\r\n note: 'Arabic letters replaced with Persian ی/ک.',\r\n }),\r\n Object.freeze({\r\n version: '2.0.0',\r\n type: 'spelling',\r\n cityId: 564,\r\n before: Object.freeze({ fa: 'موسيان' }),\r\n after: Object.freeze({ fa: 'موسیان' }),\r\n note: 'Arabic letters replaced with Persian ی/ک.',\r\n }),\r\n Object.freeze({\r\n version: '2.0.0',\r\n type: 'spelling',\r\n cityId: 714,\r\n before: Object.freeze({ fa: 'چويبده' }),\r\n after: Object.freeze({ fa: 'چویبده' }),\r\n note: 'Arabic letters replaced with Persian ی/ک.',\r\n }),\r\n Object.freeze({\r\n version: '2.0.0',\r\n type: 'spelling',\r\n cityId: 716,\r\n before: Object.freeze({ fa: 'صيدون' }),\r\n after: Object.freeze({ fa: 'صیدون' }),\r\n note: 'Arabic letters replaced with Persian ی/ک.',\r\n }),\r\n Object.freeze({\r\n version: '2.0.0',\r\n type: 'spelling',\r\n cityId: 749,\r\n before: Object.freeze({ fa: 'گلگير' }),\r\n after: Object.freeze({ fa: 'گلگیر' }),\r\n note: 'Arabic letters replaced with Persian ی/ک.',\r\n }),\r\n Object.freeze({\r\n version: '2.0.0',\r\n type: 'spelling',\r\n cityId: 910,\r\n before: Object.freeze({ fa: 'پايين هولار' }),\r\n after: Object.freeze({ fa: 'پایین هولار' }),\r\n note: 'Arabic letters replaced with Persian ی/ک.',\r\n }),\r\n Object.freeze({\r\n version: '2.0.0',\r\n type: 'spelling',\r\n cityId: 947,\r\n before: Object.freeze({ fa: 'اسفرورين' }),\r\n after: Object.freeze({ fa: 'اسفرورین' }),\r\n note: 'Arabic letters replaced with Persian ی/ک.',\r\n }),\r\n Object.freeze({\r\n version: '2.0.0',\r\n type: 'spelling',\r\n cityId: 1025,\r\n before: Object.freeze({ fa: 'كدكن' }),\r\n after: Object.freeze({ fa: 'کدکن' }),\r\n note: 'Arabic letters replaced with Persian ی/ک.',\r\n }),\r\n Object.freeze({\r\n version: '2.0.0',\r\n type: 'spelling',\r\n cityId: 1077,\r\n before: Object.freeze({ fa: 'گلمورتي' }),\r\n after: Object.freeze({ fa: 'گلمورتی' }),\r\n note: 'Arabic letters replaced with Persian ی/ک.',\r\n }),\r\n Object.freeze({\r\n version: '2.0.0',\r\n type: 'spelling',\r\n cityId: 1107,\r\n before: Object.freeze({ fa: 'آيسک' }),\r\n after: Object.freeze({ fa: 'آیسک' }),\r\n note: 'Arabic letters replaced with Persian ی/ک.',\r\n }),\r\n Object.freeze({\r\n version: '2.0.0',\r\n type: 'spelling',\r\n cityId: 1114,\r\n before: Object.freeze({ fa: 'طبس مسينا' }),\r\n after: Object.freeze({ fa: 'طبس مسینا' }),\r\n note: 'Arabic letters replaced with Persian ی/ک.',\r\n }),\r\n Object.freeze({\r\n version: '2.0.0',\r\n type: 'spelling',\r\n cityId: 1199,\r\n before: Object.freeze({ fa: 'ايواوغلی' }),\r\n after: Object.freeze({ fa: 'ایواوغلی' }),\r\n note: 'Arabic letters replaced with Persian ی/ک.',\r\n }),\r\n Object.freeze({\r\n version: '2.0.0',\r\n type: 'spelling',\r\n cityId: 1209,\r\n before: Object.freeze({ fa: 'خليفان' }),\r\n after: Object.freeze({ fa: 'خلیفان' }),\r\n note: 'Arabic letters replaced with Persian ی/ک.',\r\n }),\r\n Object.freeze({\r\n version: '2.0.0',\r\n type: 'spelling',\r\n cityId: 1225,\r\n before: Object.freeze({ fa: 'بفروييه' }),\r\n after: Object.freeze({ fa: 'بفروییه' }),\r\n note: 'Arabic letters replaced with Persian ی/ک.',\r\n }),\r\n Object.freeze({\r\n version: '2.0.0',\r\n type: 'spelling',\r\n cityId: 1235,\r\n before: Object.freeze({ fa: 'قيدار' }),\r\n after: Object.freeze({ fa: 'قیدار' }),\r\n note: 'Arabic letters replaced with Persian ی/ک.',\r\n }),\r\n Object.freeze({\r\n version: '2.0.0',\r\n type: 'spelling',\r\n cityId: 1236,\r\n before: Object.freeze({ fa: 'هيدج' }),\r\n after: Object.freeze({ fa: 'هیدج' }),\r\n note: 'Arabic letters replaced with Persian ی/ک.',\r\n }),\r\n Object.freeze({\r\n version: '2.0.0',\r\n type: 'spelling',\r\n cityId: 1237,\r\n before: Object.freeze({ fa: 'صائين قلعه' }),\r\n after: Object.freeze({ fa: 'صائین قلعه' }),\r\n note: 'Arabic letters replaced with Persian ی/ک.',\r\n }),\r\n] as DataChange[]);\r\n\r\nfunction compareVersions(a: string, b: string): number {\r\n const pa = a.split('.').map(Number);\r\n const pb = b.split('.').map(Number);\r\n for (let i = 0; i < Math.max(pa.length, pb.length); i++) {\r\n const diff = (pa[i] ?? 0) - (pb[i] ?? 0);\r\n if (diff !== 0) return diff;\r\n }\r\n return 0;\r\n}\r\n\r\nexport function getDataChanges(sinceVersion?: string): DataChange[] {\r\n if (!sinceVersion) return DATA_CHANGES.slice();\r\n return DATA_CHANGES.filter((change) => compareVersions(change.version, sinceVersion) > 0);\r\n}\r\n"],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { o as DataChange } from "./types-Ds_b0yHP.mjs";
|
|
2
|
+
declare function normalize(input: string): string;
|
|
3
|
+
type KeyboardTarget = "fa" | "en";
|
|
4
|
+
declare function convertKeyboardLayout(text: string, to: KeyboardTarget): string;
|
|
5
|
+
declare const DATA_VERSION: string;
|
|
6
|
+
declare const DATA_CHANGES: readonly DataChange[];
|
|
7
|
+
declare function getDataChanges(sinceVersion?: string): DataChange[];
|
|
8
|
+
export { convertKeyboardLayout as a, KeyboardTarget as i, DATA_VERSION as n, normalize as o, getDataChanges as r, DATA_CHANGES as t };
|