universal-geocoder
Version:
Universal geocoding abstraction server-side and client-side with multiple built-in providers
88 lines • 3.85 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.getRequireFunc = exports.isIpv6 = exports.isIpv4 = exports.decodeBase64 = exports.encodeUrlSafeBase64 = exports.decodeUrlSafeBase64 = exports.flattenObject = exports.filterUndefinedObjectValues = exports.isBrowser = void 0;
var isBrowser = function () { return typeof window !== "undefined"; };
exports.isBrowser = isBrowser;
var filterUndefinedObjectValues = function (object) {
return Object.keys(object).reduce(function (acc, key) {
var filtered = acc;
var value = object[key];
if (value !== undefined) {
filtered[key] = value;
}
return filtered;
}, {});
};
exports.filterUndefinedObjectValues = filterUndefinedObjectValues;
var flattenObject = function (object) {
var flattened = {};
var isNested = function (value) {
var isArray = Array.isArray(value);
var type = Object.prototype.toString.call(value);
var isObject = type === "[object Object]" || type === "[object Array]";
if (!isArray && isObject && Object.keys(value).length) {
return true;
}
return false;
};
var step = function (nestedObject) {
Object.keys(nestedObject).forEach(function (key) {
var value = nestedObject[key];
if (undefined === value) {
return;
}
if (isNested(value)) {
step(value);
return;
}
flattened[key] = value;
});
};
step(object);
return flattened;
};
exports.flattenObject = flattenObject;
/**
* Decode from URL-safe base64 to true base64.
*/
var decodeUrlSafeBase64 = function (safe) {
return safe.replace(/-/g, "+").replace(/_/g, "/");
};
exports.decodeUrlSafeBase64 = decodeUrlSafeBase64;
/**
* Encode from true base64 to URL-safe base64.
*/
var encodeUrlSafeBase64 = function (base64) {
return base64.replace(/\+/g, "-").replace(/\//g, "_");
};
exports.encodeUrlSafeBase64 = encodeUrlSafeBase64;
var decodeBase64 = function (base64) {
if (exports.isBrowser()) {
throw new Error("decodeBase64 can only be used in a Node environment.");
}
return Buffer.from(base64, "base64").toString();
};
exports.decodeBase64 = decodeBase64;
// From https://github.com/sindresorhus/ip-regex
var ipv4RegExp = "(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)){3}";
var isIpv4 = function (ip) {
return new RegExp("^" + ipv4RegExp + "$").test(ip);
};
exports.isIpv4 = isIpv4;
// From https://github.com/sindresorhus/ip-regex
var ipv6Seg = "[a-fA-F\\d]{1,4}";
var ipv6RegExp = "((?:" + ipv6Seg + ":){7}(?:" + ipv6Seg + "|:)|(?:" + ipv6Seg + ":){6}(?:" + ipv4RegExp + "|:" + ipv6Seg + "|:)|(?:" + ipv6Seg + ":){5}(?::" + ipv4RegExp + "|(:" + ipv6Seg + "){1,2}|:)|(?:" + ipv6Seg + ":){4}(?:(:" + ipv6Seg + "){0,1}:" + ipv4RegExp + "|(:" + ipv6Seg + "){1,3}|:)|(?:" + ipv6Seg + ":){3}(?:(:" + ipv6Seg + "){0,2}:" + ipv4RegExp + "|(:" + ipv6Seg + "){1,4}|:)|(?:" + ipv6Seg + ":){2}(?:(:" + ipv6Seg + "){0,3}:" + ipv4RegExp + "|(:" + ipv6Seg + "){1,5}|:)|(?:" + ipv6Seg + ":){1}(?:(:" + ipv6Seg + "){0,4}:" + ipv4RegExp + "|(:" + ipv6Seg + "){1,6}|:)|(?::((?::" + ipv6Seg + "){0,5}:" + ipv4RegExp + "|(?::" + ipv6Seg + "){1,7}|:)))(%[0-9a-zA-Z]{1,})?";
var isIpv6 = function (ip) {
return new RegExp("^" + ipv6RegExp + "$").test(ip);
};
exports.isIpv6 = isIpv6;
// eslint-disable-next-line @typescript-eslint/ban-types
var getRequireFunc = function () {
// eslint-disable-next-line camelcase
return typeof __non_webpack_require__ === "function"
? // eslint-disable-next-line camelcase
__non_webpack_require__
: require;
};
exports.getRequireFunc = getRequireFunc;
//# sourceMappingURL=utils.js.map