UNPKG

@bangladeshi/bangladesh-address

Version:

A simple npm package for Bangladesh's administrative divisions, districts, upazilas, and metropolitan thanas.

48 lines (47 loc) 1.88 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.getDivision = exports.divisionalDataOf = exports.isValidDivision = exports.allDivision = void 0; const bd_upazila_json_1 = __importDefault(require("../json/bd-upazila.json")); const division_1 = require("./division"); Object.defineProperty(exports, "getDivision", { enumerable: true, get: function () { return division_1.getDivision; } }); const division_name_1 = require("./types/division-name"); // Pre-computed set for O(1) division validation const divisionNameSet = new Set(Object.values(division_name_1.DivisionName).map((d) => d.toLowerCase())); /** * Get all division names * @returns Array of all division names in Bangladesh */ const allDivision = () => { const divisions = new Set(); bd_upazila_json_1.default.forEach((item) => divisions.add(item.division)); return Array.from(divisions); }; exports.allDivision = allDivision; /** * Check if a name is a valid division * @param name - The name to check * @returns true if the name is a valid division, false otherwise */ const isValidDivision = (name) => { if (!name || typeof name !== "string") { return false; } return divisionNameSet.has(name.trim().toLowerCase()); }; exports.isValidDivision = isValidDivision; /** * Get all districts and upazilas for a given division * @param division - The division name * @returns Array of objects containing district and upazila names */ const divisionalDataOf = (division) => { const filteredDivision = (0, division_1.getDivision)(division); return filteredDivision.map((item) => ({ district: item.district, upazila: item.upazila, })); }; exports.divisionalDataOf = divisionalDataOf;