UNPKG

is-european

Version:

Check if a country is part of EU (European Union) or EEA (pean Economic Area). ISO 3166-1 compliant

67 lines (55 loc) 1.4 kB
'use strict' const iso31661 = require('iso-3166') const EU_COUNTRIES = [ 'Austria', 'Belgium', 'Bulgaria', 'Croatia', 'Cyprus', 'Czechia', 'Denmark', 'Estonia', 'Finland', 'France', 'Germany', 'Greece', 'Hungary', 'Ireland', 'Italy', 'Latvia', 'Lithuania', 'Luxembourg', 'Malta', 'Netherlands', 'Poland', 'Portugal', 'Romania', 'Slovakia', 'Slovenia', 'Spain', 'Sweden' ] const EEA_COUNTRIES = EU_COUNTRIES.concat([ 'Iceland', 'Liechtenstein', 'Norway' ]) const isEqual = (str1, str2) => str1.toLowerCase() === str2.toLowerCase() const isNumber = input => typeof input === 'number' const getValidator = input => { if (isNumber(input)) return item => input === Number(item.numeric) if (input.length === 2) return item => isEqual(input, item.alpha2) if (input.length === 3) return item => isEqual(input, item.alpha3) return item => isEqual(input, item.name) } const getCountry = input => iso31661.find(getValidator(input)) const factory = collection => input => { if (input === null || input === undefined) return false const country = getCountry(input) return country ? collection.includes(country.name) : false } /* European Economic Area Members */ const eeaMember = factory(EEA_COUNTRIES) /* European Union Members */ const euMember = factory(EU_COUNTRIES) module.exports = { eeaMember, euMember, getCountry }