{"version":3,"file":"index.mjs","sources":["../src/index.ts"],"sourcesContent":["import * as fs from 'fs';\nimport * as path from 'path';\nimport { fileURLToPath } from 'url';\n\n// Get __dirname equivalent for ES modules\nconst __filename = fileURLToPath(import.meta.url);\nconst __dirname = path.dirname(__filename);\n\n// Type definitions\nexport interface PincodeData {\n  district: string;\n  block: string;\n  state: string;\n  [key: string]: string;\n}\n\n// In-memory cache for frequently accessed data\nlet pincodeCache: { [key: string]: PincodeData } = {};\nlet cacheLoaded = false;\n\n/**\n * Loads pincode data with in-memory caching\n * @param jsonPath Optional path to a custom JSON file\n */\nexport function loadPincodeData(jsonPath?: string): { [key: string]: PincodeData } {\n  // Return in-memory cache if available\n  if (cacheLoaded && Object.keys(pincodeCache).length > 0) {\n    return pincodeCache;\n  }\n\n  const dataPath = jsonPath || path.join(__dirname, '..', 'data', 'pincode.json');\n  \n  try {\n    // Load and parse fresh data\n    const rawData = fs.readFileSync(dataPath, 'utf8');\n    pincodeCache = JSON.parse(rawData);\n    cacheLoaded = true;\n\n    return pincodeCache;\n  } catch (error) {\n    console.error(`Error loading pincode data: ${error}`);\n    return {};\n  }\n}\n\n/**\n * Clear all cached data\n */\nexport function clearCache(): void {\n  pincodeCache = {};\n  cacheLoaded = false;\n}\n\n/**\n * Get full address details for a pincode\n * @param pincode 6-digit PIN code\n * @returns Address object or null if not found\n * @throws Error if the pincode is not a valid 6-digit number.\n */\nexport function pinToAddress(pincode: number): PincodeData | null {\n  if (typeof pincode !== 'number' || !/^[0-9]{6}$/.test(pincode.toString())) {\n    throw new Error('Pincode must be a 6-digit number.');\n  }\n  const data = loadPincodeData();\n  return data[pincode.toString()] || null;\n}\n\n/**\n * Get state for a pincode\n * @param pincode 6-digit PIN code\n * @returns State name or null if not found\n * @throws Error if the pincode is not a valid 6-digit number.\n */\nexport function pinToState(pincode: number): string | null {\n  if (typeof pincode !== 'number' || !/^[0-9]{6}$/.test(pincode.toString())) {\n    throw new Error('Pincode must be a 6-digit number.');\n  }\n  const data = pinToAddress(pincode);\n  return data?.state || null;\n}\n\n/**\n * Get district for a pincode\n * @param pincode 6-digit PIN code\n * @returns District name or null if not found\n * @throws Error if the pincode is not a valid 6-digit number.\n */\nexport function pinToDistrict(pincode: number): string | null {\n  if (typeof pincode !== 'number' || !/^[0-9]{6}$/.test(pincode.toString())) {\n    throw new Error('Pincode must be a 6-digit number.');\n  }\n  const data = pinToAddress(pincode);\n  return data?.district || null;\n}\n\n/**\n * Get taluka/block for a pincode\n * @param pincode 6-digit PIN code\n * @returns Taluka/Block name or null if not found\n * @throws Error if the pincode is not a valid 6-digit number.\n */\nexport function pinToTaluka(pincode: number): string | null {\n  if (typeof pincode !== 'number' || !/^[0-9]{6}$/.test(pincode.toString())) {\n    throw new Error('Pincode must be a 6-digit number.');\n  }\n  const data = pinToAddress(pincode);\n  return data?.block || null;\n}\n\n// Auto-load pincode data when module is imported\nloadPincodeData();"],"names":["__filename","fileURLToPath","url","__dirname","path","dirname","pincodeCache","cacheLoaded","loadPincodeData","jsonPath","Object","keys","length","dataPath","join","rawData","fs","readFileSync","JSON","parse","error","console","clearCache","pinToAddress","pincode","test","toString","Error","pinToState","data","state","pinToDistrict","district","pinToTaluka","block"],"mappings":"gFAKA,MAAMA,EAAaC,cAA0BC,KACvCC,EAAYC,EAAKC,QAAQL,GAW/B,IAAIM,EAA+C,CAAA,EAC/CC,GAAc,EAMZ,SAAUC,EAAgBC,GAE9B,GAAIF,GAAeG,OAAOC,KAAKL,GAAcM,OAAS,EACpD,OAAON,EAGT,MAAMO,EAAWJ,GAAYL,EAAKU,KAAKX,EAAW,KAAM,OAAQ,gBAEhE,IAEE,MAAMY,EAAUC,EAAGC,aAAaJ,EAAU,QAI1C,OAHAP,EAAeY,KAAKC,MAAMJ,GAC1BR,GAAc,EAEPD,EACP,MAAOc,GAEP,OADAC,QAAQD,MAAM,+BAA+BA,KACtC,CAAA,EAEX,UAKgBE,IACdhB,EAAe,CAAA,EACfC,GAAc,CAChB,CAQM,SAAUgB,EAAaC,GAC3B,GAAuB,iBAAZA,IAAyB,aAAaC,KAAKD,EAAQE,YAC5D,MAAM,IAAIC,MAAM,qCAGlB,OADanB,IACDgB,EAAQE,aAAe,IACrC,CAQM,SAAUE,EAAWJ,GACzB,GAAuB,iBAAZA,IAAyB,aAAaC,KAAKD,EAAQE,YAC5D,MAAM,IAAIC,MAAM,qCAElB,MAAME,EAAON,EAAaC,GAC1B,OAAOK,aAAI,EAAJA,EAAMC,QAAS,IACxB,CAQM,SAAUC,EAAcP,GAC5B,GAAuB,iBAAZA,IAAyB,aAAaC,KAAKD,EAAQE,YAC5D,MAAM,IAAIC,MAAM,qCAElB,MAAME,EAAON,EAAaC,GAC1B,OAAOK,aAAI,EAAJA,EAAMG,WAAY,IAC3B,CAQM,SAAUC,EAAYT,GAC1B,GAAuB,iBAAZA,IAAyB,aAAaC,KAAKD,EAAQE,YAC5D,MAAM,IAAIC,MAAM,qCAElB,MAAME,EAAON,EAAaC,GAC1B,OAAOK,aAAI,EAAJA,EAAMK,QAAS,IACxB,CAGA1B"}