UNPKG

kepler.gl

Version:

kepler.gl is a webgl based application to visualize large scale location data in the browser

91 lines (84 loc) 9.48 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.arrayMove = arrayMove; exports.containValidTime = containValidTime; exports.isHexWkb = isHexWkb; exports.notNullorUndefined = notNullorUndefined; exports.toArray = toArray; var _typeAnalyzer = require("type-analyzer"); // SPDX-License-Identifier: MIT // Copyright contributors to the kepler.gl project function notNullorUndefined(d) { return d !== undefined && d !== null; } /** * Check if string is a valid Well-known binary (WKB) in HEX format * https://en.wikipedia.org/wiki/Well-known_text_representation_of_geometry * * @param str input string * @returns true if string is a valid WKB in HEX format */ function isHexWkb(str) { if (!str) return false; // check if the length of the string is even and is at least 10 characters long if (str.length < 10 || str.length % 2 !== 0) { return false; } // check if first two characters are 00 or 01 if (!str.startsWith('00') && !str.startsWith('01')) { return false; } // check if the rest of the string is a valid hex return /^[0-9a-fA-F]+$/.test(str.slice(2)); } /** * Converts non-arrays to arrays. Leaves arrays alone. Converts * undefined values to empty arrays ([] instead of [undefined]). * Otherwise, just returns [item] for non-array items. * * @param {*} item * @returns {array} boom! much array. very indexed. so useful. */ function toArray(item) { if (Array.isArray(item)) { return item; } if (typeof item === 'undefined' || item === null) { return []; } return [item]; } /** * Move an array item to a different position. Returns a new array with the item moved to the new position. */ function arrayMove(array, from, to) { var newArray = array.slice(); newArray.splice(to < 0 ? newArray.length + to : to, 0, newArray.splice(from, 1)[0]); return newArray; } /** * Check whether geojson linestring's 4th coordinate is 1) not timestamp 2) unix time stamp 3) real date time * @param timestamps array to be tested if its elements are timestamp * @returns the type of timestamp: unix/datetime/invalid(not timestamp) */ function containValidTime(timestamps) { var formattedTimeStamps = timestamps.map(function (ts) { return { ts: ts }; }); var ignoredDataTypes = Object.keys(_typeAnalyzer.DATA_TYPES).filter(function (type) { return ![_typeAnalyzer.DATA_TYPES.TIME, _typeAnalyzer.DATA_TYPES.DATETIME, _typeAnalyzer.DATA_TYPES.DATE].includes(type); }); // ignore all types but TIME to improve performance var analyzedType = _typeAnalyzer.Analyzer.computeColMeta(formattedTimeStamps, [], { ignoredDataTypes: ignoredDataTypes })[0]; if (!analyzedType || analyzedType.category !== 'TIME') { return null; } return analyzedType; } //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfdHlwZUFuYWx5emVyIiwicmVxdWlyZSIsIm5vdE51bGxvclVuZGVmaW5lZCIsImQiLCJ1bmRlZmluZWQiLCJpc0hleFdrYiIsInN0ciIsImxlbmd0aCIsInN0YXJ0c1dpdGgiLCJ0ZXN0Iiwic2xpY2UiLCJ0b0FycmF5IiwiaXRlbSIsIkFycmF5IiwiaXNBcnJheSIsImFycmF5TW92ZSIsImFycmF5IiwiZnJvbSIsInRvIiwibmV3QXJyYXkiLCJzcGxpY2UiLCJjb250YWluVmFsaWRUaW1lIiwidGltZXN0YW1wcyIsImZvcm1hdHRlZFRpbWVTdGFtcHMiLCJtYXAiLCJ0cyIsImlnbm9yZWREYXRhVHlwZXMiLCJPYmplY3QiLCJrZXlzIiwiREFUQV9UWVBFUyIsImZpbHRlciIsInR5cGUiLCJUSU1FIiwiREFURVRJTUUiLCJEQVRFIiwiaW5jbHVkZXMiLCJhbmFseXplZFR5cGUiLCJBbmFseXplciIsImNvbXB1dGVDb2xNZXRhIiwiY2F0ZWdvcnkiXSwic291cmNlcyI6WyIuLi9zcmMvZGF0YS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTUlUXG4vLyBDb3B5cmlnaHQgY29udHJpYnV0b3JzIHRvIHRoZSBrZXBsZXIuZ2wgcHJvamVjdFxuXG5pbXBvcnQge0FuYWx5emVyLCBEQVRBX1RZUEVTfSBmcm9tICd0eXBlLWFuYWx5emVyJztcblxuaW1wb3J0IHtGaWVsZH0gZnJvbSAnQGtlcGxlci5nbC90eXBlcyc7XG5cbmV4cG9ydCBmdW5jdGlvbiBub3ROdWxsb3JVbmRlZmluZWQ8VCBleHRlbmRzIE5vbk51bGxhYmxlPGFueT4+KGQ6IFQgfCBudWxsIHwgdW5kZWZpbmVkKTogZCBpcyBUIHtcbiAgcmV0dXJuIGQgIT09IHVuZGVmaW5lZCAmJiBkICE9PSBudWxsO1xufVxuXG4vKipcbiAqIENoZWNrIGlmIHN0cmluZyBpcyBhIHZhbGlkIFdlbGwta25vd24gYmluYXJ5IChXS0IpIGluIEhFWCBmb3JtYXRcbiAqIGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1dlbGwta25vd25fdGV4dF9yZXByZXNlbnRhdGlvbl9vZl9nZW9tZXRyeVxuICpcbiAqIEBwYXJhbSBzdHIgaW5wdXQgc3RyaW5nXG4gKiBAcmV0dXJucyB0cnVlIGlmIHN0cmluZyBpcyBhIHZhbGlkIFdLQiBpbiBIRVggZm9ybWF0XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc0hleFdrYihzdHI6IHN0cmluZyB8IG51bGwpOiBib29sZWFuIHtcbiAgaWYgKCFzdHIpIHJldHVybiBmYWxzZTtcbiAgLy8gY2hlY2sgaWYgdGhlIGxlbmd0aCBvZiB0aGUgc3RyaW5nIGlzIGV2ZW4gYW5kIGlzIGF0IGxlYXN0IDEwIGNoYXJhY3RlcnMgbG9uZ1xuICBpZiAoc3RyLmxlbmd0aCA8IDEwIHx8IHN0ci5sZW5ndGggJSAyICE9PSAwKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIC8vIGNoZWNrIGlmIGZpcnN0IHR3byBjaGFyYWN0ZXJzIGFyZSAwMCBvciAwMVxuICBpZiAoIXN0ci5zdGFydHNXaXRoKCcwMCcpICYmICFzdHIuc3RhcnRzV2l0aCgnMDEnKSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICAvLyBjaGVjayBpZiB0aGUgcmVzdCBvZiB0aGUgc3RyaW5nIGlzIGEgdmFsaWQgaGV4XG4gIHJldHVybiAvXlswLTlhLWZBLUZdKyQvLnRlc3Qoc3RyLnNsaWNlKDIpKTtcbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBub24tYXJyYXlzIHRvIGFycmF5cy4gIExlYXZlcyBhcnJheXMgYWxvbmUuICBDb252ZXJ0c1xuICogdW5kZWZpbmVkIHZhbHVlcyB0byBlbXB0eSBhcnJheXMgKFtdIGluc3RlYWQgb2YgW3VuZGVmaW5lZF0pLlxuICogT3RoZXJ3aXNlLCBqdXN0IHJldHVybnMgW2l0ZW1dIGZvciBub24tYXJyYXkgaXRlbXMuXG4gKlxuICogQHBhcmFtIHsqfSBpdGVtXG4gKiBAcmV0dXJucyB7YXJyYXl9IGJvb20hIG11Y2ggYXJyYXkuIHZlcnkgaW5kZXhlZC4gc28gdXNlZnVsLlxuICovXG5leHBvcnQgZnVuY3Rpb24gdG9BcnJheTxUPihpdGVtOiBUIHwgVFtdKTogVFtdIHtcbiAgaWYgKEFycmF5LmlzQXJyYXkoaXRlbSkpIHtcbiAgICByZXR1cm4gaXRlbTtcbiAgfVxuXG4gIGlmICh0eXBlb2YgaXRlbSA9PT0gJ3VuZGVmaW5lZCcgfHwgaXRlbSA9PT0gbnVsbCkge1xuICAgIHJldHVybiBbXTtcbiAgfVxuXG4gIHJldHVybiBbaXRlbV07XG59XG5cbi8qKlxuICogTW92ZSBhbiBhcnJheSBpdGVtIHRvIGEgZGlmZmVyZW50IHBvc2l0aW9uLiBSZXR1cm5zIGEgbmV3IGFycmF5IHdpdGggdGhlIGl0ZW0gbW92ZWQgdG8gdGhlIG5ldyBwb3NpdGlvbi5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFycmF5TW92ZTxUPihhcnJheTogVFtdLCBmcm9tOiBudW1iZXIsIHRvOiBudW1iZXIpOiBUW10ge1xuICBjb25zdCBuZXdBcnJheSA9IGFycmF5LnNsaWNlKCk7XG4gIG5ld0FycmF5LnNwbGljZSh0byA8IDAgPyBuZXdBcnJheS5sZW5ndGggKyB0byA6IHRvLCAwLCBuZXdBcnJheS5zcGxpY2UoZnJvbSwgMSlbMF0pO1xuXG4gIHJldHVybiBuZXdBcnJheTtcbn1cblxuLyoqXG4gKiBDaGVjayB3aGV0aGVyIGdlb2pzb24gbGluZXN0cmluZydzIDR0aCBjb29yZGluYXRlIGlzIDEpIG5vdCB0aW1lc3RhbXAgMikgdW5peCB0aW1lIHN0YW1wIDMpIHJlYWwgZGF0ZSB0aW1lXG4gKiBAcGFyYW0gdGltZXN0YW1wcyBhcnJheSB0byBiZSB0ZXN0ZWQgaWYgaXRzIGVsZW1lbnRzIGFyZSB0aW1lc3RhbXBcbiAqIEByZXR1cm5zIHRoZSB0eXBlIG9mIHRpbWVzdGFtcDogdW5peC9kYXRldGltZS9pbnZhbGlkKG5vdCB0aW1lc3RhbXApXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjb250YWluVmFsaWRUaW1lKHRpbWVzdGFtcHM6IHN0cmluZ1tdKTogRmllbGQgfCBudWxsIHtcbiAgY29uc3QgZm9ybWF0dGVkVGltZVN0YW1wcyA9IHRpbWVzdGFtcHMubWFwKHRzID0+ICh7dHN9KSk7XG4gIGNvbnN0IGlnbm9yZWREYXRhVHlwZXMgPSBPYmplY3Qua2V5cyhEQVRBX1RZUEVTKS5maWx0ZXIoXG4gICAgdHlwZSA9PiAhW0RBVEFfVFlQRVMuVElNRSwgREFUQV9UWVBFUy5EQVRFVElNRSwgREFUQV9UWVBFUy5EQVRFXS5pbmNsdWRlcyh0eXBlKVxuICApO1xuXG4gIC8vIGlnbm9yZSBhbGwgdHlwZXMgYnV0IFRJTUUgdG8gaW1wcm92ZSBwZXJmb3JtYW5jZVxuICBjb25zdCBhbmFseXplZFR5cGUgPSBBbmFseXplci5jb21wdXRlQ29sTWV0YShmb3JtYXR0ZWRUaW1lU3RhbXBzLCBbXSwge2lnbm9yZWREYXRhVHlwZXN9KVswXTtcblxuICBpZiAoIWFuYWx5emVkVHlwZSB8fCBhbmFseXplZFR5cGUuY2F0ZWdvcnkgIT09ICdUSU1FJykge1xuICAgIHJldHVybiBudWxsO1xuICB9XG4gIHJldHVybiBhbmFseXplZFR5cGU7XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7QUFHQSxJQUFBQSxhQUFBLEdBQUFDLE9BQUE7QUFIQTtBQUNBOztBQU1PLFNBQVNDLGtCQUFrQkEsQ0FBNkJDLENBQXVCLEVBQVU7RUFDOUYsT0FBT0EsQ0FBQyxLQUFLQyxTQUFTLElBQUlELENBQUMsS0FBSyxJQUFJO0FBQ3RDOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ08sU0FBU0UsUUFBUUEsQ0FBQ0MsR0FBa0IsRUFBVztFQUNwRCxJQUFJLENBQUNBLEdBQUcsRUFBRSxPQUFPLEtBQUs7RUFDdEI7RUFDQSxJQUFJQSxHQUFHLENBQUNDLE1BQU0sR0FBRyxFQUFFLElBQUlELEdBQUcsQ0FBQ0MsTUFBTSxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUU7SUFDM0MsT0FBTyxLQUFLO0VBQ2Q7RUFDQTtFQUNBLElBQUksQ0FBQ0QsR0FBRyxDQUFDRSxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQ0YsR0FBRyxDQUFDRSxVQUFVLENBQUMsSUFBSSxDQUFDLEVBQUU7SUFDbEQsT0FBTyxLQUFLO0VBQ2Q7RUFDQTtFQUNBLE9BQU8sZ0JBQWdCLENBQUNDLElBQUksQ0FBQ0gsR0FBRyxDQUFDSSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDNUM7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNPLFNBQVNDLE9BQU9BLENBQUlDLElBQWEsRUFBTztFQUM3QyxJQUFJQyxLQUFLLENBQUNDLE9BQU8sQ0FBQ0YsSUFBSSxDQUFDLEVBQUU7SUFDdkIsT0FBT0EsSUFBSTtFQUNiO0VBRUEsSUFBSSxPQUFPQSxJQUFJLEtBQUssV0FBVyxJQUFJQSxJQUFJLEtBQUssSUFBSSxFQUFFO0lBQ2hELE9BQU8sRUFBRTtFQUNYO0VBRUEsT0FBTyxDQUFDQSxJQUFJLENBQUM7QUFDZjs7QUFFQTtBQUNBO0FBQ0E7QUFDTyxTQUFTRyxTQUFTQSxDQUFJQyxLQUFVLEVBQUVDLElBQVksRUFBRUMsRUFBVSxFQUFPO0VBQ3RFLElBQU1DLFFBQVEsR0FBR0gsS0FBSyxDQUFDTixLQUFLLENBQUMsQ0FBQztFQUM5QlMsUUFBUSxDQUFDQyxNQUFNLENBQUNGLEVBQUUsR0FBRyxDQUFDLEdBQUdDLFFBQVEsQ0FBQ1osTUFBTSxHQUFHVyxFQUFFLEdBQUdBLEVBQUUsRUFBRSxDQUFDLEVBQUVDLFFBQVEsQ0FBQ0MsTUFBTSxDQUFDSCxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7RUFFbkYsT0FBT0UsUUFBUTtBQUNqQjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ08sU0FBU0UsZ0JBQWdCQSxDQUFDQyxVQUFvQixFQUFnQjtFQUNuRSxJQUFNQyxtQkFBbUIsR0FBR0QsVUFBVSxDQUFDRSxHQUFHLENBQUMsVUFBQUMsRUFBRTtJQUFBLE9BQUs7TUFBQ0EsRUFBRSxFQUFGQTtJQUFFLENBQUM7RUFBQSxDQUFDLENBQUM7RUFDeEQsSUFBTUMsZ0JBQWdCLEdBQUdDLE1BQU0sQ0FBQ0MsSUFBSSxDQUFDQyx3QkFBVSxDQUFDLENBQUNDLE1BQU0sQ0FDckQsVUFBQUMsSUFBSTtJQUFBLE9BQUksQ0FBQyxDQUFDRix3QkFBVSxDQUFDRyxJQUFJLEVBQUVILHdCQUFVLENBQUNJLFFBQVEsRUFBRUosd0JBQVUsQ0FBQ0ssSUFBSSxDQUFDLENBQUNDLFFBQVEsQ0FBQ0osSUFBSSxDQUFDO0VBQUEsQ0FDakYsQ0FBQzs7RUFFRDtFQUNBLElBQU1LLFlBQVksR0FBR0Msc0JBQVEsQ0FBQ0MsY0FBYyxDQUFDZixtQkFBbUIsRUFBRSxFQUFFLEVBQUU7SUFBQ0csZ0JBQWdCLEVBQWhCQTtFQUFnQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7RUFFNUYsSUFBSSxDQUFDVSxZQUFZLElBQUlBLFlBQVksQ0FBQ0csUUFBUSxLQUFLLE1BQU0sRUFBRTtJQUNyRCxPQUFPLElBQUk7RUFDYjtFQUNBLE9BQU9ILFlBQVk7QUFDckIiLCJpZ25vcmVMaXN0IjpbXX0=