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
JavaScript
"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==