india-pincode-finder
Version:
Find detailed Indian address information by using a valid 6-digit PIN code. Ideal for logistics, address validation, fintech onboarding (KYC), e-commerce, and mapping services.
1 lines • 4.79 kB
Source Map (JSON)
{"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"}