@lacspace/nepali-utils 1.1.1 → 1.1.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.cjs CHANGED
@@ -9,11 +9,14 @@ function fromDevanagari(input) {
9
9
  return input.replace(/[०-९]/g, (d) => String(DEVANAGARI.indexOf(d)));
10
10
  }
11
11
  function groupNepali(value) {
12
- const s = String(value).replace(/[^\d]/g, "");
13
- if (s.length <= 3) return s;
12
+ const str = String(value).trim();
13
+ const negative = str.startsWith("-");
14
+ const sign = negative ? "-" : "";
15
+ const s = str.replace(/[^\d]/g, "");
16
+ if (s.length <= 3) return sign + s;
14
17
  const last3 = s.slice(-3);
15
18
  const rest = s.slice(0, -3);
16
- return rest.replace(/\B(?=(\d{2})+(?!\d))/g, ",") + "," + last3;
19
+ return sign + rest.replace(/\B(?=(\d{2})+(?!\d))/g, ",") + "," + last3;
17
20
  }
18
21
  function formatNPR(amount, options = {}) {
19
22
  const { symbol = "Rs. ", decimals = 2, devanagari = false } = options;
@@ -68,7 +71,8 @@ function numberToWords(value) {
68
71
  for (const [size, name] of units) {
69
72
  if (n >= size) {
70
73
  const count = Math.floor(n / size);
71
- parts.push((size === 100 ? ONES[count] : twoDigitWords(count)) + " " + name);
74
+ const words = size === 100 ? ONES[count] : count >= 100 ? numberToWords(count) : twoDigitWords(count);
75
+ parts.push(words + " " + name);
72
76
  n %= size;
73
77
  }
74
78
  }
@@ -76,8 +80,12 @@ function numberToWords(value) {
76
80
  return (value < 0 ? "Minus " : "") + parts.join(" ");
77
81
  }
78
82
  function amountInWords(amount) {
79
- const rupees = Math.floor(Math.abs(amount));
80
- const paisa = Math.round((Math.abs(amount) - rupees) * 100);
83
+ let rupees = Math.floor(Math.abs(amount));
84
+ let paisa = Math.round((Math.abs(amount) - rupees) * 100);
85
+ if (paisa === 100) {
86
+ rupees += 1;
87
+ paisa = 0;
88
+ }
81
89
  let out = "Rupees " + numberToWords(rupees);
82
90
  if (paisa > 0) out += " and " + numberToWords(paisa) + " Paisa";
83
91
  return (amount < 0 ? "Minus " : "") + out + " Only";
@@ -191,7 +199,7 @@ function getCarrier(input) {
191
199
  const n = normalizeMobile(input);
192
200
  if (!n) return "unknown";
193
201
  const p = n.slice(4, 7);
194
- if (["984", "985", "986", "974", "975"].includes(p)) return "Ntc";
202
+ if (["984", "985", "986", "974", "975", "976"].includes(p)) return "Ntc";
195
203
  if (["980", "981", "982"].includes(p)) return "Ncell";
196
204
  if (["961", "962", "988"].includes(p)) return "Smart Cell";
197
205
  if (p === "972") return "UTL";
@@ -325,7 +333,8 @@ function numberToWordsNepali(value) {
325
333
  for (const [size, name] of units) {
326
334
  if (n >= size) {
327
335
  const count = Math.floor(n / size);
328
- parts.push(`${NEPALI_0_99[count]} ${name}`);
336
+ const words = count >= 100 ? numberToWordsNepali(count) : NEPALI_0_99[count];
337
+ parts.push(`${words} ${name}`);
329
338
  n %= size;
330
339
  }
331
340
  }
@@ -333,8 +342,12 @@ function numberToWordsNepali(value) {
333
342
  return (value < 0 ? "\u092E\u093E\u0907\u0928\u0938 " : "") + parts.join(" ");
334
343
  }
335
344
  function amountInWordsNepali(amount) {
336
- const rupees = Math.floor(Math.abs(amount));
337
- const paisa = Math.round((Math.abs(amount) - rupees) * 100);
345
+ let rupees = Math.floor(Math.abs(amount));
346
+ let paisa = Math.round((Math.abs(amount) - rupees) * 100);
347
+ if (paisa === 100) {
348
+ rupees += 1;
349
+ paisa = 0;
350
+ }
338
351
  let out = "\u0930\u0941\u092A\u0948\u092F\u093E\u0901 " + numberToWordsNepali(rupees);
339
352
  if (paisa > 0) out += " " + numberToWordsNepali(paisa) + " \u092A\u0948\u0938\u093E";
340
353
  return (amount < 0 ? "\u092E\u093E\u0907\u0928\u0938 " : "") + out + " \u092E\u093E\u0924\u094D\u0930";
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts"],"names":[],"mappings":"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","file":"index.cjs","sourcesContent":["/**\n * @lacspace/nepali-utils — everyday Nepal helpers: NPR currency formatting,\n * Nepali (South-Asian) digit grouping, Devanagari numerals, amount-in-words,\n * common validators, and province data. Zero-dependency, isomorphic.\n */\n\nconst DEVANAGARI = [\"०\", \"१\", \"२\", \"३\", \"४\", \"५\", \"६\", \"७\", \"८\", \"९\"] as const;\n\n/** Convert Arabic numerals to Devanagari: `\"2081\"` → `\"२०८१\"`. */\nexport function toDevanagari(input: string | number): string {\n return String(input).replace(/[0-9]/g, (d) => DEVANAGARI[Number(d)]!);\n}\n\n/** Convert Devanagari numerals to Arabic: `\"२०८१\"` → `\"2081\"`. */\nexport function fromDevanagari(input: string): string {\n return input.replace(/[०-९]/g, (d) => String(DEVANAGARI.indexOf(d as (typeof DEVANAGARI)[number])));\n}\n\n/**\n * Group an integer with the South-Asian (Nepali) system: the last three digits,\n * then groups of two. `1234567` → `\"12,34,567\"`.\n */\nexport function groupNepali(value: number | string): string {\n const s = String(value).replace(/[^\\d]/g, \"\");\n if (s.length <= 3) return s;\n const last3 = s.slice(-3);\n const rest = s.slice(0, -3);\n return rest.replace(/\\B(?=(\\d{2})+(?!\\d))/g, \",\") + \",\" + last3;\n}\n\nexport interface FormatNprOptions {\n /** Show a symbol/prefix. Default `\"Rs. \"`. Use `\"\"` for none. */\n symbol?: string;\n /** Number of decimal places. Default `2`. */\n decimals?: number;\n /** Render digits in Devanagari. Default `false`. */\n devanagari?: boolean;\n}\n\n/**\n * Format an amount as Nepalese Rupees with South-Asian grouping.\n * `formatNPR(1234567.5)` → `\"Rs. 12,34,567.50\"`.\n */\nexport function formatNPR(amount: number, options: FormatNprOptions = {}): string {\n const { symbol = \"Rs. \", decimals = 2, devanagari = false } = options;\n const negative = amount < 0;\n const fixed = Math.abs(amount).toFixed(decimals);\n const [intPart, decPart] = fixed.split(\".\");\n let out = groupNepali(intPart!);\n if (decPart) out += \".\" + decPart;\n if (devanagari) out = toDevanagari(out);\n return (negative ? \"-\" : \"\") + symbol + out;\n}\n\nconst ONES = [\n \"\", \"One\", \"Two\", \"Three\", \"Four\", \"Five\", \"Six\", \"Seven\", \"Eight\", \"Nine\",\n \"Ten\", \"Eleven\", \"Twelve\", \"Thirteen\", \"Fourteen\", \"Fifteen\", \"Sixteen\",\n \"Seventeen\", \"Eighteen\", \"Nineteen\",\n];\nconst TENS = [\"\", \"\", \"Twenty\", \"Thirty\", \"Forty\", \"Fifty\", \"Sixty\", \"Seventy\", \"Eighty\", \"Ninety\"];\n\nfunction twoDigitWords(n: number): string {\n if (n < 20) return ONES[n]!;\n const t = Math.floor(n / 10);\n const o = n % 10;\n return TENS[t]! + (o ? \" \" + ONES[o] : \"\");\n}\n\n/**\n * Amount in words using the South-Asian system (Thousand, Lakh, Crore, Arab) —\n * perfect for invoices. `numberToWords(1234567)` →\n * `\"Twelve Lakh Thirty Four Thousand Five Hundred Sixty Seven\"`.\n */\nexport function numberToWords(value: number): string {\n let n = Math.floor(Math.abs(value));\n if (n === 0) return \"Zero\";\n const parts: string[] = [];\n const units: [number, string][] = [\n [1e9, \"Arab\"],\n [1e7, \"Crore\"],\n [1e5, \"Lakh\"],\n [1e3, \"Thousand\"],\n [1e2, \"Hundred\"],\n ];\n for (const [size, name] of units) {\n if (n >= size) {\n const count = Math.floor(n / size);\n // Hundreds are 1–9; the higher units take up to two digits.\n parts.push((size === 100 ? ONES[count] : twoDigitWords(count)) + \" \" + name);\n n %= size;\n }\n }\n if (n > 0) parts.push(twoDigitWords(n));\n return (value < 0 ? \"Minus \" : \"\") + parts.join(\" \");\n}\n\n/** `numberToWords` plus a \"Rupees … only\" wrapper for invoices. */\nexport function amountInWords(amount: number): string {\n const rupees = Math.floor(Math.abs(amount));\n const paisa = Math.round((Math.abs(amount) - rupees) * 100);\n let out = \"Rupees \" + numberToWords(rupees);\n if (paisa > 0) out += \" and \" + numberToWords(paisa) + \" Paisa\";\n return (amount < 0 ? \"Minus \" : \"\") + out + \" Only\";\n}\n\n/** Parse a formatted NPR/Nepali-grouped string back to a number (inverse of {@link formatNPR}). */\nexport function ungroupNepali(input: string | number): number {\n let s = fromDevanagari(String(input)).trim();\n const negative = s.startsWith(\"-\");\n s = s.replace(/₹|rs\\.?|npr|रू\\.?|रु\\.?/gi, \"\"); // strip currency symbols (incl. the dot in \"Rs.\")\n s = s.replace(/[^\\d.]/g, \"\"); // drop grouping commas, spaces, everything else\n if (s === \"\") return NaN;\n const num = Number(s);\n return negative && !Number.isNaN(num) ? -num : num;\n}\n\n/** Alias of {@link ungroupNepali} — parse an NPR string to a number. */\nexport const parseNPR = ungroupNepali;\n\nfunction trimNum(n: number): string {\n return Number(n.toFixed(2)).toString();\n}\n\nexport interface CompactNprOptions {\n symbol?: string;\n /** Use Nepali scale words (हजार/लाख/करोड/अरब). Default false (K/Lakh/Cr/Arab). */\n nepali?: boolean;\n /** Render digits in Devanagari. Default false. */\n devanagari?: boolean;\n}\n\n/** Compact NPR: `formatCompactNPR(1234567)` → `\"Rs. 12.35 Lakh\"`. */\nexport function formatCompactNPR(amount: number, options: CompactNprOptions = {}): string {\n const { symbol = \"Rs. \", nepali = false, devanagari = false } = options;\n const negative = amount < 0;\n const a = Math.abs(amount);\n const units: [number, string, string][] = [\n [1e9, \"Arab\", \"अरब\"],\n [1e7, \"Cr\", \"करोड\"],\n [1e5, \"Lakh\", \"लाख\"],\n [1e3, \"K\", \"हजार\"],\n ];\n let out: string;\n const u = units.find(([size]) => a >= size);\n if (u) out = `${trimNum(a / u[0])} ${nepali ? u[2] : u[1]}`;\n else out = trimNum(a);\n if (devanagari) out = toDevanagari(out);\n return (negative ? \"-\" : \"\") + symbol + out;\n}\n\n/* ------------------------------ land-area units ------------------------------ */\n\nexport type LandUnit = \"ropani\" | \"aana\" | \"paisa\" | \"daam\" | \"bigha\" | \"kattha\" | \"dhur\" | \"sqm\" | \"sqft\";\n\n/** Area of one unit in square metres (hilly = ropani system, terai = bigha system). */\nexport const LAND_UNIT_SQM: Record<LandUnit, number> = {\n ropani: 508.7369, // 5476 sq ft\n aana: 31.79606, // ropani / 16\n paisa: 7.949014, // ropani / 64\n daam: 1.987254, // ropani / 256\n bigha: 6772.631, // 72900 sq ft\n kattha: 338.6315, // bigha / 20\n dhur: 16.93158, // bigha / 400\n sqm: 1,\n sqft: 0.09290304,\n};\n\n/** Total square metres from a mixed measure, e.g. `{ ropani: 2, aana: 3 }` or `{ bigha: 1, kattha: 5 }`. */\nexport function landToSqMeters(measure: Partial<Record<LandUnit, number>>): number {\n let m2 = 0;\n for (const [unit, value] of Object.entries(measure)) m2 += (value ?? 0) * LAND_UNIT_SQM[unit as LandUnit];\n return m2;\n}\n\n/** Convert an area between any two land units. */\nexport function convertLand(value: number, from: LandUnit, to: LandUnit): number {\n return (value * LAND_UNIT_SQM[from]) / LAND_UNIT_SQM[to];\n}\n\n/** Break square metres into the hilly system: `{ ropani, aana, paisa, daam }`. */\nexport function sqMetersToRopani(m2: number): { ropani: number; aana: number; paisa: number; daam: number } {\n let rem = m2;\n const ropani = Math.floor(rem / LAND_UNIT_SQM.ropani);\n rem -= ropani * LAND_UNIT_SQM.ropani;\n const aana = Math.floor(rem / LAND_UNIT_SQM.aana);\n rem -= aana * LAND_UNIT_SQM.aana;\n const paisa = Math.floor(rem / LAND_UNIT_SQM.paisa);\n rem -= paisa * LAND_UNIT_SQM.paisa;\n const daam = Math.round(rem / LAND_UNIT_SQM.daam);\n return carryRopani({ ropani, aana, paisa, daam });\n}\n\nfunction carryRopani(r: { ropani: number; aana: number; paisa: number; daam: number }) {\n if (r.daam >= 4) { r.paisa += Math.floor(r.daam / 4); r.daam %= 4; }\n if (r.paisa >= 4) { r.aana += Math.floor(r.paisa / 4); r.paisa %= 4; }\n if (r.aana >= 16) { r.ropani += Math.floor(r.aana / 16); r.aana %= 16; }\n return r;\n}\n\n/** Break square metres into the terai system: `{ bigha, kattha, dhur }`. */\nexport function sqMetersToBigha(m2: number): { bigha: number; kattha: number; dhur: number } {\n let rem = m2;\n const bigha = Math.floor(rem / LAND_UNIT_SQM.bigha);\n rem -= bigha * LAND_UNIT_SQM.bigha;\n const kattha = Math.floor(rem / LAND_UNIT_SQM.kattha);\n rem -= kattha * LAND_UNIT_SQM.kattha;\n const dhur = Math.round(rem / LAND_UNIT_SQM.dhur);\n if (dhur >= 20) return { bigha: bigha + Math.floor(dhur / 20), kattha, dhur: dhur % 20 };\n if (kattha >= 20) return { bigha: bigha + Math.floor(kattha / 20), kattha: kattha % 20, dhur };\n return { bigha, kattha, dhur };\n}\n\n/** `\"2-3-1-0\"` ropani-aana-paisa-daam from square metres. */\nexport function formatRopani(m2: number): string {\n const r = sqMetersToRopani(m2);\n return `${r.ropani}-${r.aana}-${r.paisa}-${r.daam}`;\n}\n\n/** `\"1-5-0\"` bigha-kattha-dhur from square metres. */\nexport function formatBigha(m2: number): string {\n const b = sqMetersToBigha(m2);\n return `${b.bigha}-${b.kattha}-${b.dhur}`;\n}\n\n/* ------------------------------ phone & validators ------------------------------ */\n\n/** Normalize a Nepali mobile to canonical `+9779XXXXXXXXX`, or null if invalid. */\nexport function normalizeMobile(input: string): string | null {\n const s = fromDevanagari(input).replace(/[\\s-]/g, \"\").replace(/^\\+?977/, \"\");\n return /^9[678]\\d{8}$/.test(s) ? `+977${s}` : null;\n}\n\nexport type Carrier = \"Ntc\" | \"Ncell\" | \"Smart Cell\" | \"UTL\" | \"unknown\";\n\n/** Detect the carrier of a Nepali mobile number. */\nexport function getCarrier(input: string): Carrier {\n const n = normalizeMobile(input);\n if (!n) return \"unknown\";\n const p = n.slice(4, 7); // three digits after +977\n if ([\"984\", \"985\", \"986\", \"974\", \"975\"].includes(p)) return \"Ntc\";\n if ([\"980\", \"981\", \"982\"].includes(p)) return \"Ncell\";\n if ([\"961\", \"962\", \"988\"].includes(p)) return \"Smart Cell\";\n if (p === \"972\") return \"UTL\";\n return \"unknown\";\n}\n\n/** True for a valid Nepali mobile number (10 digits starting 96–98, optional +977). */\nexport function isValidNepaliMobile(input: string): boolean {\n const s = fromDevanagari(input).replace(/[\\s-]/g, \"\");\n return /^(\\+?977)?9[678]\\d{8}$/.test(s);\n}\n\n/** True for a plausible Nepal landline (area code + number, e.g. 01-4XXXXXX). */\nexport function isValidLandline(input: string): boolean {\n const s = input.replace(/[\\s-]/g, \"\");\n return /^0\\d{7,9}$/.test(s);\n}\n\n/** True for a valid Nepal PAN / VAT number (9 digits). */\nexport function isValidPAN(input: string): boolean {\n return /^\\d{9}$/.test(input.trim());\n}\n\n/** True for a valid Nepal VAT number (9 digits — same format as PAN). */\nexport const isValidVAT = isValidPAN;\n\n/* ------------------------------ Nepali amount in words ------------------------------ */\n\nconst NEPALI_0_99 = [\n \"शून्य\", \"एक\", \"दुई\", \"तीन\", \"चार\", \"पाँच\", \"छ\", \"सात\", \"आठ\", \"नौ\",\n \"दस\", \"एघार\", \"बाह्र\", \"तेह्र\", \"चौध\", \"पन्ध्र\", \"सोह्र\", \"सत्र\", \"अठार\", \"उन्नाइस\",\n \"बीस\", \"एक्काइस\", \"बाइस\", \"तेइस\", \"चौबिस\", \"पच्चिस\", \"छब्बिस\", \"सत्ताइस\", \"अठ्ठाइस\", \"उनन्तिस\",\n \"तिस\", \"एकतिस\", \"बत्तिस\", \"तेत्तिस\", \"चौँतिस\", \"पैँतिस\", \"छत्तिस\", \"सैँतिस\", \"अठतिस\", \"उनन्चालिस\",\n \"चालिस\", \"एकचालिस\", \"बयालिस\", \"त्रिचालिस\", \"चवालिस\", \"पैँतालिस\", \"छयालिस\", \"सतचालिस\", \"अठचालिस\", \"उनन्चास\",\n \"पचास\", \"एकाउन्न\", \"बाउन्न\", \"त्रिपन्न\", \"चवन्न\", \"पचपन्न\", \"छपन्न\", \"सन्ताउन्न\", \"अन्ठाउन्न\", \"उनन्साठी\",\n \"साठी\", \"एकसट्ठी\", \"बयसट्ठी\", \"त्रिसट्ठी\", \"चौंसट्ठी\", \"पैंसट्ठी\", \"छयसट्ठी\", \"सतसट्ठी\", \"अठसट्ठी\", \"उनन्सत्तरी\",\n \"सत्तरी\", \"एकहत्तर\", \"बहत्तर\", \"त्रिहत्तर\", \"चौहत्तर\", \"पचहत्तर\", \"छयहत्तर\", \"सतहत्तर\", \"अठहत्तर\", \"उनासी\",\n \"असी\", \"एकासी\", \"बयासी\", \"त्रियासी\", \"चौरासी\", \"पचासी\", \"छयासी\", \"सतासी\", \"अठासी\", \"उनान्नब्बे\",\n \"नब्बे\", \"एकानब्बे\", \"बयानब्बे\", \"त्रियानब्बे\", \"चौरानब्बे\", \"पन्चानब्बे\", \"छयानब्बे\", \"सन्तानब्बे\", \"अन्ठानब्बे\", \"उनान्सय\",\n];\n\n/**\n * Amount in words in Nepali (Devanagari), South-Asian scale.\n * `numberToWordsNepali(1234567)` → `\"बाह्र लाख चौँतिस हजार पाँच सय सतसट्ठी\"`.\n */\nexport function numberToWordsNepali(value: number): string {\n let n = Math.floor(Math.abs(value));\n if (n === 0) return NEPALI_0_99[0]!;\n const parts: string[] = [];\n const units: [number, string][] = [\n [1e9, \"अरब\"],\n [1e7, \"करोड\"],\n [1e5, \"लाख\"],\n [1e3, \"हजार\"],\n [1e2, \"सय\"],\n ];\n for (const [size, name] of units) {\n if (n >= size) {\n const count = Math.floor(n / size);\n parts.push(`${NEPALI_0_99[count]} ${name}`);\n n %= size;\n }\n }\n if (n > 0) parts.push(NEPALI_0_99[n]!);\n return (value < 0 ? \"माइनस \" : \"\") + parts.join(\" \");\n}\n\n/** `numberToWordsNepali` plus a \"रुपैयाँ … मात्र\" wrapper for Nepali invoices. */\nexport function amountInWordsNepali(amount: number): string {\n const rupees = Math.floor(Math.abs(amount));\n const paisa = Math.round((Math.abs(amount) - rupees) * 100);\n let out = \"रुपैयाँ \" + numberToWordsNepali(rupees);\n if (paisa > 0) out += \" \" + numberToWordsNepali(paisa) + \" पैसा\";\n return (amount < 0 ? \"माइनस \" : \"\") + out + \" मात्र\";\n}\n\nexport interface Province {\n number: number;\n name: string;\n nameNp: string;\n capital: string;\n}\n\n/** Nepal's seven federal provinces. */\nexport const PROVINCES: readonly Province[] = [\n { number: 1, name: \"Koshi\", nameNp: \"कोशी\", capital: \"Biratnagar\" },\n { number: 2, name: \"Madhesh\", nameNp: \"मधेश\", capital: \"Janakpur\" },\n { number: 3, name: \"Bagmati\", nameNp: \"बागमती\", capital: \"Hetauda\" },\n { number: 4, name: \"Gandaki\", nameNp: \"गण्डकी\", capital: \"Pokhara\" },\n { number: 5, name: \"Lumbini\", nameNp: \"लुम्बिनी\", capital: \"Deukhuri\" },\n { number: 6, name: \"Karnali\", nameNp: \"कर्णाली\", capital: \"Birendranagar\" },\n { number: 7, name: \"Sudurpashchim\", nameNp: \"सुदूरपश्चिम\", capital: \"Godawari\" },\n];\n\nexport interface District {\n name: string;\n nameNp: string;\n /** Province number 1–7. */\n province: number;\n}\n\n/** Nepal's 77 districts, with their province number. */\nexport const DISTRICTS: readonly District[] = [\n // Koshi (1)\n { name: \"Bhojpur\", nameNp: \"भोजपुर\", province: 1 },\n { name: \"Dhankuta\", nameNp: \"धनकुटा\", province: 1 },\n { name: \"Ilam\", nameNp: \"इलाम\", province: 1 },\n { name: \"Jhapa\", nameNp: \"झापा\", province: 1 },\n { name: \"Khotang\", nameNp: \"खोटाङ\", province: 1 },\n { name: \"Morang\", nameNp: \"मोरङ\", province: 1 },\n { name: \"Okhaldhunga\", nameNp: \"ओखलढुंगा\", province: 1 },\n { name: \"Panchthar\", nameNp: \"पाँचथर\", province: 1 },\n { name: \"Sankhuwasabha\", nameNp: \"संखुवासभा\", province: 1 },\n { name: \"Solukhumbu\", nameNp: \"सोलुखुम्बु\", province: 1 },\n { name: \"Sunsari\", nameNp: \"सुनसरी\", province: 1 },\n { name: \"Taplejung\", nameNp: \"ताप्लेजुङ\", province: 1 },\n { name: \"Terhathum\", nameNp: \"तेह्रथुम\", province: 1 },\n { name: \"Udayapur\", nameNp: \"उदयपुर\", province: 1 },\n // Madhesh (2)\n { name: \"Bara\", nameNp: \"बारा\", province: 2 },\n { name: \"Dhanusha\", nameNp: \"धनुषा\", province: 2 },\n { name: \"Mahottari\", nameNp: \"महोत्तरी\", province: 2 },\n { name: \"Parsa\", nameNp: \"पर्सा\", province: 2 },\n { name: \"Rautahat\", nameNp: \"रौतहट\", province: 2 },\n { name: \"Saptari\", nameNp: \"सप्तरी\", province: 2 },\n { name: \"Sarlahi\", nameNp: \"सर्लाही\", province: 2 },\n { name: \"Siraha\", nameNp: \"सिरहा\", province: 2 },\n // Bagmati (3)\n { name: \"Bhaktapur\", nameNp: \"भक्तपुर\", province: 3 },\n { name: \"Chitwan\", nameNp: \"चितवन\", province: 3 },\n { name: \"Dhading\", nameNp: \"धादिङ\", province: 3 },\n { name: \"Dolakha\", nameNp: \"दोलखा\", province: 3 },\n { name: \"Kathmandu\", nameNp: \"काठमाडौं\", province: 3 },\n { name: \"Kavrepalanchok\", nameNp: \"काभ्रेपलाञ्चोक\", province: 3 },\n { name: \"Lalitpur\", nameNp: \"ललितपुर\", province: 3 },\n { name: \"Makwanpur\", nameNp: \"मकवानपुर\", province: 3 },\n { name: \"Nuwakot\", nameNp: \"नुवाकोट\", province: 3 },\n { name: \"Ramechhap\", nameNp: \"रामेछाप\", province: 3 },\n { name: \"Rasuwa\", nameNp: \"रसुवा\", province: 3 },\n { name: \"Sindhuli\", nameNp: \"सिन्धुली\", province: 3 },\n { name: \"Sindhupalchok\", nameNp: \"सिन्धुपाल्चोक\", province: 3 },\n // Gandaki (4)\n { name: \"Baglung\", nameNp: \"बागलुङ\", province: 4 },\n { name: \"Gorkha\", nameNp: \"गोरखा\", province: 4 },\n { name: \"Kaski\", nameNp: \"कास्की\", province: 4 },\n { name: \"Lamjung\", nameNp: \"लमजुङ\", province: 4 },\n { name: \"Manang\", nameNp: \"मनाङ\", province: 4 },\n { name: \"Mustang\", nameNp: \"मुस्ताङ\", province: 4 },\n { name: \"Myagdi\", nameNp: \"म्याग्दी\", province: 4 },\n { name: \"Nawalpur\", nameNp: \"नवलपुर\", province: 4 },\n { name: \"Parbat\", nameNp: \"पर्वत\", province: 4 },\n { name: \"Syangja\", nameNp: \"स्याङ्जा\", province: 4 },\n { name: \"Tanahun\", nameNp: \"तनहुँ\", province: 4 },\n // Lumbini (5)\n { name: \"Arghakhanchi\", nameNp: \"अर्घाखाँची\", province: 5 },\n { name: \"Banke\", nameNp: \"बाँके\", province: 5 },\n { name: \"Bardiya\", nameNp: \"बर्दिया\", province: 5 },\n { name: \"Dang\", nameNp: \"दाङ\", province: 5 },\n { name: \"Eastern Rukum\", nameNp: \"पूर्वी रुकुम\", province: 5 },\n { name: \"Gulmi\", nameNp: \"गुल्मी\", province: 5 },\n { name: \"Kapilvastu\", nameNp: \"कपिलवस्तु\", province: 5 },\n { name: \"Parasi\", nameNp: \"नवलपरासी (पश्चिम)\", province: 5 },\n { name: \"Palpa\", nameNp: \"पाल्पा\", province: 5 },\n { name: \"Pyuthan\", nameNp: \"प्युठान\", province: 5 },\n { name: \"Rolpa\", nameNp: \"रोल्पा\", province: 5 },\n { name: \"Rupandehi\", nameNp: \"रूपन्देही\", province: 5 },\n // Karnali (6)\n { name: \"Dailekh\", nameNp: \"दैलेख\", province: 6 },\n { name: \"Dolpa\", nameNp: \"डोल्पा\", province: 6 },\n { name: \"Humla\", nameNp: \"हुम्ला\", province: 6 },\n { name: \"Jajarkot\", nameNp: \"जाजरकोट\", province: 6 },\n { name: \"Jumla\", nameNp: \"जुम्ला\", province: 6 },\n { name: \"Kalikot\", nameNp: \"कालिकोट\", province: 6 },\n { name: \"Mugu\", nameNp: \"मुगु\", province: 6 },\n { name: \"Salyan\", nameNp: \"सल्यान\", province: 6 },\n { name: \"Surkhet\", nameNp: \"सुर्खेत\", province: 6 },\n { name: \"Western Rukum\", nameNp: \"पश्चिमी रुकुम\", province: 6 },\n // Sudurpashchim (7)\n { name: \"Achham\", nameNp: \"अछाम\", province: 7 },\n { name: \"Baitadi\", nameNp: \"बैतडी\", province: 7 },\n { name: \"Bajhang\", nameNp: \"बझाङ\", province: 7 },\n { name: \"Bajura\", nameNp: \"बाजुरा\", province: 7 },\n { name: \"Dadeldhura\", nameNp: \"डडेल्धुरा\", province: 7 },\n { name: \"Darchula\", nameNp: \"दार्चुला\", province: 7 },\n { name: \"Doti\", nameNp: \"डोटी\", province: 7 },\n { name: \"Kailali\", nameNp: \"कैलाली\", province: 7 },\n { name: \"Kanchanpur\", nameNp: \"कञ्चनपुर\", province: 7 },\n];\n\n/** Districts in a given province (1–7). */\nexport function districtsByProvince(province: number): District[] {\n return DISTRICTS.filter((d) => d.province === province);\n}\n\n/** Find a district by English or Nepali name (case-insensitive). */\nexport function findDistrict(name: string): District | undefined {\n const q = name.trim().toLowerCase();\n return DISTRICTS.find((d) => d.name.toLowerCase() === q || d.nameNp === name.trim());\n}\n"]}
1
+ {"version":3,"sources":["../src/index.ts"],"names":[],"mappings":"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","file":"index.cjs","sourcesContent":["/**\n * @lacspace/nepali-utils — everyday Nepal helpers: NPR currency formatting,\n * Nepali (South-Asian) digit grouping, Devanagari numerals, amount-in-words,\n * common validators, and province data. Zero-dependency, isomorphic.\n */\n\nconst DEVANAGARI = [\"०\", \"१\", \"२\", \"३\", \"४\", \"५\", \"६\", \"७\", \"८\", \"९\"] as const;\n\n/** Convert Arabic numerals to Devanagari: `\"2081\"` → `\"२०८१\"`. */\nexport function toDevanagari(input: string | number): string {\n return String(input).replace(/[0-9]/g, (d) => DEVANAGARI[Number(d)]!);\n}\n\n/** Convert Devanagari numerals to Arabic: `\"२०८१\"` → `\"2081\"`. */\nexport function fromDevanagari(input: string): string {\n return input.replace(/[०-९]/g, (d) => String(DEVANAGARI.indexOf(d as (typeof DEVANAGARI)[number])));\n}\n\n/**\n * Group an integer with the South-Asian (Nepali) system: the last three digits,\n * then groups of two. `1234567` → `\"12,34,567\"`.\n */\nexport function groupNepali(value: number | string): string {\n const str = String(value).trim();\n const negative = str.startsWith(\"-\");\n const sign = negative ? \"-\" : \"\";\n const s = str.replace(/[^\\d]/g, \"\");\n if (s.length <= 3) return sign + s;\n const last3 = s.slice(-3);\n const rest = s.slice(0, -3);\n return sign + rest.replace(/\\B(?=(\\d{2})+(?!\\d))/g, \",\") + \",\" + last3;\n}\n\nexport interface FormatNprOptions {\n /** Show a symbol/prefix. Default `\"Rs. \"`. Use `\"\"` for none. */\n symbol?: string;\n /** Number of decimal places. Default `2`. */\n decimals?: number;\n /** Render digits in Devanagari. Default `false`. */\n devanagari?: boolean;\n}\n\n/**\n * Format an amount as Nepalese Rupees with South-Asian grouping.\n * `formatNPR(1234567.5)` → `\"Rs. 12,34,567.50\"`.\n */\nexport function formatNPR(amount: number, options: FormatNprOptions = {}): string {\n const { symbol = \"Rs. \", decimals = 2, devanagari = false } = options;\n const negative = amount < 0;\n const fixed = Math.abs(amount).toFixed(decimals);\n const [intPart, decPart] = fixed.split(\".\");\n let out = groupNepali(intPart!);\n if (decPart) out += \".\" + decPart;\n if (devanagari) out = toDevanagari(out);\n return (negative ? \"-\" : \"\") + symbol + out;\n}\n\nconst ONES = [\n \"\", \"One\", \"Two\", \"Three\", \"Four\", \"Five\", \"Six\", \"Seven\", \"Eight\", \"Nine\",\n \"Ten\", \"Eleven\", \"Twelve\", \"Thirteen\", \"Fourteen\", \"Fifteen\", \"Sixteen\",\n \"Seventeen\", \"Eighteen\", \"Nineteen\",\n];\nconst TENS = [\"\", \"\", \"Twenty\", \"Thirty\", \"Forty\", \"Fifty\", \"Sixty\", \"Seventy\", \"Eighty\", \"Ninety\"];\n\nfunction twoDigitWords(n: number): string {\n if (n < 20) return ONES[n]!;\n const t = Math.floor(n / 10);\n const o = n % 10;\n return TENS[t]! + (o ? \" \" + ONES[o] : \"\");\n}\n\n/**\n * Amount in words using the South-Asian system (Thousand, Lakh, Crore, Arab) —\n * perfect for invoices. `numberToWords(1234567)` →\n * `\"Twelve Lakh Thirty Four Thousand Five Hundred Sixty Seven\"`.\n */\nexport function numberToWords(value: number): string {\n let n = Math.floor(Math.abs(value));\n if (n === 0) return \"Zero\";\n const parts: string[] = [];\n const units: [number, string][] = [\n [1e9, \"Arab\"],\n [1e7, \"Crore\"],\n [1e5, \"Lakh\"],\n [1e3, \"Thousand\"],\n [1e2, \"Hundred\"],\n ];\n for (const [size, name] of units) {\n if (n >= size) {\n const count = Math.floor(n / size);\n // Hundreds are 1–9; middle units take two digits; the top (Arab) unit can\n // itself run into the hundreds/thousands, so render its count recursively.\n const words = size === 100 ? ONES[count]! : count >= 100 ? numberToWords(count) : twoDigitWords(count);\n parts.push(words + \" \" + name);\n n %= size;\n }\n }\n if (n > 0) parts.push(twoDigitWords(n));\n return (value < 0 ? \"Minus \" : \"\") + parts.join(\" \");\n}\n\n/** `numberToWords` plus a \"Rupees … only\" wrapper for invoices. */\nexport function amountInWords(amount: number): string {\n let rupees = Math.floor(Math.abs(amount));\n let paisa = Math.round((Math.abs(amount) - rupees) * 100);\n if (paisa === 100) { rupees += 1; paisa = 0; }\n let out = \"Rupees \" + numberToWords(rupees);\n if (paisa > 0) out += \" and \" + numberToWords(paisa) + \" Paisa\";\n return (amount < 0 ? \"Minus \" : \"\") + out + \" Only\";\n}\n\n/** Parse a formatted NPR/Nepali-grouped string back to a number (inverse of {@link formatNPR}). */\nexport function ungroupNepali(input: string | number): number {\n let s = fromDevanagari(String(input)).trim();\n const negative = s.startsWith(\"-\");\n s = s.replace(/₹|rs\\.?|npr|रू\\.?|रु\\.?/gi, \"\"); // strip currency symbols (incl. the dot in \"Rs.\")\n s = s.replace(/[^\\d.]/g, \"\"); // drop grouping commas, spaces, everything else\n if (s === \"\") return NaN;\n const num = Number(s);\n return negative && !Number.isNaN(num) ? -num : num;\n}\n\n/** Alias of {@link ungroupNepali} — parse an NPR string to a number. */\nexport const parseNPR = ungroupNepali;\n\nfunction trimNum(n: number): string {\n return Number(n.toFixed(2)).toString();\n}\n\nexport interface CompactNprOptions {\n symbol?: string;\n /** Use Nepali scale words (हजार/लाख/करोड/अरब). Default false (K/Lakh/Cr/Arab). */\n nepali?: boolean;\n /** Render digits in Devanagari. Default false. */\n devanagari?: boolean;\n}\n\n/** Compact NPR: `formatCompactNPR(1234567)` → `\"Rs. 12.35 Lakh\"`. */\nexport function formatCompactNPR(amount: number, options: CompactNprOptions = {}): string {\n const { symbol = \"Rs. \", nepali = false, devanagari = false } = options;\n const negative = amount < 0;\n const a = Math.abs(amount);\n const units: [number, string, string][] = [\n [1e9, \"Arab\", \"अरब\"],\n [1e7, \"Cr\", \"करोड\"],\n [1e5, \"Lakh\", \"लाख\"],\n [1e3, \"K\", \"हजार\"],\n ];\n let out: string;\n const u = units.find(([size]) => a >= size);\n if (u) out = `${trimNum(a / u[0])} ${nepali ? u[2] : u[1]}`;\n else out = trimNum(a);\n if (devanagari) out = toDevanagari(out);\n return (negative ? \"-\" : \"\") + symbol + out;\n}\n\n/* ------------------------------ land-area units ------------------------------ */\n\nexport type LandUnit = \"ropani\" | \"aana\" | \"paisa\" | \"daam\" | \"bigha\" | \"kattha\" | \"dhur\" | \"sqm\" | \"sqft\";\n\n/** Area of one unit in square metres (hilly = ropani system, terai = bigha system). */\nexport const LAND_UNIT_SQM: Record<LandUnit, number> = {\n ropani: 508.7369, // 5476 sq ft\n aana: 31.79606, // ropani / 16\n paisa: 7.949014, // ropani / 64\n daam: 1.987254, // ropani / 256\n bigha: 6772.631, // 72900 sq ft\n kattha: 338.6315, // bigha / 20\n dhur: 16.93158, // bigha / 400\n sqm: 1,\n sqft: 0.09290304,\n};\n\n/** Total square metres from a mixed measure, e.g. `{ ropani: 2, aana: 3 }` or `{ bigha: 1, kattha: 5 }`. */\nexport function landToSqMeters(measure: Partial<Record<LandUnit, number>>): number {\n let m2 = 0;\n for (const [unit, value] of Object.entries(measure)) m2 += (value ?? 0) * LAND_UNIT_SQM[unit as LandUnit];\n return m2;\n}\n\n/** Convert an area between any two land units. */\nexport function convertLand(value: number, from: LandUnit, to: LandUnit): number {\n return (value * LAND_UNIT_SQM[from]) / LAND_UNIT_SQM[to];\n}\n\n/** Break square metres into the hilly system: `{ ropani, aana, paisa, daam }`. */\nexport function sqMetersToRopani(m2: number): { ropani: number; aana: number; paisa: number; daam: number } {\n let rem = m2;\n const ropani = Math.floor(rem / LAND_UNIT_SQM.ropani);\n rem -= ropani * LAND_UNIT_SQM.ropani;\n const aana = Math.floor(rem / LAND_UNIT_SQM.aana);\n rem -= aana * LAND_UNIT_SQM.aana;\n const paisa = Math.floor(rem / LAND_UNIT_SQM.paisa);\n rem -= paisa * LAND_UNIT_SQM.paisa;\n const daam = Math.round(rem / LAND_UNIT_SQM.daam);\n return carryRopani({ ropani, aana, paisa, daam });\n}\n\nfunction carryRopani(r: { ropani: number; aana: number; paisa: number; daam: number }) {\n if (r.daam >= 4) { r.paisa += Math.floor(r.daam / 4); r.daam %= 4; }\n if (r.paisa >= 4) { r.aana += Math.floor(r.paisa / 4); r.paisa %= 4; }\n if (r.aana >= 16) { r.ropani += Math.floor(r.aana / 16); r.aana %= 16; }\n return r;\n}\n\n/** Break square metres into the terai system: `{ bigha, kattha, dhur }`. */\nexport function sqMetersToBigha(m2: number): { bigha: number; kattha: number; dhur: number } {\n let rem = m2;\n const bigha = Math.floor(rem / LAND_UNIT_SQM.bigha);\n rem -= bigha * LAND_UNIT_SQM.bigha;\n const kattha = Math.floor(rem / LAND_UNIT_SQM.kattha);\n rem -= kattha * LAND_UNIT_SQM.kattha;\n const dhur = Math.round(rem / LAND_UNIT_SQM.dhur);\n if (dhur >= 20) return { bigha: bigha + Math.floor(dhur / 20), kattha, dhur: dhur % 20 };\n if (kattha >= 20) return { bigha: bigha + Math.floor(kattha / 20), kattha: kattha % 20, dhur };\n return { bigha, kattha, dhur };\n}\n\n/** `\"2-3-1-0\"` ropani-aana-paisa-daam from square metres. */\nexport function formatRopani(m2: number): string {\n const r = sqMetersToRopani(m2);\n return `${r.ropani}-${r.aana}-${r.paisa}-${r.daam}`;\n}\n\n/** `\"1-5-0\"` bigha-kattha-dhur from square metres. */\nexport function formatBigha(m2: number): string {\n const b = sqMetersToBigha(m2);\n return `${b.bigha}-${b.kattha}-${b.dhur}`;\n}\n\n/* ------------------------------ phone & validators ------------------------------ */\n\n/** Normalize a Nepali mobile to canonical `+9779XXXXXXXXX`, or null if invalid. */\nexport function normalizeMobile(input: string): string | null {\n const s = fromDevanagari(input).replace(/[\\s-]/g, \"\").replace(/^\\+?977/, \"\");\n return /^9[678]\\d{8}$/.test(s) ? `+977${s}` : null;\n}\n\nexport type Carrier = \"Ntc\" | \"Ncell\" | \"Smart Cell\" | \"UTL\" | \"unknown\";\n\n/** Detect the carrier of a Nepali mobile number. */\nexport function getCarrier(input: string): Carrier {\n const n = normalizeMobile(input);\n if (!n) return \"unknown\";\n const p = n.slice(4, 7); // three digits after +977\n if ([\"984\", \"985\", \"986\", \"974\", \"975\", \"976\"].includes(p)) return \"Ntc\";\n if ([\"980\", \"981\", \"982\"].includes(p)) return \"Ncell\";\n if ([\"961\", \"962\", \"988\"].includes(p)) return \"Smart Cell\";\n if (p === \"972\") return \"UTL\";\n return \"unknown\";\n}\n\n/** True for a valid Nepali mobile number (10 digits starting 96–98, optional +977). */\nexport function isValidNepaliMobile(input: string): boolean {\n const s = fromDevanagari(input).replace(/[\\s-]/g, \"\");\n return /^(\\+?977)?9[678]\\d{8}$/.test(s);\n}\n\n/** True for a plausible Nepal landline (area code + number, e.g. 01-4XXXXXX). */\nexport function isValidLandline(input: string): boolean {\n const s = input.replace(/[\\s-]/g, \"\");\n return /^0\\d{7,9}$/.test(s);\n}\n\n/** True for a valid Nepal PAN / VAT number (9 digits). */\nexport function isValidPAN(input: string): boolean {\n return /^\\d{9}$/.test(input.trim());\n}\n\n/** True for a valid Nepal VAT number (9 digits — same format as PAN). */\nexport const isValidVAT = isValidPAN;\n\n/* ------------------------------ Nepali amount in words ------------------------------ */\n\nconst NEPALI_0_99 = [\n \"शून्य\", \"एक\", \"दुई\", \"तीन\", \"चार\", \"पाँच\", \"छ\", \"सात\", \"आठ\", \"नौ\",\n \"दस\", \"एघार\", \"बाह्र\", \"तेह्र\", \"चौध\", \"पन्ध्र\", \"सोह्र\", \"सत्र\", \"अठार\", \"उन्नाइस\",\n \"बीस\", \"एक्काइस\", \"बाइस\", \"तेइस\", \"चौबिस\", \"पच्चिस\", \"छब्बिस\", \"सत्ताइस\", \"अठ्ठाइस\", \"उनन्तिस\",\n \"तिस\", \"एकतिस\", \"बत्तिस\", \"तेत्तिस\", \"चौँतिस\", \"पैँतिस\", \"छत्तिस\", \"सैँतिस\", \"अठतिस\", \"उनन्चालिस\",\n \"चालिस\", \"एकचालिस\", \"बयालिस\", \"त्रिचालिस\", \"चवालिस\", \"पैँतालिस\", \"छयालिस\", \"सतचालिस\", \"अठचालिस\", \"उनन्चास\",\n \"पचास\", \"एकाउन्न\", \"बाउन्न\", \"त्रिपन्न\", \"चवन्न\", \"पचपन्न\", \"छपन्न\", \"सन्ताउन्न\", \"अन्ठाउन्न\", \"उनन्साठी\",\n \"साठी\", \"एकसट्ठी\", \"बयसट्ठी\", \"त्रिसट्ठी\", \"चौंसट्ठी\", \"पैंसट्ठी\", \"छयसट्ठी\", \"सतसट्ठी\", \"अठसट्ठी\", \"उनन्सत्तरी\",\n \"सत्तरी\", \"एकहत्तर\", \"बहत्तर\", \"त्रिहत्तर\", \"चौहत्तर\", \"पचहत्तर\", \"छयहत्तर\", \"सतहत्तर\", \"अठहत्तर\", \"उनासी\",\n \"असी\", \"एकासी\", \"बयासी\", \"त्रियासी\", \"चौरासी\", \"पचासी\", \"छयासी\", \"सतासी\", \"अठासी\", \"उनान्नब्बे\",\n \"नब्बे\", \"एकानब्बे\", \"बयानब्बे\", \"त्रियानब्बे\", \"चौरानब्बे\", \"पन्चानब्बे\", \"छयानब्बे\", \"सन्तानब्बे\", \"अन्ठानब्बे\", \"उनान्सय\",\n];\n\n/**\n * Amount in words in Nepali (Devanagari), South-Asian scale.\n * `numberToWordsNepali(1234567)` → `\"बाह्र लाख चौँतिस हजार पाँच सय सतसट्ठी\"`.\n */\nexport function numberToWordsNepali(value: number): string {\n let n = Math.floor(Math.abs(value));\n if (n === 0) return NEPALI_0_99[0]!;\n const parts: string[] = [];\n const units: [number, string][] = [\n [1e9, \"अरब\"],\n [1e7, \"करोड\"],\n [1e5, \"लाख\"],\n [1e3, \"हजार\"],\n [1e2, \"सय\"],\n ];\n for (const [size, name] of units) {\n if (n >= size) {\n const count = Math.floor(n / size);\n // NEPALI_0_99 only covers 0–99; the top (अरब) unit can exceed that, so\n // render its count recursively.\n const words = count >= 100 ? numberToWordsNepali(count) : NEPALI_0_99[count]!;\n parts.push(`${words} ${name}`);\n n %= size;\n }\n }\n if (n > 0) parts.push(NEPALI_0_99[n]!);\n return (value < 0 ? \"माइनस \" : \"\") + parts.join(\" \");\n}\n\n/** `numberToWordsNepali` plus a \"रुपैयाँ … मात्र\" wrapper for Nepali invoices. */\nexport function amountInWordsNepali(amount: number): string {\n let rupees = Math.floor(Math.abs(amount));\n let paisa = Math.round((Math.abs(amount) - rupees) * 100);\n if (paisa === 100) { rupees += 1; paisa = 0; }\n let out = \"रुपैयाँ \" + numberToWordsNepali(rupees);\n if (paisa > 0) out += \" \" + numberToWordsNepali(paisa) + \" पैसा\";\n return (amount < 0 ? \"माइनस \" : \"\") + out + \" मात्र\";\n}\n\nexport interface Province {\n number: number;\n name: string;\n nameNp: string;\n capital: string;\n}\n\n/** Nepal's seven federal provinces. */\nexport const PROVINCES: readonly Province[] = [\n { number: 1, name: \"Koshi\", nameNp: \"कोशी\", capital: \"Biratnagar\" },\n { number: 2, name: \"Madhesh\", nameNp: \"मधेश\", capital: \"Janakpur\" },\n { number: 3, name: \"Bagmati\", nameNp: \"बागमती\", capital: \"Hetauda\" },\n { number: 4, name: \"Gandaki\", nameNp: \"गण्डकी\", capital: \"Pokhara\" },\n { number: 5, name: \"Lumbini\", nameNp: \"लुम्बिनी\", capital: \"Deukhuri\" },\n { number: 6, name: \"Karnali\", nameNp: \"कर्णाली\", capital: \"Birendranagar\" },\n { number: 7, name: \"Sudurpashchim\", nameNp: \"सुदूरपश्चिम\", capital: \"Godawari\" },\n];\n\nexport interface District {\n name: string;\n nameNp: string;\n /** Province number 1–7. */\n province: number;\n}\n\n/** Nepal's 77 districts, with their province number. */\nexport const DISTRICTS: readonly District[] = [\n // Koshi (1)\n { name: \"Bhojpur\", nameNp: \"भोजपुर\", province: 1 },\n { name: \"Dhankuta\", nameNp: \"धनकुटा\", province: 1 },\n { name: \"Ilam\", nameNp: \"इलाम\", province: 1 },\n { name: \"Jhapa\", nameNp: \"झापा\", province: 1 },\n { name: \"Khotang\", nameNp: \"खोटाङ\", province: 1 },\n { name: \"Morang\", nameNp: \"मोरङ\", province: 1 },\n { name: \"Okhaldhunga\", nameNp: \"ओखलढुंगा\", province: 1 },\n { name: \"Panchthar\", nameNp: \"पाँचथर\", province: 1 },\n { name: \"Sankhuwasabha\", nameNp: \"संखुवासभा\", province: 1 },\n { name: \"Solukhumbu\", nameNp: \"सोलुखुम्बु\", province: 1 },\n { name: \"Sunsari\", nameNp: \"सुनसरी\", province: 1 },\n { name: \"Taplejung\", nameNp: \"ताप्लेजुङ\", province: 1 },\n { name: \"Terhathum\", nameNp: \"तेह्रथुम\", province: 1 },\n { name: \"Udayapur\", nameNp: \"उदयपुर\", province: 1 },\n // Madhesh (2)\n { name: \"Bara\", nameNp: \"बारा\", province: 2 },\n { name: \"Dhanusha\", nameNp: \"धनुषा\", province: 2 },\n { name: \"Mahottari\", nameNp: \"महोत्तरी\", province: 2 },\n { name: \"Parsa\", nameNp: \"पर्सा\", province: 2 },\n { name: \"Rautahat\", nameNp: \"रौतहट\", province: 2 },\n { name: \"Saptari\", nameNp: \"सप्तरी\", province: 2 },\n { name: \"Sarlahi\", nameNp: \"सर्लाही\", province: 2 },\n { name: \"Siraha\", nameNp: \"सिरहा\", province: 2 },\n // Bagmati (3)\n { name: \"Bhaktapur\", nameNp: \"भक्तपुर\", province: 3 },\n { name: \"Chitwan\", nameNp: \"चितवन\", province: 3 },\n { name: \"Dhading\", nameNp: \"धादिङ\", province: 3 },\n { name: \"Dolakha\", nameNp: \"दोलखा\", province: 3 },\n { name: \"Kathmandu\", nameNp: \"काठमाडौं\", province: 3 },\n { name: \"Kavrepalanchok\", nameNp: \"काभ्रेपलाञ्चोक\", province: 3 },\n { name: \"Lalitpur\", nameNp: \"ललितपुर\", province: 3 },\n { name: \"Makwanpur\", nameNp: \"मकवानपुर\", province: 3 },\n { name: \"Nuwakot\", nameNp: \"नुवाकोट\", province: 3 },\n { name: \"Ramechhap\", nameNp: \"रामेछाप\", province: 3 },\n { name: \"Rasuwa\", nameNp: \"रसुवा\", province: 3 },\n { name: \"Sindhuli\", nameNp: \"सिन्धुली\", province: 3 },\n { name: \"Sindhupalchok\", nameNp: \"सिन्धुपाल्चोक\", province: 3 },\n // Gandaki (4)\n { name: \"Baglung\", nameNp: \"बागलुङ\", province: 4 },\n { name: \"Gorkha\", nameNp: \"गोरखा\", province: 4 },\n { name: \"Kaski\", nameNp: \"कास्की\", province: 4 },\n { name: \"Lamjung\", nameNp: \"लमजुङ\", province: 4 },\n { name: \"Manang\", nameNp: \"मनाङ\", province: 4 },\n { name: \"Mustang\", nameNp: \"मुस्ताङ\", province: 4 },\n { name: \"Myagdi\", nameNp: \"म्याग्दी\", province: 4 },\n { name: \"Nawalpur\", nameNp: \"नवलपुर\", province: 4 },\n { name: \"Parbat\", nameNp: \"पर्वत\", province: 4 },\n { name: \"Syangja\", nameNp: \"स्याङ्जा\", province: 4 },\n { name: \"Tanahun\", nameNp: \"तनहुँ\", province: 4 },\n // Lumbini (5)\n { name: \"Arghakhanchi\", nameNp: \"अर्घाखाँची\", province: 5 },\n { name: \"Banke\", nameNp: \"बाँके\", province: 5 },\n { name: \"Bardiya\", nameNp: \"बर्दिया\", province: 5 },\n { name: \"Dang\", nameNp: \"दाङ\", province: 5 },\n { name: \"Eastern Rukum\", nameNp: \"पूर्वी रुकुम\", province: 5 },\n { name: \"Gulmi\", nameNp: \"गुल्मी\", province: 5 },\n { name: \"Kapilvastu\", nameNp: \"कपिलवस्तु\", province: 5 },\n { name: \"Parasi\", nameNp: \"नवलपरासी (पश्चिम)\", province: 5 },\n { name: \"Palpa\", nameNp: \"पाल्पा\", province: 5 },\n { name: \"Pyuthan\", nameNp: \"प्युठान\", province: 5 },\n { name: \"Rolpa\", nameNp: \"रोल्पा\", province: 5 },\n { name: \"Rupandehi\", nameNp: \"रूपन्देही\", province: 5 },\n // Karnali (6)\n { name: \"Dailekh\", nameNp: \"दैलेख\", province: 6 },\n { name: \"Dolpa\", nameNp: \"डोल्पा\", province: 6 },\n { name: \"Humla\", nameNp: \"हुम्ला\", province: 6 },\n { name: \"Jajarkot\", nameNp: \"जाजरकोट\", province: 6 },\n { name: \"Jumla\", nameNp: \"जुम्ला\", province: 6 },\n { name: \"Kalikot\", nameNp: \"कालिकोट\", province: 6 },\n { name: \"Mugu\", nameNp: \"मुगु\", province: 6 },\n { name: \"Salyan\", nameNp: \"सल्यान\", province: 6 },\n { name: \"Surkhet\", nameNp: \"सुर्खेत\", province: 6 },\n { name: \"Western Rukum\", nameNp: \"पश्चिमी रुकुम\", province: 6 },\n // Sudurpashchim (7)\n { name: \"Achham\", nameNp: \"अछाम\", province: 7 },\n { name: \"Baitadi\", nameNp: \"बैतडी\", province: 7 },\n { name: \"Bajhang\", nameNp: \"बझाङ\", province: 7 },\n { name: \"Bajura\", nameNp: \"बाजुरा\", province: 7 },\n { name: \"Dadeldhura\", nameNp: \"डडेल्धुरा\", province: 7 },\n { name: \"Darchula\", nameNp: \"दार्चुला\", province: 7 },\n { name: \"Doti\", nameNp: \"डोटी\", province: 7 },\n { name: \"Kailali\", nameNp: \"कैलाली\", province: 7 },\n { name: \"Kanchanpur\", nameNp: \"कञ्चनपुर\", province: 7 },\n];\n\n/** Districts in a given province (1–7). */\nexport function districtsByProvince(province: number): District[] {\n return DISTRICTS.filter((d) => d.province === province);\n}\n\n/** Find a district by English or Nepali name (case-insensitive). */\nexport function findDistrict(name: string): District | undefined {\n const q = name.trim().toLowerCase();\n return DISTRICTS.find((d) => d.name.toLowerCase() === q || d.nameNp === name.trim());\n}\n"]}
package/dist/index.js CHANGED
@@ -7,11 +7,14 @@ function fromDevanagari(input) {
7
7
  return input.replace(/[०-९]/g, (d) => String(DEVANAGARI.indexOf(d)));
8
8
  }
9
9
  function groupNepali(value) {
10
- const s = String(value).replace(/[^\d]/g, "");
11
- if (s.length <= 3) return s;
10
+ const str = String(value).trim();
11
+ const negative = str.startsWith("-");
12
+ const sign = negative ? "-" : "";
13
+ const s = str.replace(/[^\d]/g, "");
14
+ if (s.length <= 3) return sign + s;
12
15
  const last3 = s.slice(-3);
13
16
  const rest = s.slice(0, -3);
14
- return rest.replace(/\B(?=(\d{2})+(?!\d))/g, ",") + "," + last3;
17
+ return sign + rest.replace(/\B(?=(\d{2})+(?!\d))/g, ",") + "," + last3;
15
18
  }
16
19
  function formatNPR(amount, options = {}) {
17
20
  const { symbol = "Rs. ", decimals = 2, devanagari = false } = options;
@@ -66,7 +69,8 @@ function numberToWords(value) {
66
69
  for (const [size, name] of units) {
67
70
  if (n >= size) {
68
71
  const count = Math.floor(n / size);
69
- parts.push((size === 100 ? ONES[count] : twoDigitWords(count)) + " " + name);
72
+ const words = size === 100 ? ONES[count] : count >= 100 ? numberToWords(count) : twoDigitWords(count);
73
+ parts.push(words + " " + name);
70
74
  n %= size;
71
75
  }
72
76
  }
@@ -74,8 +78,12 @@ function numberToWords(value) {
74
78
  return (value < 0 ? "Minus " : "") + parts.join(" ");
75
79
  }
76
80
  function amountInWords(amount) {
77
- const rupees = Math.floor(Math.abs(amount));
78
- const paisa = Math.round((Math.abs(amount) - rupees) * 100);
81
+ let rupees = Math.floor(Math.abs(amount));
82
+ let paisa = Math.round((Math.abs(amount) - rupees) * 100);
83
+ if (paisa === 100) {
84
+ rupees += 1;
85
+ paisa = 0;
86
+ }
79
87
  let out = "Rupees " + numberToWords(rupees);
80
88
  if (paisa > 0) out += " and " + numberToWords(paisa) + " Paisa";
81
89
  return (amount < 0 ? "Minus " : "") + out + " Only";
@@ -189,7 +197,7 @@ function getCarrier(input) {
189
197
  const n = normalizeMobile(input);
190
198
  if (!n) return "unknown";
191
199
  const p = n.slice(4, 7);
192
- if (["984", "985", "986", "974", "975"].includes(p)) return "Ntc";
200
+ if (["984", "985", "986", "974", "975", "976"].includes(p)) return "Ntc";
193
201
  if (["980", "981", "982"].includes(p)) return "Ncell";
194
202
  if (["961", "962", "988"].includes(p)) return "Smart Cell";
195
203
  if (p === "972") return "UTL";
@@ -323,7 +331,8 @@ function numberToWordsNepali(value) {
323
331
  for (const [size, name] of units) {
324
332
  if (n >= size) {
325
333
  const count = Math.floor(n / size);
326
- parts.push(`${NEPALI_0_99[count]} ${name}`);
334
+ const words = count >= 100 ? numberToWordsNepali(count) : NEPALI_0_99[count];
335
+ parts.push(`${words} ${name}`);
327
336
  n %= size;
328
337
  }
329
338
  }
@@ -331,8 +340,12 @@ function numberToWordsNepali(value) {
331
340
  return (value < 0 ? "\u092E\u093E\u0907\u0928\u0938 " : "") + parts.join(" ");
332
341
  }
333
342
  function amountInWordsNepali(amount) {
334
- const rupees = Math.floor(Math.abs(amount));
335
- const paisa = Math.round((Math.abs(amount) - rupees) * 100);
343
+ let rupees = Math.floor(Math.abs(amount));
344
+ let paisa = Math.round((Math.abs(amount) - rupees) * 100);
345
+ if (paisa === 100) {
346
+ rupees += 1;
347
+ paisa = 0;
348
+ }
336
349
  let out = "\u0930\u0941\u092A\u0948\u092F\u093E\u0901 " + numberToWordsNepali(rupees);
337
350
  if (paisa > 0) out += " " + numberToWordsNepali(paisa) + " \u092A\u0948\u0938\u093E";
338
351
  return (amount < 0 ? "\u092E\u093E\u0907\u0928\u0938 " : "") + out + " \u092E\u093E\u0924\u094D\u0930";
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts"],"names":[],"mappings":"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","file":"index.js","sourcesContent":["/**\n * @lacspace/nepali-utils — everyday Nepal helpers: NPR currency formatting,\n * Nepali (South-Asian) digit grouping, Devanagari numerals, amount-in-words,\n * common validators, and province data. Zero-dependency, isomorphic.\n */\n\nconst DEVANAGARI = [\"०\", \"१\", \"२\", \"३\", \"४\", \"५\", \"६\", \"७\", \"८\", \"९\"] as const;\n\n/** Convert Arabic numerals to Devanagari: `\"2081\"` → `\"२०८१\"`. */\nexport function toDevanagari(input: string | number): string {\n return String(input).replace(/[0-9]/g, (d) => DEVANAGARI[Number(d)]!);\n}\n\n/** Convert Devanagari numerals to Arabic: `\"२०८१\"` → `\"2081\"`. */\nexport function fromDevanagari(input: string): string {\n return input.replace(/[०-९]/g, (d) => String(DEVANAGARI.indexOf(d as (typeof DEVANAGARI)[number])));\n}\n\n/**\n * Group an integer with the South-Asian (Nepali) system: the last three digits,\n * then groups of two. `1234567` → `\"12,34,567\"`.\n */\nexport function groupNepali(value: number | string): string {\n const s = String(value).replace(/[^\\d]/g, \"\");\n if (s.length <= 3) return s;\n const last3 = s.slice(-3);\n const rest = s.slice(0, -3);\n return rest.replace(/\\B(?=(\\d{2})+(?!\\d))/g, \",\") + \",\" + last3;\n}\n\nexport interface FormatNprOptions {\n /** Show a symbol/prefix. Default `\"Rs. \"`. Use `\"\"` for none. */\n symbol?: string;\n /** Number of decimal places. Default `2`. */\n decimals?: number;\n /** Render digits in Devanagari. Default `false`. */\n devanagari?: boolean;\n}\n\n/**\n * Format an amount as Nepalese Rupees with South-Asian grouping.\n * `formatNPR(1234567.5)` → `\"Rs. 12,34,567.50\"`.\n */\nexport function formatNPR(amount: number, options: FormatNprOptions = {}): string {\n const { symbol = \"Rs. \", decimals = 2, devanagari = false } = options;\n const negative = amount < 0;\n const fixed = Math.abs(amount).toFixed(decimals);\n const [intPart, decPart] = fixed.split(\".\");\n let out = groupNepali(intPart!);\n if (decPart) out += \".\" + decPart;\n if (devanagari) out = toDevanagari(out);\n return (negative ? \"-\" : \"\") + symbol + out;\n}\n\nconst ONES = [\n \"\", \"One\", \"Two\", \"Three\", \"Four\", \"Five\", \"Six\", \"Seven\", \"Eight\", \"Nine\",\n \"Ten\", \"Eleven\", \"Twelve\", \"Thirteen\", \"Fourteen\", \"Fifteen\", \"Sixteen\",\n \"Seventeen\", \"Eighteen\", \"Nineteen\",\n];\nconst TENS = [\"\", \"\", \"Twenty\", \"Thirty\", \"Forty\", \"Fifty\", \"Sixty\", \"Seventy\", \"Eighty\", \"Ninety\"];\n\nfunction twoDigitWords(n: number): string {\n if (n < 20) return ONES[n]!;\n const t = Math.floor(n / 10);\n const o = n % 10;\n return TENS[t]! + (o ? \" \" + ONES[o] : \"\");\n}\n\n/**\n * Amount in words using the South-Asian system (Thousand, Lakh, Crore, Arab) —\n * perfect for invoices. `numberToWords(1234567)` →\n * `\"Twelve Lakh Thirty Four Thousand Five Hundred Sixty Seven\"`.\n */\nexport function numberToWords(value: number): string {\n let n = Math.floor(Math.abs(value));\n if (n === 0) return \"Zero\";\n const parts: string[] = [];\n const units: [number, string][] = [\n [1e9, \"Arab\"],\n [1e7, \"Crore\"],\n [1e5, \"Lakh\"],\n [1e3, \"Thousand\"],\n [1e2, \"Hundred\"],\n ];\n for (const [size, name] of units) {\n if (n >= size) {\n const count = Math.floor(n / size);\n // Hundreds are 1–9; the higher units take up to two digits.\n parts.push((size === 100 ? ONES[count] : twoDigitWords(count)) + \" \" + name);\n n %= size;\n }\n }\n if (n > 0) parts.push(twoDigitWords(n));\n return (value < 0 ? \"Minus \" : \"\") + parts.join(\" \");\n}\n\n/** `numberToWords` plus a \"Rupees … only\" wrapper for invoices. */\nexport function amountInWords(amount: number): string {\n const rupees = Math.floor(Math.abs(amount));\n const paisa = Math.round((Math.abs(amount) - rupees) * 100);\n let out = \"Rupees \" + numberToWords(rupees);\n if (paisa > 0) out += \" and \" + numberToWords(paisa) + \" Paisa\";\n return (amount < 0 ? \"Minus \" : \"\") + out + \" Only\";\n}\n\n/** Parse a formatted NPR/Nepali-grouped string back to a number (inverse of {@link formatNPR}). */\nexport function ungroupNepali(input: string | number): number {\n let s = fromDevanagari(String(input)).trim();\n const negative = s.startsWith(\"-\");\n s = s.replace(/₹|rs\\.?|npr|रू\\.?|रु\\.?/gi, \"\"); // strip currency symbols (incl. the dot in \"Rs.\")\n s = s.replace(/[^\\d.]/g, \"\"); // drop grouping commas, spaces, everything else\n if (s === \"\") return NaN;\n const num = Number(s);\n return negative && !Number.isNaN(num) ? -num : num;\n}\n\n/** Alias of {@link ungroupNepali} — parse an NPR string to a number. */\nexport const parseNPR = ungroupNepali;\n\nfunction trimNum(n: number): string {\n return Number(n.toFixed(2)).toString();\n}\n\nexport interface CompactNprOptions {\n symbol?: string;\n /** Use Nepali scale words (हजार/लाख/करोड/अरब). Default false (K/Lakh/Cr/Arab). */\n nepali?: boolean;\n /** Render digits in Devanagari. Default false. */\n devanagari?: boolean;\n}\n\n/** Compact NPR: `formatCompactNPR(1234567)` → `\"Rs. 12.35 Lakh\"`. */\nexport function formatCompactNPR(amount: number, options: CompactNprOptions = {}): string {\n const { symbol = \"Rs. \", nepali = false, devanagari = false } = options;\n const negative = amount < 0;\n const a = Math.abs(amount);\n const units: [number, string, string][] = [\n [1e9, \"Arab\", \"अरब\"],\n [1e7, \"Cr\", \"करोड\"],\n [1e5, \"Lakh\", \"लाख\"],\n [1e3, \"K\", \"हजार\"],\n ];\n let out: string;\n const u = units.find(([size]) => a >= size);\n if (u) out = `${trimNum(a / u[0])} ${nepali ? u[2] : u[1]}`;\n else out = trimNum(a);\n if (devanagari) out = toDevanagari(out);\n return (negative ? \"-\" : \"\") + symbol + out;\n}\n\n/* ------------------------------ land-area units ------------------------------ */\n\nexport type LandUnit = \"ropani\" | \"aana\" | \"paisa\" | \"daam\" | \"bigha\" | \"kattha\" | \"dhur\" | \"sqm\" | \"sqft\";\n\n/** Area of one unit in square metres (hilly = ropani system, terai = bigha system). */\nexport const LAND_UNIT_SQM: Record<LandUnit, number> = {\n ropani: 508.7369, // 5476 sq ft\n aana: 31.79606, // ropani / 16\n paisa: 7.949014, // ropani / 64\n daam: 1.987254, // ropani / 256\n bigha: 6772.631, // 72900 sq ft\n kattha: 338.6315, // bigha / 20\n dhur: 16.93158, // bigha / 400\n sqm: 1,\n sqft: 0.09290304,\n};\n\n/** Total square metres from a mixed measure, e.g. `{ ropani: 2, aana: 3 }` or `{ bigha: 1, kattha: 5 }`. */\nexport function landToSqMeters(measure: Partial<Record<LandUnit, number>>): number {\n let m2 = 0;\n for (const [unit, value] of Object.entries(measure)) m2 += (value ?? 0) * LAND_UNIT_SQM[unit as LandUnit];\n return m2;\n}\n\n/** Convert an area between any two land units. */\nexport function convertLand(value: number, from: LandUnit, to: LandUnit): number {\n return (value * LAND_UNIT_SQM[from]) / LAND_UNIT_SQM[to];\n}\n\n/** Break square metres into the hilly system: `{ ropani, aana, paisa, daam }`. */\nexport function sqMetersToRopani(m2: number): { ropani: number; aana: number; paisa: number; daam: number } {\n let rem = m2;\n const ropani = Math.floor(rem / LAND_UNIT_SQM.ropani);\n rem -= ropani * LAND_UNIT_SQM.ropani;\n const aana = Math.floor(rem / LAND_UNIT_SQM.aana);\n rem -= aana * LAND_UNIT_SQM.aana;\n const paisa = Math.floor(rem / LAND_UNIT_SQM.paisa);\n rem -= paisa * LAND_UNIT_SQM.paisa;\n const daam = Math.round(rem / LAND_UNIT_SQM.daam);\n return carryRopani({ ropani, aana, paisa, daam });\n}\n\nfunction carryRopani(r: { ropani: number; aana: number; paisa: number; daam: number }) {\n if (r.daam >= 4) { r.paisa += Math.floor(r.daam / 4); r.daam %= 4; }\n if (r.paisa >= 4) { r.aana += Math.floor(r.paisa / 4); r.paisa %= 4; }\n if (r.aana >= 16) { r.ropani += Math.floor(r.aana / 16); r.aana %= 16; }\n return r;\n}\n\n/** Break square metres into the terai system: `{ bigha, kattha, dhur }`. */\nexport function sqMetersToBigha(m2: number): { bigha: number; kattha: number; dhur: number } {\n let rem = m2;\n const bigha = Math.floor(rem / LAND_UNIT_SQM.bigha);\n rem -= bigha * LAND_UNIT_SQM.bigha;\n const kattha = Math.floor(rem / LAND_UNIT_SQM.kattha);\n rem -= kattha * LAND_UNIT_SQM.kattha;\n const dhur = Math.round(rem / LAND_UNIT_SQM.dhur);\n if (dhur >= 20) return { bigha: bigha + Math.floor(dhur / 20), kattha, dhur: dhur % 20 };\n if (kattha >= 20) return { bigha: bigha + Math.floor(kattha / 20), kattha: kattha % 20, dhur };\n return { bigha, kattha, dhur };\n}\n\n/** `\"2-3-1-0\"` ropani-aana-paisa-daam from square metres. */\nexport function formatRopani(m2: number): string {\n const r = sqMetersToRopani(m2);\n return `${r.ropani}-${r.aana}-${r.paisa}-${r.daam}`;\n}\n\n/** `\"1-5-0\"` bigha-kattha-dhur from square metres. */\nexport function formatBigha(m2: number): string {\n const b = sqMetersToBigha(m2);\n return `${b.bigha}-${b.kattha}-${b.dhur}`;\n}\n\n/* ------------------------------ phone & validators ------------------------------ */\n\n/** Normalize a Nepali mobile to canonical `+9779XXXXXXXXX`, or null if invalid. */\nexport function normalizeMobile(input: string): string | null {\n const s = fromDevanagari(input).replace(/[\\s-]/g, \"\").replace(/^\\+?977/, \"\");\n return /^9[678]\\d{8}$/.test(s) ? `+977${s}` : null;\n}\n\nexport type Carrier = \"Ntc\" | \"Ncell\" | \"Smart Cell\" | \"UTL\" | \"unknown\";\n\n/** Detect the carrier of a Nepali mobile number. */\nexport function getCarrier(input: string): Carrier {\n const n = normalizeMobile(input);\n if (!n) return \"unknown\";\n const p = n.slice(4, 7); // three digits after +977\n if ([\"984\", \"985\", \"986\", \"974\", \"975\"].includes(p)) return \"Ntc\";\n if ([\"980\", \"981\", \"982\"].includes(p)) return \"Ncell\";\n if ([\"961\", \"962\", \"988\"].includes(p)) return \"Smart Cell\";\n if (p === \"972\") return \"UTL\";\n return \"unknown\";\n}\n\n/** True for a valid Nepali mobile number (10 digits starting 96–98, optional +977). */\nexport function isValidNepaliMobile(input: string): boolean {\n const s = fromDevanagari(input).replace(/[\\s-]/g, \"\");\n return /^(\\+?977)?9[678]\\d{8}$/.test(s);\n}\n\n/** True for a plausible Nepal landline (area code + number, e.g. 01-4XXXXXX). */\nexport function isValidLandline(input: string): boolean {\n const s = input.replace(/[\\s-]/g, \"\");\n return /^0\\d{7,9}$/.test(s);\n}\n\n/** True for a valid Nepal PAN / VAT number (9 digits). */\nexport function isValidPAN(input: string): boolean {\n return /^\\d{9}$/.test(input.trim());\n}\n\n/** True for a valid Nepal VAT number (9 digits — same format as PAN). */\nexport const isValidVAT = isValidPAN;\n\n/* ------------------------------ Nepali amount in words ------------------------------ */\n\nconst NEPALI_0_99 = [\n \"शून्य\", \"एक\", \"दुई\", \"तीन\", \"चार\", \"पाँच\", \"छ\", \"सात\", \"आठ\", \"नौ\",\n \"दस\", \"एघार\", \"बाह्र\", \"तेह्र\", \"चौध\", \"पन्ध्र\", \"सोह्र\", \"सत्र\", \"अठार\", \"उन्नाइस\",\n \"बीस\", \"एक्काइस\", \"बाइस\", \"तेइस\", \"चौबिस\", \"पच्चिस\", \"छब्बिस\", \"सत्ताइस\", \"अठ्ठाइस\", \"उनन्तिस\",\n \"तिस\", \"एकतिस\", \"बत्तिस\", \"तेत्तिस\", \"चौँतिस\", \"पैँतिस\", \"छत्तिस\", \"सैँतिस\", \"अठतिस\", \"उनन्चालिस\",\n \"चालिस\", \"एकचालिस\", \"बयालिस\", \"त्रिचालिस\", \"चवालिस\", \"पैँतालिस\", \"छयालिस\", \"सतचालिस\", \"अठचालिस\", \"उनन्चास\",\n \"पचास\", \"एकाउन्न\", \"बाउन्न\", \"त्रिपन्न\", \"चवन्न\", \"पचपन्न\", \"छपन्न\", \"सन्ताउन्न\", \"अन्ठाउन्न\", \"उनन्साठी\",\n \"साठी\", \"एकसट्ठी\", \"बयसट्ठी\", \"त्रिसट्ठी\", \"चौंसट्ठी\", \"पैंसट्ठी\", \"छयसट्ठी\", \"सतसट्ठी\", \"अठसट्ठी\", \"उनन्सत्तरी\",\n \"सत्तरी\", \"एकहत्तर\", \"बहत्तर\", \"त्रिहत्तर\", \"चौहत्तर\", \"पचहत्तर\", \"छयहत्तर\", \"सतहत्तर\", \"अठहत्तर\", \"उनासी\",\n \"असी\", \"एकासी\", \"बयासी\", \"त्रियासी\", \"चौरासी\", \"पचासी\", \"छयासी\", \"सतासी\", \"अठासी\", \"उनान्नब्बे\",\n \"नब्बे\", \"एकानब्बे\", \"बयानब्बे\", \"त्रियानब्बे\", \"चौरानब्बे\", \"पन्चानब्बे\", \"छयानब्बे\", \"सन्तानब्बे\", \"अन्ठानब्बे\", \"उनान्सय\",\n];\n\n/**\n * Amount in words in Nepali (Devanagari), South-Asian scale.\n * `numberToWordsNepali(1234567)` → `\"बाह्र लाख चौँतिस हजार पाँच सय सतसट्ठी\"`.\n */\nexport function numberToWordsNepali(value: number): string {\n let n = Math.floor(Math.abs(value));\n if (n === 0) return NEPALI_0_99[0]!;\n const parts: string[] = [];\n const units: [number, string][] = [\n [1e9, \"अरब\"],\n [1e7, \"करोड\"],\n [1e5, \"लाख\"],\n [1e3, \"हजार\"],\n [1e2, \"सय\"],\n ];\n for (const [size, name] of units) {\n if (n >= size) {\n const count = Math.floor(n / size);\n parts.push(`${NEPALI_0_99[count]} ${name}`);\n n %= size;\n }\n }\n if (n > 0) parts.push(NEPALI_0_99[n]!);\n return (value < 0 ? \"माइनस \" : \"\") + parts.join(\" \");\n}\n\n/** `numberToWordsNepali` plus a \"रुपैयाँ … मात्र\" wrapper for Nepali invoices. */\nexport function amountInWordsNepali(amount: number): string {\n const rupees = Math.floor(Math.abs(amount));\n const paisa = Math.round((Math.abs(amount) - rupees) * 100);\n let out = \"रुपैयाँ \" + numberToWordsNepali(rupees);\n if (paisa > 0) out += \" \" + numberToWordsNepali(paisa) + \" पैसा\";\n return (amount < 0 ? \"माइनस \" : \"\") + out + \" मात्र\";\n}\n\nexport interface Province {\n number: number;\n name: string;\n nameNp: string;\n capital: string;\n}\n\n/** Nepal's seven federal provinces. */\nexport const PROVINCES: readonly Province[] = [\n { number: 1, name: \"Koshi\", nameNp: \"कोशी\", capital: \"Biratnagar\" },\n { number: 2, name: \"Madhesh\", nameNp: \"मधेश\", capital: \"Janakpur\" },\n { number: 3, name: \"Bagmati\", nameNp: \"बागमती\", capital: \"Hetauda\" },\n { number: 4, name: \"Gandaki\", nameNp: \"गण्डकी\", capital: \"Pokhara\" },\n { number: 5, name: \"Lumbini\", nameNp: \"लुम्बिनी\", capital: \"Deukhuri\" },\n { number: 6, name: \"Karnali\", nameNp: \"कर्णाली\", capital: \"Birendranagar\" },\n { number: 7, name: \"Sudurpashchim\", nameNp: \"सुदूरपश्चिम\", capital: \"Godawari\" },\n];\n\nexport interface District {\n name: string;\n nameNp: string;\n /** Province number 1–7. */\n province: number;\n}\n\n/** Nepal's 77 districts, with their province number. */\nexport const DISTRICTS: readonly District[] = [\n // Koshi (1)\n { name: \"Bhojpur\", nameNp: \"भोजपुर\", province: 1 },\n { name: \"Dhankuta\", nameNp: \"धनकुटा\", province: 1 },\n { name: \"Ilam\", nameNp: \"इलाम\", province: 1 },\n { name: \"Jhapa\", nameNp: \"झापा\", province: 1 },\n { name: \"Khotang\", nameNp: \"खोटाङ\", province: 1 },\n { name: \"Morang\", nameNp: \"मोरङ\", province: 1 },\n { name: \"Okhaldhunga\", nameNp: \"ओखलढुंगा\", province: 1 },\n { name: \"Panchthar\", nameNp: \"पाँचथर\", province: 1 },\n { name: \"Sankhuwasabha\", nameNp: \"संखुवासभा\", province: 1 },\n { name: \"Solukhumbu\", nameNp: \"सोलुखुम्बु\", province: 1 },\n { name: \"Sunsari\", nameNp: \"सुनसरी\", province: 1 },\n { name: \"Taplejung\", nameNp: \"ताप्लेजुङ\", province: 1 },\n { name: \"Terhathum\", nameNp: \"तेह्रथुम\", province: 1 },\n { name: \"Udayapur\", nameNp: \"उदयपुर\", province: 1 },\n // Madhesh (2)\n { name: \"Bara\", nameNp: \"बारा\", province: 2 },\n { name: \"Dhanusha\", nameNp: \"धनुषा\", province: 2 },\n { name: \"Mahottari\", nameNp: \"महोत्तरी\", province: 2 },\n { name: \"Parsa\", nameNp: \"पर्सा\", province: 2 },\n { name: \"Rautahat\", nameNp: \"रौतहट\", province: 2 },\n { name: \"Saptari\", nameNp: \"सप्तरी\", province: 2 },\n { name: \"Sarlahi\", nameNp: \"सर्लाही\", province: 2 },\n { name: \"Siraha\", nameNp: \"सिरहा\", province: 2 },\n // Bagmati (3)\n { name: \"Bhaktapur\", nameNp: \"भक्तपुर\", province: 3 },\n { name: \"Chitwan\", nameNp: \"चितवन\", province: 3 },\n { name: \"Dhading\", nameNp: \"धादिङ\", province: 3 },\n { name: \"Dolakha\", nameNp: \"दोलखा\", province: 3 },\n { name: \"Kathmandu\", nameNp: \"काठमाडौं\", province: 3 },\n { name: \"Kavrepalanchok\", nameNp: \"काभ्रेपलाञ्चोक\", province: 3 },\n { name: \"Lalitpur\", nameNp: \"ललितपुर\", province: 3 },\n { name: \"Makwanpur\", nameNp: \"मकवानपुर\", province: 3 },\n { name: \"Nuwakot\", nameNp: \"नुवाकोट\", province: 3 },\n { name: \"Ramechhap\", nameNp: \"रामेछाप\", province: 3 },\n { name: \"Rasuwa\", nameNp: \"रसुवा\", province: 3 },\n { name: \"Sindhuli\", nameNp: \"सिन्धुली\", province: 3 },\n { name: \"Sindhupalchok\", nameNp: \"सिन्धुपाल्चोक\", province: 3 },\n // Gandaki (4)\n { name: \"Baglung\", nameNp: \"बागलुङ\", province: 4 },\n { name: \"Gorkha\", nameNp: \"गोरखा\", province: 4 },\n { name: \"Kaski\", nameNp: \"कास्की\", province: 4 },\n { name: \"Lamjung\", nameNp: \"लमजुङ\", province: 4 },\n { name: \"Manang\", nameNp: \"मनाङ\", province: 4 },\n { name: \"Mustang\", nameNp: \"मुस्ताङ\", province: 4 },\n { name: \"Myagdi\", nameNp: \"म्याग्दी\", province: 4 },\n { name: \"Nawalpur\", nameNp: \"नवलपुर\", province: 4 },\n { name: \"Parbat\", nameNp: \"पर्वत\", province: 4 },\n { name: \"Syangja\", nameNp: \"स्याङ्जा\", province: 4 },\n { name: \"Tanahun\", nameNp: \"तनहुँ\", province: 4 },\n // Lumbini (5)\n { name: \"Arghakhanchi\", nameNp: \"अर्घाखाँची\", province: 5 },\n { name: \"Banke\", nameNp: \"बाँके\", province: 5 },\n { name: \"Bardiya\", nameNp: \"बर्दिया\", province: 5 },\n { name: \"Dang\", nameNp: \"दाङ\", province: 5 },\n { name: \"Eastern Rukum\", nameNp: \"पूर्वी रुकुम\", province: 5 },\n { name: \"Gulmi\", nameNp: \"गुल्मी\", province: 5 },\n { name: \"Kapilvastu\", nameNp: \"कपिलवस्तु\", province: 5 },\n { name: \"Parasi\", nameNp: \"नवलपरासी (पश्चिम)\", province: 5 },\n { name: \"Palpa\", nameNp: \"पाल्पा\", province: 5 },\n { name: \"Pyuthan\", nameNp: \"प्युठान\", province: 5 },\n { name: \"Rolpa\", nameNp: \"रोल्पा\", province: 5 },\n { name: \"Rupandehi\", nameNp: \"रूपन्देही\", province: 5 },\n // Karnali (6)\n { name: \"Dailekh\", nameNp: \"दैलेख\", province: 6 },\n { name: \"Dolpa\", nameNp: \"डोल्पा\", province: 6 },\n { name: \"Humla\", nameNp: \"हुम्ला\", province: 6 },\n { name: \"Jajarkot\", nameNp: \"जाजरकोट\", province: 6 },\n { name: \"Jumla\", nameNp: \"जुम्ला\", province: 6 },\n { name: \"Kalikot\", nameNp: \"कालिकोट\", province: 6 },\n { name: \"Mugu\", nameNp: \"मुगु\", province: 6 },\n { name: \"Salyan\", nameNp: \"सल्यान\", province: 6 },\n { name: \"Surkhet\", nameNp: \"सुर्खेत\", province: 6 },\n { name: \"Western Rukum\", nameNp: \"पश्चिमी रुकुम\", province: 6 },\n // Sudurpashchim (7)\n { name: \"Achham\", nameNp: \"अछाम\", province: 7 },\n { name: \"Baitadi\", nameNp: \"बैतडी\", province: 7 },\n { name: \"Bajhang\", nameNp: \"बझाङ\", province: 7 },\n { name: \"Bajura\", nameNp: \"बाजुरा\", province: 7 },\n { name: \"Dadeldhura\", nameNp: \"डडेल्धुरा\", province: 7 },\n { name: \"Darchula\", nameNp: \"दार्चुला\", province: 7 },\n { name: \"Doti\", nameNp: \"डोटी\", province: 7 },\n { name: \"Kailali\", nameNp: \"कैलाली\", province: 7 },\n { name: \"Kanchanpur\", nameNp: \"कञ्चनपुर\", province: 7 },\n];\n\n/** Districts in a given province (1–7). */\nexport function districtsByProvince(province: number): District[] {\n return DISTRICTS.filter((d) => d.province === province);\n}\n\n/** Find a district by English or Nepali name (case-insensitive). */\nexport function findDistrict(name: string): District | undefined {\n const q = name.trim().toLowerCase();\n return DISTRICTS.find((d) => d.name.toLowerCase() === q || d.nameNp === name.trim());\n}\n"]}
1
+ {"version":3,"sources":["../src/index.ts"],"names":[],"mappings":"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","file":"index.js","sourcesContent":["/**\n * @lacspace/nepali-utils — everyday Nepal helpers: NPR currency formatting,\n * Nepali (South-Asian) digit grouping, Devanagari numerals, amount-in-words,\n * common validators, and province data. Zero-dependency, isomorphic.\n */\n\nconst DEVANAGARI = [\"०\", \"१\", \"२\", \"३\", \"४\", \"५\", \"६\", \"७\", \"८\", \"९\"] as const;\n\n/** Convert Arabic numerals to Devanagari: `\"2081\"` → `\"२०८१\"`. */\nexport function toDevanagari(input: string | number): string {\n return String(input).replace(/[0-9]/g, (d) => DEVANAGARI[Number(d)]!);\n}\n\n/** Convert Devanagari numerals to Arabic: `\"२०८१\"` → `\"2081\"`. */\nexport function fromDevanagari(input: string): string {\n return input.replace(/[०-९]/g, (d) => String(DEVANAGARI.indexOf(d as (typeof DEVANAGARI)[number])));\n}\n\n/**\n * Group an integer with the South-Asian (Nepali) system: the last three digits,\n * then groups of two. `1234567` → `\"12,34,567\"`.\n */\nexport function groupNepali(value: number | string): string {\n const str = String(value).trim();\n const negative = str.startsWith(\"-\");\n const sign = negative ? \"-\" : \"\";\n const s = str.replace(/[^\\d]/g, \"\");\n if (s.length <= 3) return sign + s;\n const last3 = s.slice(-3);\n const rest = s.slice(0, -3);\n return sign + rest.replace(/\\B(?=(\\d{2})+(?!\\d))/g, \",\") + \",\" + last3;\n}\n\nexport interface FormatNprOptions {\n /** Show a symbol/prefix. Default `\"Rs. \"`. Use `\"\"` for none. */\n symbol?: string;\n /** Number of decimal places. Default `2`. */\n decimals?: number;\n /** Render digits in Devanagari. Default `false`. */\n devanagari?: boolean;\n}\n\n/**\n * Format an amount as Nepalese Rupees with South-Asian grouping.\n * `formatNPR(1234567.5)` → `\"Rs. 12,34,567.50\"`.\n */\nexport function formatNPR(amount: number, options: FormatNprOptions = {}): string {\n const { symbol = \"Rs. \", decimals = 2, devanagari = false } = options;\n const negative = amount < 0;\n const fixed = Math.abs(amount).toFixed(decimals);\n const [intPart, decPart] = fixed.split(\".\");\n let out = groupNepali(intPart!);\n if (decPart) out += \".\" + decPart;\n if (devanagari) out = toDevanagari(out);\n return (negative ? \"-\" : \"\") + symbol + out;\n}\n\nconst ONES = [\n \"\", \"One\", \"Two\", \"Three\", \"Four\", \"Five\", \"Six\", \"Seven\", \"Eight\", \"Nine\",\n \"Ten\", \"Eleven\", \"Twelve\", \"Thirteen\", \"Fourteen\", \"Fifteen\", \"Sixteen\",\n \"Seventeen\", \"Eighteen\", \"Nineteen\",\n];\nconst TENS = [\"\", \"\", \"Twenty\", \"Thirty\", \"Forty\", \"Fifty\", \"Sixty\", \"Seventy\", \"Eighty\", \"Ninety\"];\n\nfunction twoDigitWords(n: number): string {\n if (n < 20) return ONES[n]!;\n const t = Math.floor(n / 10);\n const o = n % 10;\n return TENS[t]! + (o ? \" \" + ONES[o] : \"\");\n}\n\n/**\n * Amount in words using the South-Asian system (Thousand, Lakh, Crore, Arab) —\n * perfect for invoices. `numberToWords(1234567)` →\n * `\"Twelve Lakh Thirty Four Thousand Five Hundred Sixty Seven\"`.\n */\nexport function numberToWords(value: number): string {\n let n = Math.floor(Math.abs(value));\n if (n === 0) return \"Zero\";\n const parts: string[] = [];\n const units: [number, string][] = [\n [1e9, \"Arab\"],\n [1e7, \"Crore\"],\n [1e5, \"Lakh\"],\n [1e3, \"Thousand\"],\n [1e2, \"Hundred\"],\n ];\n for (const [size, name] of units) {\n if (n >= size) {\n const count = Math.floor(n / size);\n // Hundreds are 1–9; middle units take two digits; the top (Arab) unit can\n // itself run into the hundreds/thousands, so render its count recursively.\n const words = size === 100 ? ONES[count]! : count >= 100 ? numberToWords(count) : twoDigitWords(count);\n parts.push(words + \" \" + name);\n n %= size;\n }\n }\n if (n > 0) parts.push(twoDigitWords(n));\n return (value < 0 ? \"Minus \" : \"\") + parts.join(\" \");\n}\n\n/** `numberToWords` plus a \"Rupees … only\" wrapper for invoices. */\nexport function amountInWords(amount: number): string {\n let rupees = Math.floor(Math.abs(amount));\n let paisa = Math.round((Math.abs(amount) - rupees) * 100);\n if (paisa === 100) { rupees += 1; paisa = 0; }\n let out = \"Rupees \" + numberToWords(rupees);\n if (paisa > 0) out += \" and \" + numberToWords(paisa) + \" Paisa\";\n return (amount < 0 ? \"Minus \" : \"\") + out + \" Only\";\n}\n\n/** Parse a formatted NPR/Nepali-grouped string back to a number (inverse of {@link formatNPR}). */\nexport function ungroupNepali(input: string | number): number {\n let s = fromDevanagari(String(input)).trim();\n const negative = s.startsWith(\"-\");\n s = s.replace(/₹|rs\\.?|npr|रू\\.?|रु\\.?/gi, \"\"); // strip currency symbols (incl. the dot in \"Rs.\")\n s = s.replace(/[^\\d.]/g, \"\"); // drop grouping commas, spaces, everything else\n if (s === \"\") return NaN;\n const num = Number(s);\n return negative && !Number.isNaN(num) ? -num : num;\n}\n\n/** Alias of {@link ungroupNepali} — parse an NPR string to a number. */\nexport const parseNPR = ungroupNepali;\n\nfunction trimNum(n: number): string {\n return Number(n.toFixed(2)).toString();\n}\n\nexport interface CompactNprOptions {\n symbol?: string;\n /** Use Nepali scale words (हजार/लाख/करोड/अरब). Default false (K/Lakh/Cr/Arab). */\n nepali?: boolean;\n /** Render digits in Devanagari. Default false. */\n devanagari?: boolean;\n}\n\n/** Compact NPR: `formatCompactNPR(1234567)` → `\"Rs. 12.35 Lakh\"`. */\nexport function formatCompactNPR(amount: number, options: CompactNprOptions = {}): string {\n const { symbol = \"Rs. \", nepali = false, devanagari = false } = options;\n const negative = amount < 0;\n const a = Math.abs(amount);\n const units: [number, string, string][] = [\n [1e9, \"Arab\", \"अरब\"],\n [1e7, \"Cr\", \"करोड\"],\n [1e5, \"Lakh\", \"लाख\"],\n [1e3, \"K\", \"हजार\"],\n ];\n let out: string;\n const u = units.find(([size]) => a >= size);\n if (u) out = `${trimNum(a / u[0])} ${nepali ? u[2] : u[1]}`;\n else out = trimNum(a);\n if (devanagari) out = toDevanagari(out);\n return (negative ? \"-\" : \"\") + symbol + out;\n}\n\n/* ------------------------------ land-area units ------------------------------ */\n\nexport type LandUnit = \"ropani\" | \"aana\" | \"paisa\" | \"daam\" | \"bigha\" | \"kattha\" | \"dhur\" | \"sqm\" | \"sqft\";\n\n/** Area of one unit in square metres (hilly = ropani system, terai = bigha system). */\nexport const LAND_UNIT_SQM: Record<LandUnit, number> = {\n ropani: 508.7369, // 5476 sq ft\n aana: 31.79606, // ropani / 16\n paisa: 7.949014, // ropani / 64\n daam: 1.987254, // ropani / 256\n bigha: 6772.631, // 72900 sq ft\n kattha: 338.6315, // bigha / 20\n dhur: 16.93158, // bigha / 400\n sqm: 1,\n sqft: 0.09290304,\n};\n\n/** Total square metres from a mixed measure, e.g. `{ ropani: 2, aana: 3 }` or `{ bigha: 1, kattha: 5 }`. */\nexport function landToSqMeters(measure: Partial<Record<LandUnit, number>>): number {\n let m2 = 0;\n for (const [unit, value] of Object.entries(measure)) m2 += (value ?? 0) * LAND_UNIT_SQM[unit as LandUnit];\n return m2;\n}\n\n/** Convert an area between any two land units. */\nexport function convertLand(value: number, from: LandUnit, to: LandUnit): number {\n return (value * LAND_UNIT_SQM[from]) / LAND_UNIT_SQM[to];\n}\n\n/** Break square metres into the hilly system: `{ ropani, aana, paisa, daam }`. */\nexport function sqMetersToRopani(m2: number): { ropani: number; aana: number; paisa: number; daam: number } {\n let rem = m2;\n const ropani = Math.floor(rem / LAND_UNIT_SQM.ropani);\n rem -= ropani * LAND_UNIT_SQM.ropani;\n const aana = Math.floor(rem / LAND_UNIT_SQM.aana);\n rem -= aana * LAND_UNIT_SQM.aana;\n const paisa = Math.floor(rem / LAND_UNIT_SQM.paisa);\n rem -= paisa * LAND_UNIT_SQM.paisa;\n const daam = Math.round(rem / LAND_UNIT_SQM.daam);\n return carryRopani({ ropani, aana, paisa, daam });\n}\n\nfunction carryRopani(r: { ropani: number; aana: number; paisa: number; daam: number }) {\n if (r.daam >= 4) { r.paisa += Math.floor(r.daam / 4); r.daam %= 4; }\n if (r.paisa >= 4) { r.aana += Math.floor(r.paisa / 4); r.paisa %= 4; }\n if (r.aana >= 16) { r.ropani += Math.floor(r.aana / 16); r.aana %= 16; }\n return r;\n}\n\n/** Break square metres into the terai system: `{ bigha, kattha, dhur }`. */\nexport function sqMetersToBigha(m2: number): { bigha: number; kattha: number; dhur: number } {\n let rem = m2;\n const bigha = Math.floor(rem / LAND_UNIT_SQM.bigha);\n rem -= bigha * LAND_UNIT_SQM.bigha;\n const kattha = Math.floor(rem / LAND_UNIT_SQM.kattha);\n rem -= kattha * LAND_UNIT_SQM.kattha;\n const dhur = Math.round(rem / LAND_UNIT_SQM.dhur);\n if (dhur >= 20) return { bigha: bigha + Math.floor(dhur / 20), kattha, dhur: dhur % 20 };\n if (kattha >= 20) return { bigha: bigha + Math.floor(kattha / 20), kattha: kattha % 20, dhur };\n return { bigha, kattha, dhur };\n}\n\n/** `\"2-3-1-0\"` ropani-aana-paisa-daam from square metres. */\nexport function formatRopani(m2: number): string {\n const r = sqMetersToRopani(m2);\n return `${r.ropani}-${r.aana}-${r.paisa}-${r.daam}`;\n}\n\n/** `\"1-5-0\"` bigha-kattha-dhur from square metres. */\nexport function formatBigha(m2: number): string {\n const b = sqMetersToBigha(m2);\n return `${b.bigha}-${b.kattha}-${b.dhur}`;\n}\n\n/* ------------------------------ phone & validators ------------------------------ */\n\n/** Normalize a Nepali mobile to canonical `+9779XXXXXXXXX`, or null if invalid. */\nexport function normalizeMobile(input: string): string | null {\n const s = fromDevanagari(input).replace(/[\\s-]/g, \"\").replace(/^\\+?977/, \"\");\n return /^9[678]\\d{8}$/.test(s) ? `+977${s}` : null;\n}\n\nexport type Carrier = \"Ntc\" | \"Ncell\" | \"Smart Cell\" | \"UTL\" | \"unknown\";\n\n/** Detect the carrier of a Nepali mobile number. */\nexport function getCarrier(input: string): Carrier {\n const n = normalizeMobile(input);\n if (!n) return \"unknown\";\n const p = n.slice(4, 7); // three digits after +977\n if ([\"984\", \"985\", \"986\", \"974\", \"975\", \"976\"].includes(p)) return \"Ntc\";\n if ([\"980\", \"981\", \"982\"].includes(p)) return \"Ncell\";\n if ([\"961\", \"962\", \"988\"].includes(p)) return \"Smart Cell\";\n if (p === \"972\") return \"UTL\";\n return \"unknown\";\n}\n\n/** True for a valid Nepali mobile number (10 digits starting 96–98, optional +977). */\nexport function isValidNepaliMobile(input: string): boolean {\n const s = fromDevanagari(input).replace(/[\\s-]/g, \"\");\n return /^(\\+?977)?9[678]\\d{8}$/.test(s);\n}\n\n/** True for a plausible Nepal landline (area code + number, e.g. 01-4XXXXXX). */\nexport function isValidLandline(input: string): boolean {\n const s = input.replace(/[\\s-]/g, \"\");\n return /^0\\d{7,9}$/.test(s);\n}\n\n/** True for a valid Nepal PAN / VAT number (9 digits). */\nexport function isValidPAN(input: string): boolean {\n return /^\\d{9}$/.test(input.trim());\n}\n\n/** True for a valid Nepal VAT number (9 digits — same format as PAN). */\nexport const isValidVAT = isValidPAN;\n\n/* ------------------------------ Nepali amount in words ------------------------------ */\n\nconst NEPALI_0_99 = [\n \"शून्य\", \"एक\", \"दुई\", \"तीन\", \"चार\", \"पाँच\", \"छ\", \"सात\", \"आठ\", \"नौ\",\n \"दस\", \"एघार\", \"बाह्र\", \"तेह्र\", \"चौध\", \"पन्ध्र\", \"सोह्र\", \"सत्र\", \"अठार\", \"उन्नाइस\",\n \"बीस\", \"एक्काइस\", \"बाइस\", \"तेइस\", \"चौबिस\", \"पच्चिस\", \"छब्बिस\", \"सत्ताइस\", \"अठ्ठाइस\", \"उनन्तिस\",\n \"तिस\", \"एकतिस\", \"बत्तिस\", \"तेत्तिस\", \"चौँतिस\", \"पैँतिस\", \"छत्तिस\", \"सैँतिस\", \"अठतिस\", \"उनन्चालिस\",\n \"चालिस\", \"एकचालिस\", \"बयालिस\", \"त्रिचालिस\", \"चवालिस\", \"पैँतालिस\", \"छयालिस\", \"सतचालिस\", \"अठचालिस\", \"उनन्चास\",\n \"पचास\", \"एकाउन्न\", \"बाउन्न\", \"त्रिपन्न\", \"चवन्न\", \"पचपन्न\", \"छपन्न\", \"सन्ताउन्न\", \"अन्ठाउन्न\", \"उनन्साठी\",\n \"साठी\", \"एकसट्ठी\", \"बयसट्ठी\", \"त्रिसट्ठी\", \"चौंसट्ठी\", \"पैंसट्ठी\", \"छयसट्ठी\", \"सतसट्ठी\", \"अठसट्ठी\", \"उनन्सत्तरी\",\n \"सत्तरी\", \"एकहत्तर\", \"बहत्तर\", \"त्रिहत्तर\", \"चौहत्तर\", \"पचहत्तर\", \"छयहत्तर\", \"सतहत्तर\", \"अठहत्तर\", \"उनासी\",\n \"असी\", \"एकासी\", \"बयासी\", \"त्रियासी\", \"चौरासी\", \"पचासी\", \"छयासी\", \"सतासी\", \"अठासी\", \"उनान्नब्बे\",\n \"नब्बे\", \"एकानब्बे\", \"बयानब्बे\", \"त्रियानब्बे\", \"चौरानब्बे\", \"पन्चानब्बे\", \"छयानब्बे\", \"सन्तानब्बे\", \"अन्ठानब्बे\", \"उनान्सय\",\n];\n\n/**\n * Amount in words in Nepali (Devanagari), South-Asian scale.\n * `numberToWordsNepali(1234567)` → `\"बाह्र लाख चौँतिस हजार पाँच सय सतसट्ठी\"`.\n */\nexport function numberToWordsNepali(value: number): string {\n let n = Math.floor(Math.abs(value));\n if (n === 0) return NEPALI_0_99[0]!;\n const parts: string[] = [];\n const units: [number, string][] = [\n [1e9, \"अरब\"],\n [1e7, \"करोड\"],\n [1e5, \"लाख\"],\n [1e3, \"हजार\"],\n [1e2, \"सय\"],\n ];\n for (const [size, name] of units) {\n if (n >= size) {\n const count = Math.floor(n / size);\n // NEPALI_0_99 only covers 0–99; the top (अरब) unit can exceed that, so\n // render its count recursively.\n const words = count >= 100 ? numberToWordsNepali(count) : NEPALI_0_99[count]!;\n parts.push(`${words} ${name}`);\n n %= size;\n }\n }\n if (n > 0) parts.push(NEPALI_0_99[n]!);\n return (value < 0 ? \"माइनस \" : \"\") + parts.join(\" \");\n}\n\n/** `numberToWordsNepali` plus a \"रुपैयाँ … मात्र\" wrapper for Nepali invoices. */\nexport function amountInWordsNepali(amount: number): string {\n let rupees = Math.floor(Math.abs(amount));\n let paisa = Math.round((Math.abs(amount) - rupees) * 100);\n if (paisa === 100) { rupees += 1; paisa = 0; }\n let out = \"रुपैयाँ \" + numberToWordsNepali(rupees);\n if (paisa > 0) out += \" \" + numberToWordsNepali(paisa) + \" पैसा\";\n return (amount < 0 ? \"माइनस \" : \"\") + out + \" मात्र\";\n}\n\nexport interface Province {\n number: number;\n name: string;\n nameNp: string;\n capital: string;\n}\n\n/** Nepal's seven federal provinces. */\nexport const PROVINCES: readonly Province[] = [\n { number: 1, name: \"Koshi\", nameNp: \"कोशी\", capital: \"Biratnagar\" },\n { number: 2, name: \"Madhesh\", nameNp: \"मधेश\", capital: \"Janakpur\" },\n { number: 3, name: \"Bagmati\", nameNp: \"बागमती\", capital: \"Hetauda\" },\n { number: 4, name: \"Gandaki\", nameNp: \"गण्डकी\", capital: \"Pokhara\" },\n { number: 5, name: \"Lumbini\", nameNp: \"लुम्बिनी\", capital: \"Deukhuri\" },\n { number: 6, name: \"Karnali\", nameNp: \"कर्णाली\", capital: \"Birendranagar\" },\n { number: 7, name: \"Sudurpashchim\", nameNp: \"सुदूरपश्चिम\", capital: \"Godawari\" },\n];\n\nexport interface District {\n name: string;\n nameNp: string;\n /** Province number 1–7. */\n province: number;\n}\n\n/** Nepal's 77 districts, with their province number. */\nexport const DISTRICTS: readonly District[] = [\n // Koshi (1)\n { name: \"Bhojpur\", nameNp: \"भोजपुर\", province: 1 },\n { name: \"Dhankuta\", nameNp: \"धनकुटा\", province: 1 },\n { name: \"Ilam\", nameNp: \"इलाम\", province: 1 },\n { name: \"Jhapa\", nameNp: \"झापा\", province: 1 },\n { name: \"Khotang\", nameNp: \"खोटाङ\", province: 1 },\n { name: \"Morang\", nameNp: \"मोरङ\", province: 1 },\n { name: \"Okhaldhunga\", nameNp: \"ओखलढुंगा\", province: 1 },\n { name: \"Panchthar\", nameNp: \"पाँचथर\", province: 1 },\n { name: \"Sankhuwasabha\", nameNp: \"संखुवासभा\", province: 1 },\n { name: \"Solukhumbu\", nameNp: \"सोलुखुम्बु\", province: 1 },\n { name: \"Sunsari\", nameNp: \"सुनसरी\", province: 1 },\n { name: \"Taplejung\", nameNp: \"ताप्लेजुङ\", province: 1 },\n { name: \"Terhathum\", nameNp: \"तेह्रथुम\", province: 1 },\n { name: \"Udayapur\", nameNp: \"उदयपुर\", province: 1 },\n // Madhesh (2)\n { name: \"Bara\", nameNp: \"बारा\", province: 2 },\n { name: \"Dhanusha\", nameNp: \"धनुषा\", province: 2 },\n { name: \"Mahottari\", nameNp: \"महोत्तरी\", province: 2 },\n { name: \"Parsa\", nameNp: \"पर्सा\", province: 2 },\n { name: \"Rautahat\", nameNp: \"रौतहट\", province: 2 },\n { name: \"Saptari\", nameNp: \"सप्तरी\", province: 2 },\n { name: \"Sarlahi\", nameNp: \"सर्लाही\", province: 2 },\n { name: \"Siraha\", nameNp: \"सिरहा\", province: 2 },\n // Bagmati (3)\n { name: \"Bhaktapur\", nameNp: \"भक्तपुर\", province: 3 },\n { name: \"Chitwan\", nameNp: \"चितवन\", province: 3 },\n { name: \"Dhading\", nameNp: \"धादिङ\", province: 3 },\n { name: \"Dolakha\", nameNp: \"दोलखा\", province: 3 },\n { name: \"Kathmandu\", nameNp: \"काठमाडौं\", province: 3 },\n { name: \"Kavrepalanchok\", nameNp: \"काभ्रेपलाञ्चोक\", province: 3 },\n { name: \"Lalitpur\", nameNp: \"ललितपुर\", province: 3 },\n { name: \"Makwanpur\", nameNp: \"मकवानपुर\", province: 3 },\n { name: \"Nuwakot\", nameNp: \"नुवाकोट\", province: 3 },\n { name: \"Ramechhap\", nameNp: \"रामेछाप\", province: 3 },\n { name: \"Rasuwa\", nameNp: \"रसुवा\", province: 3 },\n { name: \"Sindhuli\", nameNp: \"सिन्धुली\", province: 3 },\n { name: \"Sindhupalchok\", nameNp: \"सिन्धुपाल्चोक\", province: 3 },\n // Gandaki (4)\n { name: \"Baglung\", nameNp: \"बागलुङ\", province: 4 },\n { name: \"Gorkha\", nameNp: \"गोरखा\", province: 4 },\n { name: \"Kaski\", nameNp: \"कास्की\", province: 4 },\n { name: \"Lamjung\", nameNp: \"लमजुङ\", province: 4 },\n { name: \"Manang\", nameNp: \"मनाङ\", province: 4 },\n { name: \"Mustang\", nameNp: \"मुस्ताङ\", province: 4 },\n { name: \"Myagdi\", nameNp: \"म्याग्दी\", province: 4 },\n { name: \"Nawalpur\", nameNp: \"नवलपुर\", province: 4 },\n { name: \"Parbat\", nameNp: \"पर्वत\", province: 4 },\n { name: \"Syangja\", nameNp: \"स्याङ्जा\", province: 4 },\n { name: \"Tanahun\", nameNp: \"तनहुँ\", province: 4 },\n // Lumbini (5)\n { name: \"Arghakhanchi\", nameNp: \"अर्घाखाँची\", province: 5 },\n { name: \"Banke\", nameNp: \"बाँके\", province: 5 },\n { name: \"Bardiya\", nameNp: \"बर्दिया\", province: 5 },\n { name: \"Dang\", nameNp: \"दाङ\", province: 5 },\n { name: \"Eastern Rukum\", nameNp: \"पूर्वी रुकुम\", province: 5 },\n { name: \"Gulmi\", nameNp: \"गुल्मी\", province: 5 },\n { name: \"Kapilvastu\", nameNp: \"कपिलवस्तु\", province: 5 },\n { name: \"Parasi\", nameNp: \"नवलपरासी (पश्चिम)\", province: 5 },\n { name: \"Palpa\", nameNp: \"पाल्पा\", province: 5 },\n { name: \"Pyuthan\", nameNp: \"प्युठान\", province: 5 },\n { name: \"Rolpa\", nameNp: \"रोल्पा\", province: 5 },\n { name: \"Rupandehi\", nameNp: \"रूपन्देही\", province: 5 },\n // Karnali (6)\n { name: \"Dailekh\", nameNp: \"दैलेख\", province: 6 },\n { name: \"Dolpa\", nameNp: \"डोल्पा\", province: 6 },\n { name: \"Humla\", nameNp: \"हुम्ला\", province: 6 },\n { name: \"Jajarkot\", nameNp: \"जाजरकोट\", province: 6 },\n { name: \"Jumla\", nameNp: \"जुम्ला\", province: 6 },\n { name: \"Kalikot\", nameNp: \"कालिकोट\", province: 6 },\n { name: \"Mugu\", nameNp: \"मुगु\", province: 6 },\n { name: \"Salyan\", nameNp: \"सल्यान\", province: 6 },\n { name: \"Surkhet\", nameNp: \"सुर्खेत\", province: 6 },\n { name: \"Western Rukum\", nameNp: \"पश्चिमी रुकुम\", province: 6 },\n // Sudurpashchim (7)\n { name: \"Achham\", nameNp: \"अछाम\", province: 7 },\n { name: \"Baitadi\", nameNp: \"बैतडी\", province: 7 },\n { name: \"Bajhang\", nameNp: \"बझाङ\", province: 7 },\n { name: \"Bajura\", nameNp: \"बाजुरा\", province: 7 },\n { name: \"Dadeldhura\", nameNp: \"डडेल्धुरा\", province: 7 },\n { name: \"Darchula\", nameNp: \"दार्चुला\", province: 7 },\n { name: \"Doti\", nameNp: \"डोटी\", province: 7 },\n { name: \"Kailali\", nameNp: \"कैलाली\", province: 7 },\n { name: \"Kanchanpur\", nameNp: \"कञ्चनपुर\", province: 7 },\n];\n\n/** Districts in a given province (1–7). */\nexport function districtsByProvince(province: number): District[] {\n return DISTRICTS.filter((d) => d.province === province);\n}\n\n/** Find a district by English or Nepali name (case-insensitive). */\nexport function findDistrict(name: string): District | undefined {\n const q = name.trim().toLowerCase();\n return DISTRICTS.find((d) => d.name.toLowerCase() === q || d.nameNp === name.trim());\n}\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lacspace/nepali-utils",
3
- "version": "1.1.1",
3
+ "version": "1.1.2",
4
4
  "description": "Everyday Nepal helpers — NPR currency formatting, Devanagari numerals, amount-in-words, validators, provinces. Zero-dependency.",
5
5
  "type": "module",
6
6
  "main": "./dist/index.cjs",