UNPKG

universal-geocoder

Version:

Universal geocoding abstraction server-side and client-side with multiple built-in providers

76 lines 3.23 kB
export var isBrowser = function () { return typeof window !== "undefined"; }; export 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; }, {}); }; export 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; }; /** * Decode from URL-safe base64 to true base64. */ export var decodeUrlSafeBase64 = function (safe) { return safe.replace(/-/g, "+").replace(/_/g, "/"); }; /** * Encode from true base64 to URL-safe base64. */ export var encodeUrlSafeBase64 = function (base64) { return base64.replace(/\+/g, "-").replace(/\//g, "_"); }; export var decodeBase64 = function (base64) { if (isBrowser()) { throw new Error("decodeBase64 can only be used in a Node environment."); } return Buffer.from(base64, "base64").toString(); }; // 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}"; export var isIpv4 = function (ip) { return new RegExp("^" + ipv4RegExp + "$").test(ip); }; // 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,})?"; export var isIpv6 = function (ip) { return new RegExp("^" + ipv6RegExp + "$").test(ip); }; // eslint-disable-next-line @typescript-eslint/ban-types export var getRequireFunc = function () { // eslint-disable-next-line camelcase return typeof __non_webpack_require__ === "function" ? // eslint-disable-next-line camelcase __non_webpack_require__ : require; }; //# sourceMappingURL=utils.js.map