@doubco/countries v1.2.0
Countries 🏳
Countries is basically a data package (with some helpers) for easy access to country, locale, language, currency and time zone data.
Installation
yarn add @doubco/countriesUsage
⚠️ GraphQL versions' has matching object
keyand list_idwith type definations.
Countries
Data Structure
countries example
{
  ...,
  "TR": {
    "name": "Turkey",
    "flag": "🇹🇷",
    "code": "+90",
    "currency": "TRY",
    "capital": "Ankara",
    "languages": ["tr"],
    "nativeName": "Türkiye"
  },
  ...
}countryList example
[
  ...
  {
    "_id": "TR",
    "label": "Turkey (Türkiye)"
  },
  ...
]Import Statements
import { countries, countryList } from "@doubco/countries";
// or
import countries from "@doubco/countries";
// default
// countries.data
// countries.list
// graphql alt.
// countries.graphql.data
// countries.graphql.listLocales
Data Structure
locales example
{
  ...,
  "en_GB": "English - Great Britain",
  ...
}localeList example
[
  ...
  {
    "_id": "en_GB",
    "label": "English - Great Britain"
  },
  ...
]Import Statements
import { locales, localeList } from "@doubco/countries/locales";
// or
import locales from "@doubco/countries/locales";
// default
// locales.data
// locales.list
// graphql alt.
// locales.graphql.data
// locales.graphql.listLanguages
Data Structure
languages example
{
  ...,
  "tr": {
    "name": "Turkish",
    "nativeName": "Türkçe"
  },
  ...
}languageList example
[
  ...
  {
    "_id": "tr",
    "label": "Turkish (Türkçe)"
  },
  ...
]Import Statements
import { languages, languageList } from "@doubco/countries/languages";
// or
import languages from "@doubco/countries/languages";
// default
// languages.data
// languages.list
// graphql alt.
// languages.graphql.data
// languages.graphql.listCurrencies
Data Structure
currencies example
{
  ...,
  "TRY": {
    "symbol": "TRY",
    "nativeSymbol": "\u20BA",
    "decimalDigits": 2,
    "name": "Turkish Lira",
    "nativeName": "Türk Lirası",
    "namePlural": "Turkish Lira"
  },
  ...
}⚠️ nativeName is only available on some currencies.
currencyList example
[
  ...
  {
    "_id": "TRY",
    "label": "Turkish Lira (₺)",
  },
  ...
]currencyListLite example
[
  ...
  {
    "_id": "TRY",
    "label": "TRY",
  },
  ...
]Import Statements
import {
  currencies,
  currencyList,
  currencyListSimple,
  currenciesLite,
  currencyListLite,
  currencyListLiteSimple,
} from "@doubco/countries/currencies";
import currencies from "@doubco/countries/currencies";
// default
// currencies.data;
// currencies.list;
// currencies.simpleList;
// lite
// currencies.lite.data;
// currencies.lite.list;
// currencies.lite.simpleList;
// graphql alt.
// currencies.graphql.data;
// currencies.graphql.list;
// currencies.graphql.simpleList;
// currencies.graphql.lite.data;
// currencies.graphql.lite.list;
// currencies.graphql.lite.simpleList;Simple list versions' uses
keyaslabel.Lite versions' includes only currencies supported by most currency convertion APIs.
Timezones
Data Structure
timezones example
{
  ...,
  "TRY": {
    "symbol": "TRY",
    "nativeSymbol": "\u20BA",
    "decimalDigits": 2,
    "name": "Turkish Lira",
    "nativeName": "Türk Lirası",
    "namePlural": "Turkish Lira"
  },
  ...
}timezoneList example
[
  ...
  {
    "_id": "TRY",
    "label": "Turkish Lira (₺)",
  },
  ...
]Import Statements
import { timezones, timezoneList } from "@doubco/countries/timezones";
// or
import timezones from "@doubco/countries/timezones";
// default
// timezones.data
// timezones.list
// lite
// timezones.lite.data
// timezones.lite.list
// graphql alt.
// timezones.graphql.data
// timezones.graphql.list
// timezones.graphql.lite.data
// timezones.graphql.lite.listLite versions only includes one time zone once.
Usage with GraphQL
This library also exposes GraphQL resolvers and type definations.
es6
import { countries, locales } from "@doubco/countries/graphql";
export default {
  typeDefs: [
    countries.typeDefs, // this is it.
    locales.typeDefs, // this is it.
    User.typeDefs,
    Log.typeDefs,
  ...
  ],
  resolvers: merge(
    countries.resolvers, // this is it.
    locales.resolvers, // this is it.
    Auth.resolvers,
    User.resolvers,
    ...
  ),
};nodejs
const { countries, locales } = require("@doubco/countries/graphql");
module.exports = {
  typeDefs: [
    countries.typeDefs, // this is it.
    locales.typeDefs, // this is it.
    Auth.typeDefs,
    User.typeDefs,
    Log.typeDefs,
  ...
  ],
  resolvers: merge(
    countries.resolvers, // this is it.
    locales.resolvers, // this is it.
    Auth.resolvers,
    User.resolvers,
    ...
  ),
};This usage is for Apollo Server, you can use similar approach on other frameworks.
Contribute
Pull requests are welcome and please submit bugs 🐛.
Contact
- Follow @doubco on Twitter
- Follow @doubco on Instagram
- Email hi@doub.co
Notes
Region data is from https://github.com/country-regions/country-region-data
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
4 years ago
4 years ago
4 years ago
4 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago