npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

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

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 :

  1. Créez un fichier dans src/data/regions/[pays].ts
  2. Créez un fichier dans src/data/cities/[pays].ts
  3. Importez dans les fichiers index respectifs
  4. Mettez hasCompleteData: true pour le pays dans countries.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 ! */