UNPKG

epic-geo

Version:

A simple geo information provider library.

68 lines (67 loc) 3.37 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.EpicGeo = void 0; const countries_1 = require("./countries"); class EpicGeo { constructor() { this.CustomData = {}; this.custom = (countryName, data) => { this.CustomData[countryName] = data; return this; }; this.countries = () => (Object.assign(Object.assign({}, countries_1.CountriesData), this.CustomData)); this.country = (countryName) => this.countries()[countryName]; this.countryList = () => Object.keys(this.countries()); this.hasCountry = (name) => this.countryList() .map((country) => country.toLowerCase()) .includes(name.toLowerCase()); this.states = (countryName) => { var _a; return countryName ? (_a = this.countries()[countryName]) === null || _a === void 0 ? void 0 : _a.states : Object.values(this.countries()) .map((country) => country.states) .reduce((p, c) => (Object.assign(Object.assign({}, p), c)), {}); }; this.state = (countryName, stateName) => { var _a; return (_a = this.states(countryName)) === null || _a === void 0 ? void 0 : _a[stateName]; }; this.stateList = () => Object.values(this.countries()).reduce((p, c) => [...p, ...Object.keys(c.states)], []); this.hasState = (name, countryName) => { var _a; return (countryName ? Object.keys(((_a = this.country(countryName)) === null || _a === void 0 ? void 0 : _a.states) || {}) : this.stateList()) .map((state) => state.toLowerCase()) .includes(name.toLowerCase()); }; this.cities = (countryName, stateName) => { var _a; return countryName ? stateName ? ((_a = this.state(countryName, stateName)) === null || _a === void 0 ? void 0 : _a.cities) || [] : Object.values(this.states(countryName)) .map((state) => state.cities) .reduce((p, c) => p.concat(c), []) : Object.values(this.states(countryName)) .map((state) => state.cities) .reduce((p, c) => p.concat(c), []); }; this.cityList = () => Object.values(this.countries()) .map((country) => Object.values(country.states) .map((state) => (state === null || state === void 0 ? void 0 : state.cities) || []) .reduce((c, p) => c.concat(p), [])) .reduce((c, p) => c.concat(p), []); this.hasCity = (name, countryName, stateName) => { var _a; return (countryName ? stateName ? ((_a = this.state(countryName, stateName)) === null || _a === void 0 ? void 0 : _a.cities) || [] : Object.values(this.states(countryName) || {}) .map((state) => state.cities) .reduce((p, c) => p.concat(c), []) : this.cityList()) .map((city) => city.toLowerCase()) .includes(name.toLowerCase()); }; } } exports.EpicGeo = EpicGeo;