rwanda-geo
Version:
Complete, typed, and lightweight dataset of Rwanda's administrative divisions - 5 provinces, 30 districts, 416 sectors, 2,148 cells, and 14,837 villages. Server-side only package for Node.js, Next.js, and backend applications.
862 lines (851 loc) • 27.8 kB
JavaScript
;
Object.defineProperty(exports, '__esModule', { value: true });
var zlib = require('zlib');
var fs = require('fs');
var path = require('path');
var url = require('url');
var _documentCurrentScript = typeof document !== 'undefined' ? document.currentScript : null;
var __defProp = Object.defineProperty;
var __require = /* @__PURE__ */ ((x) => typeof require !== "undefined" ? require : typeof Proxy !== "undefined" ? new Proxy(x, {
get: (a, b) => (typeof require !== "undefined" ? require : a)[b]
}) : x)(function(x) {
if (typeof require !== "undefined") return require.apply(this, arguments);
throw Error('Dynamic require of "' + x + '" is not supported');
});
var __glob = (map) => (path) => {
var fn = map[path];
if (fn) return fn();
throw new Error("Module not found in bundle: " + path);
};
var __export = (target, all) => {
for (var name in all)
__defProp(target, name, { get: all[name], enumerable: true });
};
// src/types.ts
var types_exports = {};
__export(types_exports, {
AdminLevel: () => AdminLevel
});
var AdminLevel = /* @__PURE__ */ ((AdminLevel2) => {
AdminLevel2["PROVINCE"] = "province";
AdminLevel2["DISTRICT"] = "district";
AdminLevel2["SECTOR"] = "sector";
AdminLevel2["CELL"] = "cell";
AdminLevel2["VILLAGE"] = "village";
return AdminLevel2;
})(AdminLevel || {});
// src/helpers.ts
var helpers_exports = {};
__export(helpers_exports, {
clearDataCache: () => clearDataCache,
fuzzySearchByName: () => fuzzySearchByName,
getAllCells: () => getAllCells,
getAllDescendants: () => getAllDescendants,
getAllDistricts: () => getAllDistricts,
getAllProvinces: () => getAllProvinces,
getAllSectors: () => getAllSectors,
getAllVillages: () => getAllVillages,
getAvailableData: () => getAvailableData,
getByCode: () => getByCode,
getByLevel: () => getByLevel,
getCacheStats: () => getCacheStats,
getCellsBySector: () => getCellsBySector,
getChildren: () => getChildren,
getCodeLevel: () => getCodeLevel,
getCounts: () => getCounts,
getDirectChildren: () => getDirectChildren,
getDistrictsByProvince: () => getDistrictsByProvince,
getFullHierarchy: () => getFullHierarchy,
getHierarchy: () => getHierarchy,
getSectorsByDistrict: () => getSectorsByDistrict,
getSiblings: () => getSiblings,
getSuggestions: () => getSuggestions,
getSummary: () => getSummary,
getVillagesByCell: () => getVillagesByCell,
isValidCode: () => isValidCode,
preloadData: () => preloadData,
searchByName: () => searchByName,
searchByPartialCode: () => searchByPartialCode,
searchBySlug: () => searchBySlug,
validateCodeFormat: () => validateCodeFormat,
validateHierarchyIntegrity: () => validateHierarchyIntegrity,
validateParentChildRelationship: () => validateParentChildRelationship,
validateUnitProperties: () => validateUnitProperties
});
// require("../data-embedded/**/*.js") in src/utils/modern-loader.ts
var globRequire_data_embedded_js = __glob({
"../data-embedded/cells.js": () => __require("./cells-4NHYTI5Y.js"),
"../data-embedded/districts.js": () => __require("./districts-34ZRBVRA.js"),
"../data-embedded/provinces.js": () => __require("./provinces-Q5623OUW.js"),
"../data-embedded/sectors.js": () => __require("./sectors-WZGCUJRQ.js"),
"../data-embedded/villages.js": () => __require("./villages-DTZJ6K5C.js")
});
// src/utils/modern-loader.ts
var dataCache = /* @__PURE__ */ new Map();
function decompressBuffer(buffer) {
try {
return zlib.brotliDecompressSync(buffer).toString("utf8");
} catch {
return zlib.gunzipSync(buffer).toString("utf8");
}
}
function loadEmbeddedData(filename) {
if (dataCache.has(filename)) {
return dataCache.get(filename);
}
let data;
try {
const dataModule = globRequire_data_embedded_js(`../data-embedded/${filename}.js`);
const base64Data = dataModule.default || dataModule;
const buffer = Buffer.from(base64Data, "base64");
const decompressed = decompressBuffer(buffer);
data = JSON.parse(decompressed);
dataCache.set(filename, data);
return data;
} catch {
console.warn(`Embedded data not available for ${filename}, falling back to file system loader`);
return loadLegacyData(filename);
}
}
function loadLegacyData(filename) {
try {
const { readFileSync: readFileSync3, existsSync: existsSync3 } = __require("fs");
const { join: join3, dirname: dirname3 } = __require("path");
let packageRoot;
try {
const packageJsonPath = __require.resolve("rwanda-geo/package.json");
packageRoot = dirname3(packageJsonPath);
} catch {
const currentDir = __dirname;
const srcIndex = currentDir.indexOf("/src/");
packageRoot = srcIndex !== -1 ? currentDir.substring(0, srcIndex) : process.cwd();
}
const paths = [
join3(packageRoot, "dist/data", `${filename}.json.gz`),
join3(packageRoot, "src/data", `${filename}.json.gz`),
join3(packageRoot, "dist/data", `${filename}.json`),
join3(packageRoot, "src/data", `${filename}.json`)
];
for (const path of paths) {
try {
if (existsSync3(path)) {
if (path.endsWith(".gz")) {
const gzipped = readFileSync3(path);
const decompressed = decompressBuffer(gzipped);
const data = JSON.parse(decompressed);
dataCache.set(filename, data);
return data;
} else {
const content = readFileSync3(path, "utf8");
const data = JSON.parse(content);
dataCache.set(filename, data);
return data;
}
}
} catch {
continue;
}
}
throw new Error(`Failed to load ${filename} from any location`);
} catch (error) {
throw new Error(`Failed to load ${filename}: ${error instanceof Error ? error.message : "Unknown error"}`);
}
}
var dataCache2 = /* @__PURE__ */ new Map();
function decompressBuffer2(buffer) {
try {
return zlib.brotliDecompressSync(buffer).toString("utf8");
} catch {
return zlib.gunzipSync(buffer).toString("utf8");
}
}
function getPackageRoot() {
try {
const packageJsonPath = __require.resolve("rwanda-geo/package.json");
return path.dirname(packageJsonPath);
} catch (error) {
const currentDir = __dirname;
const srcIndex = currentDir.indexOf("/src/");
if (srcIndex !== -1) {
return currentDir.substring(0, srcIndex);
}
let currentDir2 = process.cwd();
while (currentDir2 !== path.dirname(currentDir2)) {
if (fs.existsSync(path.join(currentDir2, "package.json"))) {
if (fs.existsSync(path.join(currentDir2, "dist", "data", "provinces.json.gz"))) {
return currentDir2;
}
}
currentDir2 = path.dirname(currentDir2);
}
throw new Error(`Could not determine package root. This package must be properly installed or run from its own directory. Error: ${error instanceof Error ? error.message : "Unknown error"}`);
}
}
function lazyLoadGzippedJson(filename) {
if (dataCache2.has(filename)) {
return dataCache2.get(filename);
}
const packageRoot = getPackageRoot();
const paths = [
path.join(packageRoot, "dist/data", `${filename}.json.gz`),
// Production (published package)
path.join(packageRoot, "src/data", `${filename}.json.gz`),
// Development
path.join(packageRoot, "dist/data", `${filename}.json`),
// Production fallback
path.join(packageRoot, "src/data", `${filename}.json`)
// Development fallback
];
for (const path of paths) {
try {
if (fs.existsSync(path)) {
if (path.endsWith(".gz")) {
const gzipped = fs.readFileSync(path);
const decompressed = decompressBuffer2(gzipped);
const data = JSON.parse(decompressed);
dataCache2.set(filename, data);
return data;
} else {
const content = fs.readFileSync(path, "utf8");
const data = JSON.parse(content);
dataCache2.set(filename, data);
return data;
}
}
} catch {
continue;
}
}
throw new Error(`Failed to load ${filename}.json.gz or ${filename}.json from package directory: ${packageRoot}. Tried paths: ${paths.join(", ")}`);
}
function preloadData(filenames) {
filenames.forEach((filename) => {
if (!dataCache2.has(filename)) {
try {
lazyLoadGzippedJson(filename);
} catch (error) {
console.warn(`Failed to preload ${filename}:`, error instanceof Error ? error.message : "Unknown error");
}
}
});
}
function clearDataCache() {
dataCache2.clear();
}
function getCacheStats() {
return {
size: dataCache2.size,
keys: Array.from(dataCache2.keys())
};
}
// src/helpers.ts
var PROVINCE_LANGUAGE_MAP = {
"Kigali City": {
en: "Kigali City",
rw: "Umujyi wa Kigali"
},
"Southern Province": {
en: "Southern Province",
rw: "Amajyepfo"
},
"Western Province": {
en: "Western Province",
rw: "Iburengerazuba"
},
"Northern Province": {
en: "Northern Province",
rw: "Amajyaruguru"
},
"Eastern Province": {
en: "Eastern Province",
rw: "Iburasirazuba"
}
};
var PROVINCE_SLUG_MAP = {
"Kigali City": {
en: "kigali-city",
rw: "umujyi-wa-kigali"
},
"Southern Province": {
en: "southern-province",
rw: "amajyepfo"
},
"Western Province": {
en: "western-province",
rw: "iburengerazuba"
},
"Northern Province": {
en: "northern-province",
rw: "amajyaruguru"
},
"Eastern Province": {
en: "eastern-province",
rw: "iburasirazuba"
}
};
function getTranslatedProvinceName(originalName, language = "en") {
const mapping = PROVINCE_LANGUAGE_MAP[originalName];
const result = mapping ? mapping[language] : originalName;
return result;
}
function getTranslatedProvinceSlug(originalName, language = "en") {
const mapping = PROVINCE_SLUG_MAP[originalName];
return mapping ? mapping[language] : originalName.toLowerCase().replace(/\s+/g, "-");
}
function getProvincesData() {
try {
return loadEmbeddedData("provinces");
} catch (error) {
console.warn("Warning: Could not load provinces data:", error instanceof Error ? error.message : "Unknown error");
return [];
}
}
function getDistrictsData() {
try {
return loadEmbeddedData("districts");
} catch (error) {
console.warn("Warning: Could not load districts data:", error instanceof Error ? error.message : "Unknown error");
return [];
}
}
function getSectorsData() {
try {
return loadEmbeddedData("sectors");
} catch (error) {
console.warn("Warning: Could not load sectors data:", error instanceof Error ? error.message : "Unknown error");
return [];
}
}
function getCellsData() {
try {
return loadEmbeddedData("cells");
} catch (error) {
console.warn("Warning: Could not load cells data:", error instanceof Error ? error.message : "Unknown error");
return [];
}
}
function getVillagesData() {
try {
return loadEmbeddedData("villages");
} catch (error) {
console.warn("Warning: Could not load villages data:", error instanceof Error ? error.message : "Unknown error");
return [];
}
}
var allUnitsMap = null;
function getAllUnitsMap() {
if (!allUnitsMap) {
allUnitsMap = /* @__PURE__ */ new Map();
try {
getProvincesData().forEach((province) => allUnitsMap.set(province.code, province));
} catch (error) {
console.warn("Warning: Could not load provinces data:", error instanceof Error ? error.message : "Unknown error");
}
try {
getDistrictsData().forEach((district) => allUnitsMap.set(district.code, district));
} catch (error) {
console.warn("Warning: Could not load districts data:", error instanceof Error ? error.message : "Unknown error");
}
try {
getSectorsData().forEach((sector) => allUnitsMap.set(sector.code, sector));
} catch (error) {
console.warn("Warning: Could not load sectors data:", error instanceof Error ? error.message : "Unknown error");
}
try {
getCellsData().forEach((cell) => allUnitsMap.set(cell.code, cell));
} catch (error) {
console.warn("Warning: Could not load cells data:", error instanceof Error ? error.message : "Unknown error");
}
try {
getVillagesData().forEach((village) => allUnitsMap.set(village.code, village));
} catch (error) {
console.warn("Warning: Could not load villages data:", error instanceof Error ? error.message : "Unknown error");
}
}
return allUnitsMap;
}
function getAllProvinces(options) {
try {
const provinces = getProvincesData();
const language = options?.language || "en";
if (language === "en") {
return [...provinces];
}
if (language === "rw") {
return provinces.map((province) => ({
...province,
name: getTranslatedProvinceName(province.name, "rw"),
slug: getTranslatedProvinceSlug(province.name, "rw")
}));
}
return [...provinces];
} catch (error) {
console.warn("Warning: Could not load provinces data:", error instanceof Error ? error.message : "Unknown error");
return [];
}
}
function getAllDistricts() {
try {
return [...getDistrictsData()];
} catch (error) {
console.warn("Warning: Could not load districts data:", error instanceof Error ? error.message : "Unknown error");
return [];
}
}
function getAllSectors() {
try {
return [...getSectorsData()];
} catch (error) {
console.warn("Warning: Could not load sectors data:", error instanceof Error ? error.message : "Unknown error");
return [];
}
}
function getAllCells() {
try {
return [...getCellsData()];
} catch (error) {
console.warn("Warning: Could not load cells data:", error instanceof Error ? error.message : "Unknown error");
return [];
}
}
function getAllVillages() {
try {
return [...getVillagesData()];
} catch (error) {
console.warn("Warning: Could not load villages data:", error instanceof Error ? error.message : "Unknown error");
return [];
}
}
function getDistrictsByProvince(provinceCode) {
return getDistrictsData().filter((district) => district.parentCode === provinceCode);
}
function getSectorsByDistrict(districtCode) {
return getSectorsData().filter((sector) => sector.parentCode === districtCode);
}
function getCellsBySector(sectorCode) {
return getCellsData().filter((cell) => cell.parentCode === sectorCode);
}
function getVillagesByCell(cellCode) {
return getVillagesData().filter((village) => village.parentCode === cellCode);
}
function getByCode(code) {
return getAllUnitsMap().get(code);
}
function getHierarchy(code) {
const unit = getByCode(code);
if (!unit) {
return [];
}
const hierarchy = [unit];
let currentUnit = unit;
while (currentUnit.parentCode) {
const parent = getByCode(currentUnit.parentCode);
if (parent) {
hierarchy.unshift(parent);
currentUnit = parent;
} else {
break;
}
}
return hierarchy;
}
function getChildren(parentCode) {
return Array.from(getAllUnitsMap().values()).filter((unit) => unit.parentCode === parentCode);
}
function searchByName(name) {
const searchTerm = name.toLowerCase();
return Array.from(getAllUnitsMap().values()).filter(
(unit) => unit.name.toLowerCase().includes(searchTerm)
);
}
function searchBySlug(slug) {
const searchTerm = slug.toLowerCase();
return Array.from(getAllUnitsMap().values()).filter(
(unit) => unit.slug.toLowerCase().includes(searchTerm)
);
}
function getByLevel(level) {
switch (level) {
case "province":
return getAllProvinces();
case "district":
return getAllDistricts();
case "sector":
return getAllSectors();
case "cell":
return getAllCells();
case "village":
return getAllVillages();
default:
return [];
}
}
function getCounts() {
const provinces = getProvincesData();
const districts = getDistrictsData();
const sectors = getSectorsData();
const cells = getCellsData();
const villages = getVillagesData();
return {
provinces: provinces.length,
districts: districts.length,
sectors: sectors.length,
cells: cells.length,
villages: villages.length,
total: provinces.length + districts.length + sectors.length + cells.length + villages.length
};
}
function isValidCode(code) {
return getAllUnitsMap().has(code);
}
function getCodeLevel(code) {
if (!isValidCode(code)) return void 0;
if (code.startsWith("RW-") && code.length === 5 && code.match(/^RW-\d{2}$/)) return "province";
if (code.startsWith("RW-D-")) return "district";
if (code.startsWith("RW-S-")) return "sector";
if (code.startsWith("RW-C-")) return "cell";
if (code.startsWith("RW-V-")) return "village";
return void 0;
}
function getSummary() {
const provinces = getProvincesData();
const districts = getDistrictsData();
const sectors = getSectorsData();
const cells = getCellsData();
const villages = getVillagesData();
return {
provinces: provinces.length,
districts: districts.length,
sectors: sectors.length,
cells: cells.length,
villages: villages.length
};
}
function getFullHierarchy(code) {
return getHierarchy(code);
}
function getDirectChildren(parentCode) {
return getChildren(parentCode);
}
function getSiblings(code) {
const unit = getByCode(code);
if (!unit || !unit.parentCode) return [];
return getChildren(unit.parentCode).filter((sibling) => sibling.code !== code);
}
function getAllDescendants(parentCode) {
const descendants = [];
const queue = [parentCode];
while (queue.length > 0) {
const currentCode = queue.shift();
const children = getChildren(currentCode);
children.forEach((child) => {
descendants.push(child);
queue.push(child.code);
});
}
return descendants;
}
function levenshteinDistance(str1, str2) {
const matrix = Array(str2.length + 1).fill(null).map(() => Array(str1.length + 1).fill(null));
for (let i = 0; i <= str1.length; i++) matrix[0][i] = i;
for (let j = 0; j <= str2.length; j++) matrix[j][0] = j;
for (let j = 1; j <= str2.length; j++) {
for (let i = 1; i <= str1.length; i++) {
const indicator = str1[i - 1] === str2[j - 1] ? 0 : 1;
matrix[j][i] = Math.min(
matrix[j][i - 1] + 1,
// deletion
matrix[j - 1][i] + 1,
// insertion
matrix[j - 1][i - 1] + indicator
// substitution
);
}
}
return matrix[str2.length][str1.length];
}
function fuzzySearchByName(query, threshold = 3, limit = 10) {
const searchTerm = query.toLowerCase();
const results = [];
getAllUnitsMap().forEach((unit) => {
const distance = levenshteinDistance(searchTerm, unit.name.toLowerCase());
if (distance <= threshold) {
results.push({ unit, score: 1 - distance / Math.max(searchTerm.length, unit.name.length) });
}
});
return results.sort((a, b) => b.score - a.score).slice(0, limit);
}
function searchByPartialCode(partialCode, limit = 20) {
const searchTerm = partialCode.toUpperCase();
const results = [];
getAllUnitsMap().forEach((unit) => {
if (unit.code.includes(searchTerm)) {
results.push(unit);
}
});
return results.slice(0, limit);
}
function getSuggestions(query, limit = 10) {
const searchTerm = query.toLowerCase();
const suggestions = [];
getAllUnitsMap().forEach((unit) => {
if (unit.name.toLowerCase() === searchTerm) {
suggestions.push({ unit, type: "exact", matchField: "name" });
} else if (unit.code.toLowerCase() === searchTerm) {
suggestions.push({ unit, type: "exact", matchField: "code" });
} else if (unit.slug.toLowerCase() === searchTerm) {
suggestions.push({ unit, type: "exact", matchField: "slug" });
} else if (unit.name.toLowerCase().includes(searchTerm)) {
suggestions.push({ unit, type: "partial", matchField: "name" });
} else if (unit.code.toLowerCase().includes(searchTerm)) {
suggestions.push({ unit, type: "partial", matchField: "code" });
} else if (unit.slug.toLowerCase().includes(searchTerm)) {
suggestions.push({ unit, type: "partial", matchField: "slug" });
} else {
const nameDistance = levenshteinDistance(searchTerm, unit.name.toLowerCase());
if (nameDistance <= 3) {
suggestions.push({ unit, type: "fuzzy", matchField: "name" });
}
}
});
const typePriority = { exact: 3, partial: 2, fuzzy: 1 };
return suggestions.sort((a, b) => {
const priorityDiff = typePriority[b.type] - typePriority[a.type];
if (priorityDiff !== 0) return priorityDiff;
return a.unit.name.localeCompare(b.unit.name);
}).slice(0, limit);
}
function validateParentChildRelationship(parentCode, childCode) {
const parent = getByCode(parentCode);
const child = getByCode(childCode);
if (!parent) {
return { isValid: false, error: `Parent code '${parentCode}' not found` };
}
if (!child) {
return { isValid: false, error: `Child code '${childCode}' not found` };
}
const parentLevel = getCodeLevel(parentCode);
const childLevel = getCodeLevel(childCode);
if (!parentLevel || !childLevel) {
return { isValid: false, error: "Invalid code format" };
}
if (child.parentCode !== parentCode) {
return {
isValid: false,
error: `Child '${childCode}' does not have parent '${parentCode}'`,
parentLevel,
childLevel
};
}
return { isValid: true, parentLevel, childLevel };
}
function validateCodeFormat(code) {
const level = getCodeLevel(code);
if (!level) {
return {
isValid: false,
error: "Invalid code format",
format: "Expected: RW-XX, RW-D-XX, RW-S-XXX, RW-C-XXXX, or RW-V-XXXXX"
};
}
return { isValid: true, level };
}
function validateHierarchyIntegrity() {
const issues = [];
const allUnits = Array.from(getAllUnitsMap().values());
const totalUnits = allUnits.length;
let orphanedUnits = 0;
let invalidParents = 0;
let circularReferences = 0;
let missingUnits = 0;
allUnits.forEach((unit) => {
if (unit.parentCode && !getByCode(unit.parentCode)) {
issues.push({
type: "orphaned",
message: `Unit '${unit.code}' has missing parent '${unit.parentCode}'`,
code: unit.code
});
orphanedUnits++;
}
if (unit.parentCode) {
const parent = getByCode(unit.parentCode);
if (parent) {
const validation = validateParentChildRelationship(unit.parentCode, unit.code);
if (!validation.isValid) {
issues.push({
type: "invalid_parent",
message: validation.error || "Invalid parent-child relationship",
code: unit.code
});
invalidParents++;
}
}
}
});
return {
isValid: issues.length === 0,
issues,
summary: {
totalUnits,
orphanedUnits,
invalidParents,
circularReferences,
missingUnits
}
};
}
function validateUnitProperties(unit) {
const issues = [];
if (!unit.code || typeof unit.code !== "string") {
issues.push("Missing or invalid code");
}
if (!unit.name || typeof unit.name !== "string") {
issues.push("Missing or invalid name");
}
if (!unit.slug || typeof unit.slug !== "string") {
issues.push("Missing or invalid slug");
}
const codeValidation = validateCodeFormat(unit.code);
if (!codeValidation.isValid) {
issues.push(`Invalid code format: ${codeValidation.error}`);
}
return {
isValid: issues.length === 0,
issues
};
}
function getAvailableData() {
return {
provinces: (() => {
try {
getProvincesData();
return true;
} catch {
return false;
}
})(),
districts: (() => {
try {
getDistrictsData();
return true;
} catch {
return false;
}
})(),
sectors: (() => {
try {
getSectorsData();
return true;
} catch {
return false;
}
})(),
cells: (() => {
try {
getCellsData();
return true;
} catch {
return false;
}
})(),
villages: (() => {
try {
getVillagesData();
return true;
} catch {
return false;
}
})()
};
}
function getModuleDir() {
if (typeof __dirname !== "undefined") {
return __dirname;
} else {
return path.dirname(url.fileURLToPath((typeof document === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : (_documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === 'SCRIPT' && _documentCurrentScript.src || new URL('index.js', document.baseURI).href))));
}
}
function getDataPaths(filename) {
const moduleDir = getModuleDir();
return [
// Production: dist/data (when running from dist/index.js)
path.join(moduleDir, "data", `${filename}.json.gz`),
path.join(moduleDir, "data", `${filename}.json`),
// Development: src/data (when running from src/index.ts)
path.join(moduleDir, "../src/data", `${filename}.json.gz`),
path.join(moduleDir, "../src/data", `${filename}.json`)
];
}
function loadGzippedJson(filename) {
const paths = getDataPaths(filename);
for (const path of paths) {
try {
if (fs.existsSync(path)) {
if (path.endsWith(".gz")) {
const gzipped = fs.readFileSync(path);
const decompressed = zlib.gunzipSync(gzipped);
return JSON.parse(decompressed.toString("utf8"));
} else {
const content = fs.readFileSync(path, "utf8");
return JSON.parse(content);
}
}
} catch {
continue;
}
}
throw new Error(`Failed to load ${filename}.json.gz or ${filename}.json from any of the expected locations: ${paths.join(", ")}`);
}
function loadGzippedJsonSafe(filename) {
try {
return loadGzippedJson(filename);
} catch (error) {
console.warn(`Warning: Failed to load ${filename}.json.gz:`, error instanceof Error ? error.message : "Unknown error");
return null;
}
}
// src/index.ts
var index_default = {
...helpers_exports,
...types_exports,
loadGzippedJson,
loadGzippedJsonSafe
};
exports.AdminLevel = AdminLevel;
exports.clearDataCache = clearDataCache;
exports.default = index_default;
exports.fuzzySearchByName = fuzzySearchByName;
exports.getAllCells = getAllCells;
exports.getAllDescendants = getAllDescendants;
exports.getAllDistricts = getAllDistricts;
exports.getAllProvinces = getAllProvinces;
exports.getAllSectors = getAllSectors;
exports.getAllVillages = getAllVillages;
exports.getAvailableData = getAvailableData;
exports.getByCode = getByCode;
exports.getByLevel = getByLevel;
exports.getCacheStats = getCacheStats;
exports.getCellsBySector = getCellsBySector;
exports.getChildren = getChildren;
exports.getCodeLevel = getCodeLevel;
exports.getCounts = getCounts;
exports.getDirectChildren = getDirectChildren;
exports.getDistrictsByProvince = getDistrictsByProvince;
exports.getFullHierarchy = getFullHierarchy;
exports.getHierarchy = getHierarchy;
exports.getSectorsByDistrict = getSectorsByDistrict;
exports.getSiblings = getSiblings;
exports.getSuggestions = getSuggestions;
exports.getSummary = getSummary;
exports.getVillagesByCell = getVillagesByCell;
exports.isValidCode = isValidCode;
exports.loadGzippedJson = loadGzippedJson;
exports.loadGzippedJsonSafe = loadGzippedJsonSafe;
exports.preloadData = preloadData;
exports.searchByName = searchByName;
exports.searchByPartialCode = searchByPartialCode;
exports.searchBySlug = searchBySlug;
exports.validateCodeFormat = validateCodeFormat;
exports.validateHierarchyIntegrity = validateHierarchyIntegrity;
exports.validateParentChildRelationship = validateParentChildRelationship;
exports.validateUnitProperties = validateUnitProperties;