UNPKG

african-states-and-tribes

Version:

This project provides comprehensive insights into African countries, the origins of various tribes, and their geographic distributions. Built to celebrate and document Africa’s rich multicultural landscape, it allows users to explore the continent’s diver

152 lines (149 loc) 6.43 kB
import { countries_default } from "./chunk-5AECN3B2.mjs"; import { __glob } from "./chunk-6X3JIUEO.mjs"; // import("./data/africa/tribes/**/*.json") in src/index.ts var globImport_data_africa_tribes_json = __glob({ "./data/africa/tribes/AO.json": () => import("./AO-3WUV6HS7.mjs"), "./data/africa/tribes/BF.json": () => import("./BF-GZ45LRSN.mjs"), "./data/africa/tribes/BI.json": () => import("./BI-3GCTK7CF.mjs"), "./data/africa/tribes/BJ.json": () => import("./BJ-4AJ2EFGG.mjs"), "./data/africa/tribes/BW.json": () => import("./BW-AN7LIVOT.mjs"), "./data/africa/tribes/CD.json": () => import("./CD-JYCWONXN.mjs"), "./data/africa/tribes/CF.json": () => import("./CF-L6ZKGUE2.mjs"), "./data/africa/tribes/CG.json": () => import("./CG-L6Q7VBRE.mjs"), "./data/africa/tribes/CI.json": () => import("./CI-OKLEG4C6.mjs"), "./data/africa/tribes/CM.json": () => import("./CM-5U7UTSLM.mjs"), "./data/africa/tribes/CV.json": () => import("./CV-J3IWNECL.mjs"), "./data/africa/tribes/DJ.json": () => import("./DJ-WPIJRNWE.mjs"), "./data/africa/tribes/DZ.json": () => import("./DZ-ONSX7GR6.mjs"), "./data/africa/tribes/EG.json": () => import("./EG-CBFPAFSO.mjs"), "./data/africa/tribes/ER.json": () => import("./ER-UC5TZBXK.mjs"), "./data/africa/tribes/ET.json": () => import("./ET-HXCBRBHN.mjs"), "./data/africa/tribes/GA.json": () => import("./GA-T5YWU36U.mjs"), "./data/africa/tribes/GH.json": () => import("./GH-BMJZWTWI.mjs"), "./data/africa/tribes/GM.json": () => import("./GM-R3VSEPTK.mjs"), "./data/africa/tribes/GN.json": () => import("./GN-DRGVYDMG.mjs"), "./data/africa/tribes/GQ.json": () => import("./GQ-SMAK7YCQ.mjs"), "./data/africa/tribes/GW.json": () => import("./GW-DQPA4VJE.mjs"), "./data/africa/tribes/KE.json": () => import("./KE-DMP37VDP.mjs"), "./data/africa/tribes/KM.json": () => import("./KM-3F2KE6ER.mjs"), "./data/africa/tribes/LR.json": () => import("./LR-D67J6ITO.mjs"), "./data/africa/tribes/LS.json": () => import("./LS-QWKN3I62.mjs"), "./data/africa/tribes/LY.json": () => import("./LY-WJBKPKU2.mjs"), "./data/africa/tribes/MA.json": () => import("./MA-WRX5RCS2.mjs"), "./data/africa/tribes/MG.json": () => import("./MG-R72YT5VK.mjs"), "./data/africa/tribes/ML.json": () => import("./ML-VUAFPT44.mjs"), "./data/africa/tribes/MR.json": () => import("./MR-2E64EHZB.mjs"), "./data/africa/tribes/MU.json": () => import("./MU-6FUJYQWD.mjs"), "./data/africa/tribes/MW.json": () => import("./MW-HRW5OHWN.mjs"), "./data/africa/tribes/MZ.json": () => import("./MZ-3U5UXS5E.mjs"), "./data/africa/tribes/NA.json": () => import("./NA-XWIW6OOU.mjs"), "./data/africa/tribes/NE.json": () => import("./NE-ELKMBL7S.mjs"), "./data/africa/tribes/NG.json": () => import("./NG-4CWXAYHN.mjs"), "./data/africa/tribes/RW.json": () => import("./RW-HNJ52BFQ.mjs"), "./data/africa/tribes/SC.json": () => import("./SC-3DSRWYFW.mjs"), "./data/africa/tribes/SD.json": () => import("./SD-WB6ISMGF.mjs"), "./data/africa/tribes/SL.json": () => import("./SL-4COV24SC.mjs"), "./data/africa/tribes/SN.json": () => import("./SN-64VQKOL2.mjs"), "./data/africa/tribes/SO.json": () => import("./SO-HMRU3XDI.mjs"), "./data/africa/tribes/SS.json": () => import("./SS-TXIVIGCJ.mjs"), "./data/africa/tribes/ST.json": () => import("./ST-VPGLJ6S4.mjs"), "./data/africa/tribes/SZ.json": () => import("./SZ-4MEBFNNW.mjs"), "./data/africa/tribes/TD.json": () => import("./TD-MV3TL2LQ.mjs"), "./data/africa/tribes/TG.json": () => import("./TG-QLZJRIDX.mjs"), "./data/africa/tribes/TN.json": () => import("./TN-ZRJRJMOM.mjs"), "./data/africa/tribes/TZ.json": () => import("./TZ-D53PSFSF.mjs"), "./data/africa/tribes/UG.json": () => import("./UG-YVEGQ67T.mjs"), "./data/africa/tribes/ZA.json": () => import("./ZA-QQ6HKOFU.mjs"), "./data/africa/tribes/ZM.json": () => import("./ZM-KORM3A4T.mjs"), "./data/africa/tribes/ZW.json": () => import("./ZW-WH4BPDKQ.mjs") }); // src/index.ts async function getTribeData(countryCode) { try { const jsonTribesData = await globImport_data_africa_tribes_json(`./data/africa/tribes/${countryCode}.json`); return Object.values(jsonTribesData[countryCode] || {}); } catch (err) { console.warn(`\u26A0\uFE0F No tribe data found for ${countryCode}:`, err.message); return []; } } async function getCountries() { const countries = Object.keys(countries_default).map((item) => ({ ...countries_default[item], countryCode: item })); return countries; } async function getCountriesAndStates() { const countries = await getCountries(); const embeddedData = await Promise.all( countries.map(async (item) => ({ ...item, states: await getTribeData(item.countryCode) })) ); return embeddedData; } async function getCountry(countryCode) { const countries = await getCountries(); const selectCountry = countries.find( (item) => item.countryCode === countryCode ); if (selectCountry) return selectCountry; return {}; } async function getCountryAndState(countryCode) { const country = await getCountry(countryCode); const tribes = await getTribeData(countryCode); if (Object.keys(country).length > 0) { return { ...country, states: tribes }; } return {}; } async function getCountryStates(countryCode) { const tribes = await getTribeData(countryCode); return tribes; } async function getTribeRegion(tribeName) { const countries = await getCountriesAndStates(); const regions = []; countries.forEach((country) => { if (country.states && Array.isArray(country.states)) { const matchingStates = country.states.filter( (state) => state.tribes?.some( (tribe) => tribe.toLowerCase().includes(tribeName.toLowerCase()) ) ); matchingStates.forEach((state) => { regions.push({ capitalCity: state.capitalCity, country: country.name, countryCode: country.countryCode, geoPoliticalZone: state.geoPoliticalZone || "", location: state.location || "", name: state.name, stateCode: state.stateCode, subdivisions: state.subdivisions || [], tribes: state.tribes || [], type: state.type || "" }); }); } }); return regions; } export { getCountries, getCountriesAndStates, getCountry, getCountryAndState, getCountryStates, getTribeRegion };