country-city-libs
v1.0.1
Published
Bibliothèque complète des 54 pays d'Afrique avec régions et villes - Données complètes pour le Sénégal
Maintainers
Readme
Countries City Libs 🌍
Une bibliothèque complète des 54 pays d'Afrique avec leurs régions et villes. Données complètes pour le Sénégal et quelques autres pays, structure prête pour les autres pays.
🎯 Caractéristiques
- ✅ 54 pays africains avec informations complètes (capitale, devise, indicatif téléphonique, etc.)
- ✅ Données détaillées pour le Sénégal : 14 régions, 100+ villes avec coordonnées GPS
- ✅ Structure extensible : ajoutez facilement les données des autres pays
- ✅ TypeScript : typage complet pour une meilleure DX
- ✅ Léger : aucune dépendance externe
- ✅ Recherche : fonctions de recherche et filtrage intégrées
📦 Installation
npm install country-city-libs🚀 Utilisation
Import
import CountriesData from 'country-city-libs';
// ou
import { CountriesData, ICountry, IRegion, ICity } from 'country-city-libs';Exemples de base
// Obtenir tous les pays d'Afrique (54)
const countries = CountriesData.getAllCountries();
console.log(countries.length); // 54
// Obtenir un pays spécifique
const senegal = CountriesData.getCountryByCode('SN');
console.log(senegal.name); // "Sénégal"
console.log(senegal.capital); // "Dakar"
console.log(senegal.hasCompleteData); // true
// Obtenir les pays par région
const westAfrica = CountriesData.getCountriesByRegion('Afrique de l\'Ouest');
console.log(westAfrica.length); // 16 pays
// Obtenir les pays avec données complètes
const completeCountries = CountriesData.getCountriesWithCompleteData();
console.log(completeCountries); // [Sénégal]Régions et villes
// Obtenir les régions du Sénégal
const senegalRegions = CountriesData.getRegionsOfCountry('SN');
console.log(senegalRegions.length); // 14 régions
// Obtenir les villes d'une région
const dakarCities = CountriesData.getCitiesOfRegion('SN-DK');
console.log(dakarCities);
// [{ name: 'Dakar', population: 1056009, ... }, ...]
// Obtenir toutes les villes d'un pays
const senegalCities = CountriesData.getCitiesOfCountry('SN');
console.log(senegalCities.length); // 100+ villes
// Rechercher des villes
const results = CountriesData.searchCities('Dakar');
console.log(results);
// Rechercher dans un pays spécifique
const thiesTowns = CountriesData.searchCities('Thiès', 'SN');Capitales et grandes villes
// Obtenir toutes les capitales africaines
const capitals = CountriesData.getCapitalCities();
console.log(capitals.length); // 54 capitales
// Obtenir les 10 plus grandes villes
const topCities = CountriesData.getLargestCities(10);
// Obtenir les plus grandes villes du Sénégal
const topSenegalCities = CountriesData.getLargestCities(5, 'SN');
// [Dakar, Touba, Pikine, ...]Statistiques
const stats = CountriesData.getStats();
console.log(stats);
/*
{
totalCountries: 54,
countriesWithData: 1,
totalRegions: 14,
totalCities: 100+,
byRegion: {
'Afrique du Nord': 5,
'Afrique de l\'Ouest': 16,
'Afrique Centrale': 9,
'Afrique de l\'Est': 19,
'Afrique Australe': 5
}
}
*/🔧 Utilisation avec Angular
import { Component, OnInit, signal } from '@angular/core';
import CountriesData, { ICountry, IRegion, ICity } from 'country-city-libs';
@Component({
selector: 'app-location',
template: `
<select [(ngModel)]="selectedCountry" (change)="onCountryChange()">
<option value="">Sélectionnez un pays</option>
@for (country of countries(); track country.code) {
<option [value]="country.code">
{{ country.flag }} {{ country.name }}
@if (country.hasCompleteData) {
<span>✓</span>
}
</option>
}
</select>
<select [(ngModel)]="selectedRegion" (change)="onRegionChange()">
<option value="">Sélectionnez une région</option>
@for (region of regions(); track region.code) {
<option [value]="region.code">{{ region.name }}</option>
}
</select>
<select [(ngModel)]="selectedCity">
<option value="">Sélectionnez une ville</option>
@for (city of cities(); track city.name) {
<option [value]="city.name">
{{ city.name }}
@if (city.isCapital) {
<span>⭐</span>
}
</option>
}
</select>
@if (selectedCountry && !hasCompleteData()) {
<p class="text-warning">
ℹ️ Données limitées pour ce pays. Saisie manuelle possible.
</p>
}
`
})
export class LocationComponent implements OnInit {
countries = signal<ICountry[]>([]);
regions = signal<IRegion[]>([]);
cities = signal<ICity[]>([]);
selectedCountry = '';
selectedRegion = '';
selectedCity = '';
ngOnInit() {
this.countries.set(CountriesData.getAllCountries());
}
onCountryChange() {
if (this.selectedCountry) {
this.regions.set(CountriesData.getRegionsOfCountry(this.selectedCountry));
this.cities.set([]);
this.selectedRegion = '';
}
}
onRegionChange() {
if (this.selectedRegion) {
this.cities.set(CountriesData.getCitiesOfRegion(this.selectedRegion));
}
}
hasCompleteData(): boolean {
return CountriesData.hasCompleteData(this.selectedCountry);
}
}📊 Structure des données
ICountry
interface ICountry {
name: string; // Nom du pays
code: string; // Code ISO Alpha-2 (ex: 'SN')
code3: string; // Code ISO Alpha-3 (ex: 'SEN')
capital: string; // Capitale
region: string; // Région d'Afrique
currency: string; // Code devise (ex: 'XOF')
phone: string; // Indicatif tél. (ex: '+221')
flag: string; // Emoji drapeau
hasCompleteData: boolean; // Données complètes?
}IRegion
interface IRegion {
name: string; // Nom de la région
code: string; // Code (ex: 'SN-DK')
countryCode: string; // Code pays
latitude?: number; // Coordonnée GPS
longitude?: number; // Coordonnée GPS
population?: number; // Population
}ICity
interface ICity {
name: string; // Nom de la ville
regionCode: string; // Code région
countryCode: string; // Code pays
latitude?: number; // Coordonnée GPS
longitude?: number; // Coordonnée GPS
population?: number; // Population
isCapital?: boolean; // Est une capitale?
}🌍 Régions d'Afrique
- Afrique du Nord : 5 pays
- Afrique de l'Ouest : 16 pays
- Afrique Centrale : 9 pays
- Afrique de l'Est : 19 pays
- Afrique Australe : 5 pays
🤝 Contribution
Les contributions sont les bienvenues ! Pour ajouter des données pour d'autres pays :
- Créez un fichier dans
src/data/regions/[pays].ts - Créez un fichier dans
src/data/cities/[pays].ts - Importez dans les fichiers index respectifs
- Mettez
hasCompleteData: truepour le pays danscountries.ts
Exemple d'ajout (Mali)
// src/data/regions/mali.ts
export const maliRegions: IRegion[] = [
{ name: 'Bamako', code: 'ML-BKO', countryCode: 'ML', latitude: 12.6392, longitude: -8.0029 },
{ name: 'Kayes', code: 'ML-1', countryCode: 'ML', latitude: 14.4448, longitude: -11.4446 },
// ... autres régions
];
// src/data/cities/mali.ts
export const maliCities: ICity[] = [
{ name: 'Bamako', regionCode: 'ML-BKO', countryCode: 'ML', population: 2009109, isCapital: true },
// ... autres villes
];
// Mettre à jour countries.ts
{
name: 'Mali',
code: 'ML',
code3: 'MLI',
capital: 'Bamako',
region: 'Afrique de l\'Ouest',
currency: 'XOF',
phone: '+223',
flag: '🇲🇱',
hasCompleteData: true // ✓ Changé à true
}📝 Roadmap
- [x] Structure complète des 54 pays
- [x] Données complètes pour le Sénégal
- [ ] Données complètes pour la Côte d'Ivoire
- [ ] Données complètes pour le Mali
- [ ] Données complètes pour le Burkina Faso
- [ ] Données complètes pour le Ghana
- [ ] Données pour les autres pays d'Afrique de l'Ouest
- [ ] Données pour l'Afrique du Nord
- [ ] Données pour l'Afrique Centrale
- [ ] Données pour l'Afrique de l'Est
- [ ] Données pour l'Afrique Australe
📄 License
MIT
👨💻 Auteur
Fatou Niang - GitHub
🙏 Remerciements
Merci à tous les contributeurs qui aident à compléter les données des pays africains ! */
