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

ddi-country-data

v1.2.0

Published

TypeScript library mapping DDI codes to country data (names, flags, masks)

Readme

ddi-country-data

Lightweight TypeScript library mapping international dialing codes (DDI) to country data including name, flag, continent, and phone number mask.

✨ Features

  • 🔍 Advanced search by DDI, country name (PT/EN), or continent (PT/EN)
  • 🔢 Exact DDI lookup
  • 🏳️‍🌈 Flag via image URL
  • 🌍 Country name and continent in Portuguese (pt-BR) and English (en)
  • 📏 Configurable phone number mask
  • 🛡️ Zero external dependencies
  • 📦 Lightweight (~70 kB)

🚀 Installation

# Yarn
yarn add ddi-country-data

# npm
npm install ddi-country-data

📚 Quick Usage

Exact DDI lookup

import { getCountryByDDI } from 'ddi-country-data';

const countryData = getCountryByDDI(55);
console.log(countryData);
/*
{
  ddi: '55',
  countryPt: 'Brasil',
  countryEn: 'Brazil',
  img: 'https://.../Flag_of_Brazil.svg',
  continentPt: 'América',
  continentEn: 'Americas',
  mask: '+55 (##) #####-####'
}
*/

Advanced multi-field search

import { searchDDI } from 'ddi-country-data';

// Search by country name (any language)
const results1 = searchDDI('Estados', 5); // up to 5 matches containing 'Estados'

// Search by continent
const americanCountries = searchDDI('América');

// Search by DDI
const ddiResults = searchDDI('1', 3); // up to 3 countries with DDI 1

// Mixed search (any field)
const globalResults = searchDDI('uni', 10); // searches across all fields

Accessing raw dataset

import { ddiData } from 'ddi-country-data';
console.log(ddiData[0]); // First entry in dataset

🧩 API

getCountryByDDI(ddi: string | number): CountryInfo | null

Returns a CountryInfo object for the given DDI or null if not found.

searchDDI(query: string | number, limit: number = 10): CountryInfo[]

Returns an array of CountryInfo objects matching the query in:

  • DDI code
  • Country name (Portuguese or English)
  • Continent (Portuguese or English)

The limit parameter controls the maximum number of results (default: 10).

ddiData: CountryInfo[]

Full dataset for direct access or custom processing.

🔧 Interface CountryInfo

export interface CountryInfo {
  ddi: string; // DDI code (e.g. '55')
  countryPt: string; // Country name in Portuguese
  countryEn: string; // Country name in English
  img: string; // Flag image URL
  continentPt: string; // Continent in Portuguese
  continentEn: string; // Continent in English
  mask: string; // Phone number format mask
}

🔍 Search Behavior

  • Multi-language: matches in both Portuguese and English fields.
  • Partial matches: returns entries containing the search term.
  • Case-insensitive: ignores letter casing.
  • Automatic '+' handling: searches for DDI treat '+' prefix optionally.
  • Limit control: returns up to the specified number of results.

🗺️ Roadmap

  • Support for ISO 3166-1 country codes
  • Phone number formatting utilities
  • Improved search relevance scoring
  • Accent-insensitive search
  • Community contributions for additional masks or regional adjustments

🛠️ Contributing

  1. Fork the repository
  2. Create a feature branch: git checkout -b feature/your-feature
  3. Commit changes: git commit -m 'Add feature X'
  4. Push to remote: git push origin feature/your-feature
  5. Open a Pull Request describing changes and rationale.

Feel free to open issues for bugs, suggestions, or improvements.

📄 License

This project is licensed under the MIT License. See LICENSE for details.

👤 Author

Created by Amom Augusto