UNPKG

kepler.gl

Version:

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

74 lines (70 loc) 11.7 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports.parseRasterMetadata = parseRasterMetadata; var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof")); // SPDX-License-Identifier: MIT // Copyright contributors to the kepler.gl project // Define these as regex to allow any semver major version 1 var EO_EXT_ID = /https:\/\/stac-extensions.github.io\/eo\/v1[\d.]+\/schema.json/; var RASTER_EXT_ID = /https:\/\/stac-extensions.github.io\/raster\/v1[\d.]+\/schema.json/; var ITEM_ASSETS_EXT_ID = /https:\/\/stac-extensions.github.io\/item-assets\/v1[\d.]+\/schema.json/; function parseRasterMetadata(metadata, options) { if (!metadata || (0, _typeof2["default"])(metadata) !== 'object') { return null; } var error = validateSTAC(metadata, options); if (error !== null) { return error; } return metadata; } // eslint-disable-next-line complexity function validateSTAC(stac, options) { var _stac$stac_version; var _options$allowCollect = options.allowCollections, allowCollections = _options$allowCollect === void 0 ? false : _options$allowCollect; // Note: If a STAC object fails validation, it will silently fail if (typeof stac === 'string' || typeof stac === 'boolean' || typeof stac === 'number' || Array.isArray(stac) || !stac) { return Error('Metadata must be an object.'); } if (!allowCollections && (stac === null || stac === void 0 ? void 0 : stac.type) === 'Collection' || (stac === null || stac === void 0 ? void 0 : stac.type) === 'Catalog') { return Error('Custom STAC Collections and Catalogs are not supported.'); } if ((stac === null || stac === void 0 || (_stac$stac_version = stac.stac_version) === null || _stac$stac_version === void 0 ? void 0 : _stac$stac_version[0]) !== '1') { return Error('STAC versions before 1.0.0 not supported.'); } if ((stac === null || stac === void 0 ? void 0 : stac.type) !== 'Feature' && (stac === null || stac === void 0 ? void 0 : stac.type) !== 'Collection') { return Error('Not a STAC Item or Collection.'); } var isCollection = (stac === null || stac === void 0 ? void 0 : stac.type) === 'Collection'; var required_extensions = [EO_EXT_ID, RASTER_EXT_ID]; if (isCollection) { required_extensions.push(ITEM_ASSETS_EXT_ID); } if (!Array.isArray(stac.stac_extensions) || !stac.stac_extensions.some(function (ext) { return typeof ext === 'string' && EO_EXT_ID.exec(ext); }) || !stac.stac_extensions.some(function (ext) { return typeof ext === 'string' && RASTER_EXT_ID.exec(ext); })) { return Error('EO and Raster STAC extensions are required.'); } if (isCollection && !stac.stac_extensions.some(function (ext) { return typeof ext === 'string' && EO_EXT_ID.exec(ext); })) { return Error('item-assets STAC extension is required.'); } var assets = isCollection ? stac === null || stac === void 0 ? void 0 : stac.item_assets : stac === null || stac === void 0 ? void 0 : stac.assets; if (!assets || (0, _typeof2["default"])(assets) !== 'object') { return Error('STAC object is missing asset information.'); } if (!Object.values(assets).some(function (asset) { return Array.isArray(asset === null || asset === void 0 ? void 0 : asset['eo:bands']) && Array.isArray(asset === null || asset === void 0 ? void 0 : asset['raster:bands']); })) { return Error('At least one STAC asset must have both eo:bands and raster:bands data.'); } return null; } //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJFT19FWFRfSUQiLCJSQVNURVJfRVhUX0lEIiwiSVRFTV9BU1NFVFNfRVhUX0lEIiwicGFyc2VSYXN0ZXJNZXRhZGF0YSIsIm1ldGFkYXRhIiwib3B0aW9ucyIsIl90eXBlb2YyIiwiZXJyb3IiLCJ2YWxpZGF0ZVNUQUMiLCJzdGFjIiwiX3N0YWMkc3RhY192ZXJzaW9uIiwiX29wdGlvbnMkYWxsb3dDb2xsZWN0IiwiYWxsb3dDb2xsZWN0aW9ucyIsIkFycmF5IiwiaXNBcnJheSIsIkVycm9yIiwidHlwZSIsInN0YWNfdmVyc2lvbiIsImlzQ29sbGVjdGlvbiIsInJlcXVpcmVkX2V4dGVuc2lvbnMiLCJwdXNoIiwic3RhY19leHRlbnNpb25zIiwic29tZSIsImV4dCIsImV4ZWMiLCJhc3NldHMiLCJpdGVtX2Fzc2V0cyIsIk9iamVjdCIsInZhbHVlcyIsImFzc2V0Il0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3RpbGVzZXQvcmFzdGVyLXRpbGUtdXRpbHMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1JVFxuLy8gQ29weXJpZ2h0IGNvbnRyaWJ1dG9ycyB0byB0aGUga2VwbGVyLmdsIHByb2plY3RcblxuaW1wb3J0IHtKc29uT2JqZWN0T3JBcnJheSwgU3RhY1R5cGVzfSBmcm9tICdAa2VwbGVyLmdsL3R5cGVzJztcblxuLy8gRGVmaW5lIHRoZXNlIGFzIHJlZ2V4IHRvIGFsbG93IGFueSBzZW12ZXIgbWFqb3IgdmVyc2lvbiAxXG5jb25zdCBFT19FWFRfSUQgPSAvaHR0cHM6XFwvXFwvc3RhYy1leHRlbnNpb25zLmdpdGh1Yi5pb1xcL2VvXFwvdjFbXFxkLl0rXFwvc2NoZW1hLmpzb24vO1xuY29uc3QgUkFTVEVSX0VYVF9JRCA9IC9odHRwczpcXC9cXC9zdGFjLWV4dGVuc2lvbnMuZ2l0aHViLmlvXFwvcmFzdGVyXFwvdjFbXFxkLl0rXFwvc2NoZW1hLmpzb24vO1xuY29uc3QgSVRFTV9BU1NFVFNfRVhUX0lEID1cbiAgL2h0dHBzOlxcL1xcL3N0YWMtZXh0ZW5zaW9ucy5naXRodWIuaW9cXC9pdGVtLWFzc2V0c1xcL3YxW1xcZC5dK1xcL3NjaGVtYS5qc29uLztcblxuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlUmFzdGVyTWV0YWRhdGEoXG4gIG1ldGFkYXRhOiBKc29uT2JqZWN0T3JBcnJheSxcbiAgb3B0aW9uczoge2FsbG93Q29sbGVjdGlvbnM6IGJvb2xlYW59XG4pOiBTdGFjVHlwZXMuQ29tcGxldGVTVEFDT2JqZWN0IHwgRXJyb3IgfCBudWxsIHtcbiAgaWYgKCFtZXRhZGF0YSB8fCB0eXBlb2YgbWV0YWRhdGEgIT09ICdvYmplY3QnKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBjb25zdCBlcnJvciA9IHZhbGlkYXRlU1RBQyhtZXRhZGF0YSwgb3B0aW9ucyk7XG4gIGlmIChlcnJvciAhPT0gbnVsbCkge1xuICAgIHJldHVybiBlcnJvcjtcbiAgfVxuXG4gIHJldHVybiBtZXRhZGF0YSBhcyBTdGFjVHlwZXMuQ29tcGxldGVTVEFDT2JqZWN0O1xufVxuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgY29tcGxleGl0eVxuZnVuY3Rpb24gdmFsaWRhdGVTVEFDKHN0YWM6IEpzb25PYmplY3RPckFycmF5LCBvcHRpb25zOiB7YWxsb3dDb2xsZWN0aW9uczogYm9vbGVhbn0pOiBFcnJvciB8IG51bGwge1xuICBjb25zdCB7YWxsb3dDb2xsZWN0aW9ucyA9IGZhbHNlfSA9IG9wdGlvbnM7XG5cbiAgLy8gTm90ZTogSWYgYSBTVEFDIG9iamVjdCBmYWlscyB2YWxpZGF0aW9uLCBpdCB3aWxsIHNpbGVudGx5IGZhaWxcbiAgaWYgKFxuICAgIHR5cGVvZiBzdGFjID09PSAnc3RyaW5nJyB8fFxuICAgIHR5cGVvZiBzdGFjID09PSAnYm9vbGVhbicgfHxcbiAgICB0eXBlb2Ygc3RhYyA9PT0gJ251bWJlcicgfHxcbiAgICBBcnJheS5pc0FycmF5KHN0YWMpIHx8XG4gICAgIXN0YWNcbiAgKSB7XG4gICAgcmV0dXJuIEVycm9yKCdNZXRhZGF0YSBtdXN0IGJlIGFuIG9iamVjdC4nKTtcbiAgfVxuXG4gIGlmICgoIWFsbG93Q29sbGVjdGlvbnMgJiYgc3RhYz8udHlwZSA9PT0gJ0NvbGxlY3Rpb24nKSB8fCBzdGFjPy50eXBlID09PSAnQ2F0YWxvZycpIHtcbiAgICByZXR1cm4gRXJyb3IoJ0N1c3RvbSBTVEFDIENvbGxlY3Rpb25zIGFuZCBDYXRhbG9ncyBhcmUgbm90IHN1cHBvcnRlZC4nKTtcbiAgfVxuXG4gIGlmIChzdGFjPy5zdGFjX3ZlcnNpb24/LlswXSAhPT0gJzEnKSB7XG4gICAgcmV0dXJuIEVycm9yKCdTVEFDIHZlcnNpb25zIGJlZm9yZSAxLjAuMCBub3Qgc3VwcG9ydGVkLicpO1xuICB9XG5cbiAgaWYgKHN0YWM/LnR5cGUgIT09ICdGZWF0dXJlJyAmJiBzdGFjPy50eXBlICE9PSAnQ29sbGVjdGlvbicpIHtcbiAgICByZXR1cm4gRXJyb3IoJ05vdCBhIFNUQUMgSXRlbSBvciBDb2xsZWN0aW9uLicpO1xuICB9XG5cbiAgY29uc3QgaXNDb2xsZWN0aW9uID0gc3RhYz8udHlwZSA9PT0gJ0NvbGxlY3Rpb24nO1xuXG4gIGNvbnN0IHJlcXVpcmVkX2V4dGVuc2lvbnMgPSBbRU9fRVhUX0lELCBSQVNURVJfRVhUX0lEXTtcbiAgaWYgKGlzQ29sbGVjdGlvbikge1xuICAgIHJlcXVpcmVkX2V4dGVuc2lvbnMucHVzaChJVEVNX0FTU0VUU19FWFRfSUQpO1xuICB9XG5cbiAgaWYgKFxuICAgICFBcnJheS5pc0FycmF5KHN0YWMuc3RhY19leHRlbnNpb25zKSB8fFxuICAgICFzdGFjLnN0YWNfZXh0ZW5zaW9ucy5zb21lKGV4dCA9PiB0eXBlb2YgZXh0ID09PSAnc3RyaW5nJyAmJiBFT19FWFRfSUQuZXhlYyhleHQpKSB8fFxuICAgICFzdGFjLnN0YWNfZXh0ZW5zaW9ucy5zb21lKGV4dCA9PiB0eXBlb2YgZXh0ID09PSAnc3RyaW5nJyAmJiBSQVNURVJfRVhUX0lELmV4ZWMoZXh0KSlcbiAgKSB7XG4gICAgcmV0dXJuIEVycm9yKCdFTyBhbmQgUmFzdGVyIFNUQUMgZXh0ZW5zaW9ucyBhcmUgcmVxdWlyZWQuJyk7XG4gIH1cblxuICBpZiAoXG4gICAgaXNDb2xsZWN0aW9uICYmXG4gICAgIXN0YWMuc3RhY19leHRlbnNpb25zLnNvbWUoZXh0ID0+IHR5cGVvZiBleHQgPT09ICdzdHJpbmcnICYmIEVPX0VYVF9JRC5leGVjKGV4dCkpXG4gICkge1xuICAgIHJldHVybiBFcnJvcignaXRlbS1hc3NldHMgU1RBQyBleHRlbnNpb24gaXMgcmVxdWlyZWQuJyk7XG4gIH1cblxuICBjb25zdCBhc3NldHMgPSBpc0NvbGxlY3Rpb24gPyBzdGFjPy5pdGVtX2Fzc2V0cyA6IHN0YWM/LmFzc2V0cztcbiAgaWYgKCFhc3NldHMgfHwgdHlwZW9mIGFzc2V0cyAhPT0gJ29iamVjdCcpIHtcbiAgICByZXR1cm4gRXJyb3IoJ1NUQUMgb2JqZWN0IGlzIG1pc3NpbmcgYXNzZXQgaW5mb3JtYXRpb24uJyk7XG4gIH1cblxuICBpZiAoXG4gICAgIU9iamVjdC52YWx1ZXMoYXNzZXRzKS5zb21lKFxuICAgICAgYXNzZXQgPT4gQXJyYXkuaXNBcnJheShhc3NldD8uWydlbzpiYW5kcyddKSAmJiBBcnJheS5pc0FycmF5KGFzc2V0Py5bJ3Jhc3RlcjpiYW5kcyddKVxuICAgIClcbiAgKSB7XG4gICAgcmV0dXJuIEVycm9yKCdBdCBsZWFzdCBvbmUgU1RBQyBhc3NldCBtdXN0IGhhdmUgYm90aCBlbzpiYW5kcyBhbmQgcmFzdGVyOmJhbmRzIGRhdGEuJyk7XG4gIH1cblxuICByZXR1cm4gbnVsbDtcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFBQTtBQUNBOztBQUlBO0FBQ0EsSUFBTUEsU0FBUyxHQUFHLGdFQUFnRTtBQUNsRixJQUFNQyxhQUFhLEdBQUcsb0VBQW9FO0FBQzFGLElBQU1DLGtCQUFrQixHQUN0Qix5RUFBeUU7QUFFcEUsU0FBU0MsbUJBQW1CQSxDQUNqQ0MsUUFBMkIsRUFDM0JDLE9BQW9DLEVBQ1M7RUFDN0MsSUFBSSxDQUFDRCxRQUFRLElBQUksSUFBQUUsUUFBQSxhQUFPRixRQUFRLE1BQUssUUFBUSxFQUFFO0lBQzdDLE9BQU8sSUFBSTtFQUNiO0VBRUEsSUFBTUcsS0FBSyxHQUFHQyxZQUFZLENBQUNKLFFBQVEsRUFBRUMsT0FBTyxDQUFDO0VBQzdDLElBQUlFLEtBQUssS0FBSyxJQUFJLEVBQUU7SUFDbEIsT0FBT0EsS0FBSztFQUNkO0VBRUEsT0FBT0gsUUFBUTtBQUNqQjs7QUFFQTtBQUNBLFNBQVNJLFlBQVlBLENBQUNDLElBQXVCLEVBQUVKLE9BQW9DLEVBQWdCO0VBQUEsSUFBQUssa0JBQUE7RUFDakcsSUFBQUMscUJBQUEsR0FBbUNOLE9BQU8sQ0FBbkNPLGdCQUFnQjtJQUFoQkEsZ0JBQWdCLEdBQUFELHFCQUFBLGNBQUcsS0FBSyxHQUFBQSxxQkFBQTs7RUFFL0I7RUFDQSxJQUNFLE9BQU9GLElBQUksS0FBSyxRQUFRLElBQ3hCLE9BQU9BLElBQUksS0FBSyxTQUFTLElBQ3pCLE9BQU9BLElBQUksS0FBSyxRQUFRLElBQ3hCSSxLQUFLLENBQUNDLE9BQU8sQ0FBQ0wsSUFBSSxDQUFDLElBQ25CLENBQUNBLElBQUksRUFDTDtJQUNBLE9BQU9NLEtBQUssQ0FBQyw2QkFBNkIsQ0FBQztFQUM3QztFQUVBLElBQUssQ0FBQ0gsZ0JBQWdCLElBQUksQ0FBQUgsSUFBSSxhQUFKQSxJQUFJLHVCQUFKQSxJQUFJLENBQUVPLElBQUksTUFBSyxZQUFZLElBQUssQ0FBQVAsSUFBSSxhQUFKQSxJQUFJLHVCQUFKQSxJQUFJLENBQUVPLElBQUksTUFBSyxTQUFTLEVBQUU7SUFDbEYsT0FBT0QsS0FBSyxDQUFDLHlEQUF5RCxDQUFDO0VBQ3pFO0VBRUEsSUFBSSxDQUFBTixJQUFJLGFBQUpBLElBQUksZ0JBQUFDLGtCQUFBLEdBQUpELElBQUksQ0FBRVEsWUFBWSxjQUFBUCxrQkFBQSx1QkFBbEJBLGtCQUFBLENBQXFCLENBQUMsQ0FBQyxNQUFLLEdBQUcsRUFBRTtJQUNuQyxPQUFPSyxLQUFLLENBQUMsMkNBQTJDLENBQUM7RUFDM0Q7RUFFQSxJQUFJLENBQUFOLElBQUksYUFBSkEsSUFBSSx1QkFBSkEsSUFBSSxDQUFFTyxJQUFJLE1BQUssU0FBUyxJQUFJLENBQUFQLElBQUksYUFBSkEsSUFBSSx1QkFBSkEsSUFBSSxDQUFFTyxJQUFJLE1BQUssWUFBWSxFQUFFO0lBQzNELE9BQU9ELEtBQUssQ0FBQyxnQ0FBZ0MsQ0FBQztFQUNoRDtFQUVBLElBQU1HLFlBQVksR0FBRyxDQUFBVCxJQUFJLGFBQUpBLElBQUksdUJBQUpBLElBQUksQ0FBRU8sSUFBSSxNQUFLLFlBQVk7RUFFaEQsSUFBTUcsbUJBQW1CLEdBQUcsQ0FBQ25CLFNBQVMsRUFBRUMsYUFBYSxDQUFDO0VBQ3RELElBQUlpQixZQUFZLEVBQUU7SUFDaEJDLG1CQUFtQixDQUFDQyxJQUFJLENBQUNsQixrQkFBa0IsQ0FBQztFQUM5QztFQUVBLElBQ0UsQ0FBQ1csS0FBSyxDQUFDQyxPQUFPLENBQUNMLElBQUksQ0FBQ1ksZUFBZSxDQUFDLElBQ3BDLENBQUNaLElBQUksQ0FBQ1ksZUFBZSxDQUFDQyxJQUFJLENBQUMsVUFBQUMsR0FBRztJQUFBLE9BQUksT0FBT0EsR0FBRyxLQUFLLFFBQVEsSUFBSXZCLFNBQVMsQ0FBQ3dCLElBQUksQ0FBQ0QsR0FBRyxDQUFDO0VBQUEsRUFBQyxJQUNqRixDQUFDZCxJQUFJLENBQUNZLGVBQWUsQ0FBQ0MsSUFBSSxDQUFDLFVBQUFDLEdBQUc7SUFBQSxPQUFJLE9BQU9BLEdBQUcsS0FBSyxRQUFRLElBQUl0QixhQUFhLENBQUN1QixJQUFJLENBQUNELEdBQUcsQ0FBQztFQUFBLEVBQUMsRUFDckY7SUFDQSxPQUFPUixLQUFLLENBQUMsNkNBQTZDLENBQUM7RUFDN0Q7RUFFQSxJQUNFRyxZQUFZLElBQ1osQ0FBQ1QsSUFBSSxDQUFDWSxlQUFlLENBQUNDLElBQUksQ0FBQyxVQUFBQyxHQUFHO0lBQUEsT0FBSSxPQUFPQSxHQUFHLEtBQUssUUFBUSxJQUFJdkIsU0FBUyxDQUFDd0IsSUFBSSxDQUFDRCxHQUFHLENBQUM7RUFBQSxFQUFDLEVBQ2pGO0lBQ0EsT0FBT1IsS0FBSyxDQUFDLHlDQUF5QyxDQUFDO0VBQ3pEO0VBRUEsSUFBTVUsTUFBTSxHQUFHUCxZQUFZLEdBQUdULElBQUksYUFBSkEsSUFBSSx1QkFBSkEsSUFBSSxDQUFFaUIsV0FBVyxHQUFHakIsSUFBSSxhQUFKQSxJQUFJLHVCQUFKQSxJQUFJLENBQUVnQixNQUFNO0VBQzlELElBQUksQ0FBQ0EsTUFBTSxJQUFJLElBQUFuQixRQUFBLGFBQU9tQixNQUFNLE1BQUssUUFBUSxFQUFFO0lBQ3pDLE9BQU9WLEtBQUssQ0FBQywyQ0FBMkMsQ0FBQztFQUMzRDtFQUVBLElBQ0UsQ0FBQ1ksTUFBTSxDQUFDQyxNQUFNLENBQUNILE1BQU0sQ0FBQyxDQUFDSCxJQUFJLENBQ3pCLFVBQUFPLEtBQUs7SUFBQSxPQUFJaEIsS0FBSyxDQUFDQyxPQUFPLENBQUNlLEtBQUssYUFBTEEsS0FBSyx1QkFBTEEsS0FBSyxDQUFHLFVBQVUsQ0FBQyxDQUFDLElBQUloQixLQUFLLENBQUNDLE9BQU8sQ0FBQ2UsS0FBSyxhQUFMQSxLQUFLLHVCQUFMQSxLQUFLLENBQUcsY0FBYyxDQUFDLENBQUM7RUFBQSxDQUN2RixDQUFDLEVBQ0Q7SUFDQSxPQUFPZCxLQUFLLENBQUMsd0VBQXdFLENBQUM7RUFDeEY7RUFFQSxPQUFPLElBQUk7QUFDYiIsImlnbm9yZUxpc3QiOltdfQ==