TypeScript package for country data with classes and interfaces generated from ISO 3166-1 standard.
- Fairly complete country data with 250+ countries
- Multi-language support (EN, HU, DE, ES, IT, FR, PT)
- TypeScript with full type definitions
- Individual class for each country
- ISO 3166-1 codes (alpha-2, alpha-3, numeric)
- FIPS code (Federal Information Processing Standard)
- Telephone country codes
- Capital cities
- Continent classification
- 100% functional test coverage
- Compatible with Node.js, Bun
bun add @omisai/countriesnpm install @omisai/countriespnpm add @omisai/countriesyarn add @omisai/countriesimport { UnitedStates } from "@omisai/countries";
const usa = new UnitedStates();
console.log(usa.en); // "United States"
console.log(usa.alpha2); // "US"
console.log(usa.callingCode); // "1"import { UnitedStates, Germany, Japan, Country } from "@omisai/countries";
// Use specific country classes
const usa = new UnitedStates();
console.log(usa.en); // "United States"
console.log(usa.alpha2); // "US"
console.log(usa.callingCode); // "1"
console.log(usa.capital); // "Washington"
// Get name in different languages
const germany = new Germany();
console.log(germany.getName("en")); // "Germany"
console.log(germany.getName("de")); // "Deutschland"
console.log(germany.getName("fr")); // "Allemagne"
// Convert to JSON
const japanData = new Japan().toJSON();
console.log(japanData);ts-countries/
├── src/
│ ├── Country.ts # Abstract base class
│ ├── types/
│ │ ├── Continent.ts # Continent enum and names
│ │ └── ICountry.ts # Country interface
│ ├── models/ # Generated country classes
│ │ ├── UnitedStates.ts
│ │ ├── Germany.ts
│ │ └── ... (all countries)
│ └── index.ts # Main export file
├── compiler.ts # Generates country classes from CSV
├── countries.csv # Source data
├── package.json
└── tsconfig.json
# Generate country classes from CSV
bun run compile
# Build for production (ESM + CJS)
bun run build
# Run tests
bun test
# Run tests with coverage
bun run test:coverage
# Type check
bun run typecheck
# Clean generated files
bun run clean
# Full rebuild
bun run rebuildimport { UnitedStates } from "@omisai/countries";
// or
const { UnitedStates } = require("@omisai/countries");import { UnitedStates } from "@omisai/countries";The package includes comprehensive tests that run on Node.js, Bun:
# Node.js (Vitest)
npm test
# Bun
bun test- Add more languages for country names
- Include additional country data (e.g., currencies, time zones)
- Fork the repository
- Create your feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'feat: add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
See CONTRIBUTING.md for detailed guidelines.
See the LICENSE file for details.