@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
JavaScript
;
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;