UNPKG

curated-node

Version:

Not a framework. Not a module. Just a bunch of Node.js packages you most likely familiar with and probably already use, bundled together in a modular fashion.

135 lines 16.5 kB
"use strict"; var __extends = (this && this.__extends) || (function () { var extendStatics = function (d, b) { extendStatics = Object.setPrototypeOf || ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; return extendStatics(d, b); }; return function (d, b) { extendStatics(d, b); function __() { this.constructor = d; } d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); }; })(); Object.defineProperty(exports, "__esModule", { value: true }); exports.GeolocationProvider = exports.State = exports.Country = exports.Continent = void 0; var Currency_1 = require("./Currency"); var _BaseProvider_1 = require("../_BaseProvider"); var ld = require("location-database"); var Continent = (function () { function Continent(id, alpha2, name) { this.id = id; this.alpha2 = alpha2; this.name = name; } return Continent; }()); exports.Continent = Continent; var Country = (function () { function Country(id, alpha2, alpha3, name, nativeName, capital, dialCode, emoji, emojiUnicode, continentId, primaryCurrencyAlpha3) { this.id = id; this.alpha2 = alpha2; this.alpha3 = alpha3; this.name = name; this.nativeName = nativeName; this.capital = capital; this.dialCode = dialCode; this.emoji = emoji; this.emojiUnicode = emojiUnicode; this.continentId = continentId; this.primaryCurrencyAlpha3 = primaryCurrencyAlpha3; this.primaryCurrency = Currency_1.Currency.init(primaryCurrencyAlpha3); } return Country; }()); exports.Country = Country; var State = (function () { function State(id, alpha2, name, countryId) { this.id = id; this.alpha2 = alpha2; this.name = name; this.countryId = countryId; } return State; }()); exports.State = State; var GeolocationProvider = (function (_super) { __extends(GeolocationProvider, _super); function GeolocationProvider() { var _this = _super.call(this, GeolocationProvider, {}) || this; _this._continents = []; _this._countries = []; _this._states = []; _this._countryAlpha2IdMap = {}; _this._continents.push(new Continent(1, "AF", "Africa"), new Continent(2, "AN", "Antarctica"), new Continent(3, "AS", "Asia"), new Continent(4, "EU", "Europe"), new Continent(5, "NA", "North America"), new Continent(6, "OC", "Oceania"), new Continent(7, "SA", "South America")); var data = ld.getAll(); var alpha2List = Object.keys(data); var _loop_1 = function (alpha2) { var country = new Country(data[alpha2].id, data[alpha2].iso2, data[alpha2].iso3, data[alpha2].name, data[alpha2].native, data[alpha2].capital, data[alpha2].phone_code ? "+" + data[alpha2].phone_code.replace(/^(\+)/, "") : null, data[alpha2].emoji, data[alpha2].emojiU, (this_1._continents.find(function (c) { return c.alpha2 === data[alpha2].continent; }) || { id: null }).id, data[alpha2].currency); if (data[alpha2].states) { for (var _i = 0, _a = data[alpha2].states; _i < _a.length; _i++) { var stateData = _a[_i]; this_1._states.push(new State(stateData.id, stateData.state_code, stateData.name, stateData.country_id)); } } this_1._countries.push(country); this_1._countryAlpha2IdMap[alpha2] = data[alpha2].id; }; var this_1 = this; for (var _i = 0, alpha2List_1 = alpha2List; _i < alpha2List_1.length; _i++) { var alpha2 = alpha2List_1[_i]; _loop_1(alpha2); } return _this; } Object.defineProperty(GeolocationProvider.prototype, "continents", { get: function () { return this._continents; }, enumerable: false, configurable: true }); Object.defineProperty(GeolocationProvider.prototype, "countries", { get: function () { return this._countries; }, enumerable: false, configurable: true }); Object.defineProperty(GeolocationProvider.prototype, "states", { get: function () { return this._states; }, enumerable: false, configurable: true }); GeolocationProvider.prototype.getContinentByAlpha2 = function (alpha2) { return this._continents.find(function (c) { return c.alpha2 === alpha2; }); }; GeolocationProvider.prototype.getCountryByAlpha2 = function (alpha2) { return this._countries.find(function (c) { return c.alpha2 === alpha2; }); }; GeolocationProvider.prototype.getCountryById = function (id) { var _a; return (_a = this._countries.find(function (c) { return c.id === id; })) !== null && _a !== void 0 ? _a : null; }; GeolocationProvider.prototype.getStatesByCountryAlpha2 = function (alpha2) { var _this = this; return this._states.filter(function (s) { return s.countryId === _this._countryAlpha2IdMap[alpha2]; }); }; GeolocationProvider.prototype.getStatesByCountryId = function (id) { return this._states.filter(function (s) { return s.countryId === id; }); }; GeolocationProvider.prototype.getStateById = function (id) { var _a; return (_a = this._states.find(function (s) { return s.id === id; })) !== null && _a !== void 0 ? _a : null; }; return GeolocationProvider; }(_BaseProvider_1._BaseProvider)); exports.GeolocationProvider = GeolocationProvider; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiR2VvbG9jYXRpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcHJvdmlkZXJzL0dlb2xvY2F0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSx1Q0FBcUM7QUFDckMsa0RBQWdEO0FBQ2hELElBQU0sRUFBRSxHQUFHLE9BQU8sQ0FBQyxtQkFBbUIsQ0FBQyxDQUFBO0FBRXZDO0lBQ0UsbUJBQ1csRUFBVSxFQUNWLE1BQWMsRUFDZCxJQUFZO1FBRlosT0FBRSxHQUFGLEVBQUUsQ0FBUTtRQUNWLFdBQU0sR0FBTixNQUFNLENBQVE7UUFDZCxTQUFJLEdBQUosSUFBSSxDQUFRO0lBQ3BCLENBQUM7SUFDTixnQkFBQztBQUFELENBQUMsQUFORCxJQU1DO0FBTlksOEJBQVM7QUFRdEI7SUFHRSxpQkFDVyxFQUFVLEVBQ1YsTUFBYyxFQUNkLE1BQWMsRUFDZCxJQUFZLEVBQ1osVUFBa0IsRUFDbEIsT0FBZSxFQUNmLFFBQXVCLEVBQ3ZCLEtBQWEsRUFDYixZQUFvQixFQUNwQixXQUEwQixFQUMxQixxQkFBNkI7UUFWN0IsT0FBRSxHQUFGLEVBQUUsQ0FBUTtRQUNWLFdBQU0sR0FBTixNQUFNLENBQVE7UUFDZCxXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQ2QsU0FBSSxHQUFKLElBQUksQ0FBUTtRQUNaLGVBQVUsR0FBVixVQUFVLENBQVE7UUFDbEIsWUFBTyxHQUFQLE9BQU8sQ0FBUTtRQUNmLGFBQVEsR0FBUixRQUFRLENBQWU7UUFDdkIsVUFBSyxHQUFMLEtBQUssQ0FBUTtRQUNiLGlCQUFZLEdBQVosWUFBWSxDQUFRO1FBQ3BCLGdCQUFXLEdBQVgsV0FBVyxDQUFlO1FBQzFCLDBCQUFxQixHQUFyQixxQkFBcUIsQ0FBUTtRQUV0QyxJQUFJLENBQUMsZUFBZSxHQUFHLG1CQUFRLENBQUMsSUFBSSxDQUFDLHFCQUFxQixDQUFDLENBQUE7SUFDN0QsQ0FBQztJQUNILGNBQUM7QUFBRCxDQUFDLEFB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LFVBQUMsQ0FBQyxJQUFLLE9BQUEsQ0FBQyxDQUFDLEVBQUUsS0FBSyxFQUFFLEVBQVgsQ0FBVyxDQUFDLG1DQUFJLElBQUksQ0FBQTtJQUN6RCxDQUFDO0lBRU0sc0RBQXdCLEdBQS9CLFVBQWdDLE1BQWM7UUFBOUMsaUJBSUM7UUFIQyxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUN4QixVQUFDLENBQUMsSUFBSyxPQUFBLENBQUMsQ0FBQyxTQUFTLEtBQUssS0FBSSxDQUFDLG1CQUFtQixDQUFDLE1BQU0sQ0FBQyxFQUFoRCxDQUFnRCxDQUN4RCxDQUFBO0lBQ0gsQ0FBQztJQUVNLGtEQUFvQixHQUEzQixVQUE0QixFQUFVO1FBQ3BDLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsVUFBQyxDQUFDLElBQUssT0FBQSxDQUFDLENBQUMsU0FBUyxLQUFLLEVBQUUsRUFBbEIsQ0FBa0IsQ0FBQyxDQUFBO0lBQ3ZELENBQUM7SUFFTSwwQ0FBWSxHQUFuQixVQUFvQixFQUFVOztRQUM1QixhQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFVBQUMsQ0FBQyxJQUFLLE9BQUEsQ0FBQyxDQUFDLEVBQUUsS0FBSyxFQUFFLEVBQVgsQ0FBVyxDQUFDLG1DQUFJLElBQUksQ0FBQTtJQUN0RCxDQUFDO0lBQ0gsMEJBQUM7QUFBRCxDQUFDLEFBcEdELENBQXlDLDZCQUFhLEdBb0dyRDtBQXBHWSxrREFBbUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDdXJyZW5jeSB9IGZyb20gXCIuL0N1cnJlbmN5XCJcbmltcG9ydCB7IF9CYXNlUHJvdmlkZXIgfSBmcm9tIFwiLi4vX0Jhc2VQcm92aWRlclwiXG5jb25zdCBsZCA9IHJlcXVpcmUoXCJsb2NhdGlvbi1kYXRhYmFzZVwiKVxuXG5leHBvcnQgY2xhc3MgQ29udGluZW50IHtcbiAgY29uc3RydWN0b3IoXG4gICAgcmVhZG9ubHkgaWQ6IG51bWJlcixcbiAgICByZWFkb25seSBhbHBoYTI6IHN0cmluZyxcbiAgICByZWFkb25seSBuYW1lOiBzdHJpbmdcbiAgKSB7fVxufVxuXG5leHBvcnQgY2xhc3MgQ291bnRyeSB7XG4gIHJlYWRvbmx5IHByaW1hcnlDdXJyZW5jeTogQ3VycmVuY3kgfCBudWxsXG5cbiAgY29uc3RydWN0b3IoXG4gICAgcmVhZG9ubHkgaWQ6IG51bWJlcixcbiAgICByZWFkb25seSBhbHBoYTI6IHN0cmluZyxcbiAgICByZWFkb25seSBhbHBoYTM6IHN0cmluZyxcbiAgICByZWFkb25seSBuYW1lOiBzdHJpbmcsXG4gICAgcmVhZG9ubHkgbmF0aXZlTmFtZTogc3RyaW5nLFxuICAgIHJlYWRvbmx5IGNhcGl0YWw6IHN0cmluZyxcbiAgICByZWFkb25seSBkaWFsQ29kZTogc3RyaW5nIHwgbnVsbCxcbiAgICByZWFkb25seSBlbW9qaTogc3RyaW5nLFxuICAgIHJlYWRvbmx5IGVtb2ppVW5pY29kZTogc3RyaW5nLFxuICAgIHJlYWRvbmx5IGNvbnRpbmVudElkOiBudW1iZXIgfCBudWxsLFxuICAgIHJlYWRvbmx5IHByaW1hcnlDdXJyZW5jeUFscGhhMzogc3RyaW5nXG4gICkge1xuICAgIHRoaXMucHJpbWFyeUN1cnJlbmN5ID0gQ3VycmVuY3kuaW5pdChwcmltYXJ5Q3VycmVuY3lBbHBoYTMpXG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIFN0YXRlIHtcbiAgY29uc3RydWN0b3IoXG4gICAgcmVhZG9ubHkgaWQ6IG51bWJlcixcbiAgICByZWFkb25seSBhbHBoYTI6IHN0cmluZyxcbiAgICByZWFkb25seSBuYW1lOiBzdHJpbmcsXG4gICAgcmVhZG9ubHkgY291bnRyeUlkOiBudW1iZXIgfCBudWxsXG4gICkge31cbn1cblxuZXhwb3J0IGNsYXNzIEdlb2xvY2F0aW9uUHJvdmlkZXIgZXh0ZW5kcyBfQmFzZVByb3ZpZGVyPFxuICBHZW9sb2NhdGlvblByb3ZpZGVyLFxuICB7fVxuPiB7XG4gIHByb3RlY3RlZCBfY29udGluZW50czogQXJyYXk8Q29udGluZW50PiA9IFtdXG4gIHByb3RlY3RlZCBfY291bnRyaWVzOiBBcnJheTxDb3VudHJ5PiA9IFtdXG4gIHByb3RlY3RlZCBfc3RhdGVzOiBBcnJheTxTdGF0ZT4gPSBbXVxuICBwcm90ZWN0ZWQgX2NvdW50cnlBbHBoYTJJZE1hcDogeyBbYWxwaGEyOiBzdHJpbmddOiBudW1iZXIgfSA9IHt9XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoR2VvbG9jYXRpb25Qcm92aWRlciwge30pXG4gICAgdGhpcy5fY29udGluZW50cy5wdXNoKFxuICAgICAgbmV3IENvbnRpbmVudCgxLCBcIkFGXCIsIFwiQWZyaWNhXCIpLFxuICAgICAgbmV3IENvbnRpbmVudCgyLCBcIkFOXCIsIFwiQW50YXJjdGljYVwiKSxcbiAgICAgIG5ldyBDb250aW5lbnQoMywgXCJBU1wiLCBcIkFzaWFcIiksXG4gICAgICBuZXcgQ29udGluZW50KDQsIFwiRVVcIiwgXCJFdXJvcGVcIiksXG4gICAgICBuZXcgQ29udGluZW50KDUsIFwiTkFcIiwgXCJOb3J0aCBBbWVyaWNhXCIpLFxuICAgICAgbmV3IENvbnRpbmVudCg2LCBcIk9DXCIsIFwiT2NlYW5pYVwiKSxcbiAgICAgIG5ldyBDb250aW5lbnQoNywgXCJTQVwiLCBcIlNvdXRoIEFtZXJpY2FcIilcbiAgICApXG5cbiAgICBjb25zdCBkYXRhID0gbGQuZ2V0QWxsKClcbiAgICBjb25zdCBhbHBoYTJMaXN0ID0gT2JqZWN0LmtleXMoZGF0YSlcblxuICAgIGZvciAoY29uc3QgYWxwaGEyIG9mIGFscGhhMkxpc3QpIHtcbiAgICAgIGNvbnN0IGNvdW50cnkgPSBuZXcgQ291bnRyeShcbiAgICAgICAgZGF0YVthbHBoYTJdLmlkLFxuICAgICAgICBkYXRhW2FscGhhMl0uaXNvMixcbiAgICAgICAgZGF0YVthbHBoYTJdLmlzbzMsXG4gICAgICAgIGRhdGFbYWxwaGEyXS5uYW1lLFxuICAgICAgICBkYXRhW2FscGhhMl0ubmF0aXZlLFxuICAgICAgICBkYXRhW2FscGhhMl0uY2FwaXRhbCxcbiAgICAgICAgZGF0YVthbHBoYTJdLnBob25lX2NvZGVcbiAgICAgICAgICA/IGArJHtkYXRhW2FscGhhMl0ucGhvbmVfY29kZS5yZXBsYWNlKC9eKFxcKykvLCBcIlwiKX1gXG4gICAgICAgICAgOiBudWxsLFxuICAgICAgICBkYXRhW2FscGhhMl0uZW1vamksXG4gICAgICAgIGRhdGFbYWxwaGEyXS5lbW9qaVUsXG4gICAgICAgIChcbiAgICAgICAgICB0aGlzLl9jb250aW5lbnRzLmZpbmQoKGMpID0+IGMuYWxwaGEyID09PSBkYXRhW2FscGhhMl0uY29udGluZW50KSB8fCB7XG4gICAgICAgICAgICBpZDogbnVsbFxuICAgICAgICAgIH1cbiAgICAgICAgKS5pZCxcbiAgICAgICAgZGF0YVthbHBoYTJdLmN1cnJlbmN5XG4gICAgICApXG5cbiAgICAgIGlmIChkYXRhW2FscGhhMl0uc3RhdGVzKSB7XG4gICAgICAgIGZvciAoY29uc3Qgc3RhdGVEYXRhIG9mIGRhdGFbYWxwaGEyXS5zdGF0ZXMpIHtcbiAgICAgICAgICB0aGlzLl9zdGF0ZXMucHVzaChcbiAgICAgICAgICAgIG5ldyBTdGF0ZShcbiAgICAgICAgICAgICAgc3RhdGVEYXRhLmlkLFxuICAgICAgICAgICAgICBzdGF0ZURhdGEuc3RhdGVfY29kZSxcbiAgICAgICAgICAgICAgc3RhdGVEYXRhLm5hbWUsXG4gICAgICAgICAgICAgIHN0YXRlRGF0YS5jb3VudHJ5X2lkXG4gICAgICAgICAgICApXG4gICAgICAgICAgKVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHRoaXMuX2NvdW50cmllcy5wdXNoKGNvdW50cnkpXG4gICAgICB0aGlzLl9jb3VudHJ5QWxwaGEySWRNYXBbYWxwaGEyXSA9IGRhdGFbYWxwaGEyXS5pZFxuICAgIH1cbiAgfVxuXG4gIGdldCBjb250aW5lbnRzKCkge1xuICAgIHJldHVybiB0aGlzLl9jb250aW5lbnRzXG4gIH1cblxuICBnZXQgY291bnRyaWVzKCkge1xuICAgIHJldHVybiB0aGlzLl9jb3VudHJpZXNcbiAgfVxuXG4gIGdldCBzdGF0ZXMoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3N0YXRlc1xuICB9XG5cbiAgcHVibGljIGdldENvbnRpbmVudEJ5QWxwaGEyKGFscGhhMjogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHRoaXMuX2NvbnRpbmVudHMuZmluZCgoYykgPT4gYy5hbHBoYTIgPT09IGFscGhhMilcbiAgfVxuXG4gIHB1YmxpYyBnZXRDb3VudHJ5QnlBbHBoYTIoYWxwaGEyOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gdGhpcy5fY291bnRyaWVzLmZpbmQoKGMpID0+IGMuYWxwaGEyID09PSBhbHBoYTIpXG4gIH1cblxuICBwdWJsaWMgZ2V0Q291bnRyeUJ5SWQoaWQ6IG51bWJlcikge1xuICAgIHJldHVybiB0aGlzLl9jb3VudHJpZXMuZmluZCgoYykgPT4gYy5pZCA9PT0gaWQpID8/IG51bGxcbiAgfVxuXG4gIHB1YmxpYyBnZXRTdGF0ZXNCeUNvdW50cnlBbHBoYTIoYWxwaGEyOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gdGhpcy5fc3RhdGVzLmZpbHRlcihcbiAgICAgIChzKSA9PiBzLmNvdW50cnlJZCA9PT0gdGhpcy5fY291bnRyeUFscGhhMklkTWFwW2FscGhhMl1cbiAgICApXG4gIH1cblxuICBwdWJsaWMgZ2V0U3RhdGVzQnlDb3VudHJ5SWQoaWQ6IG51bWJlcikge1xuICAgIHJldHVybiB0aGlzLl9zdGF0ZXMuZmlsdGVyKChzKSA9PiBzLmNvdW50cnlJZCA9PT0gaWQpXG4gIH1cblxuICBwdWJsaWMgZ2V0U3RhdGVCeUlkKGlkOiBudW1iZXIpIHtcbiAgICByZXR1cm4gdGhpcy5fc3RhdGVzLmZpbmQoKHMpID0+IHMuaWQgPT09IGlkKSA/PyBudWxsXG4gIH1cbn1cbiJdfQ==