qwc2
Version:
QGIS Web Client
19 lines • 25.7 kB
JavaScript
function _typeof(o){"@babel/helpers - typeof";return _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(o){return typeof o}:function(o){return o&&"function"==typeof Symbol&&o.constructor===Symbol&&o!==Symbol.prototype?"symbol":typeof o},_typeof(o)}function _slicedToArray(r,e){return _arrayWithHoles(r)||_iterableToArrayLimit(r,e)||_unsupportedIterableToArray(r,e)||_nonIterableRest()}function _nonIterableRest(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function _iterableToArrayLimit(r,l){var t=null==r?null:"undefined"!=typeof Symbol&&r[Symbol.iterator]||r["@@iterator"];if(null!=t){var e,n,i,u,a=[],f=!0,o=!1;try{if(i=(t=t.call(r)).next,0===l){if(Object(t)!==t)return;f=!1}else for(;!(f=(e=i.call(t)).done)&&(a.push(e.value),a.length!==l);f=!0);}catch(r){o=!0,n=r}finally{try{if(!f&&null!=t["return"]&&(u=t["return"](),Object(u)!==u))return}finally{if(o)throw n}}return a}}function _arrayWithHoles(r){if(Array.isArray(r))return r}function _createForOfIteratorHelper(r,e){var t="undefined"!=typeof Symbol&&r[Symbol.iterator]||r["@@iterator"];if(!t){if(Array.isArray(r)||(t=_unsupportedIterableToArray(r))||e&&r&&"number"==typeof r.length){t&&(r=t);var _n=0,F=function F(){};return{s:F,n:function n(){return _n>=r.length?{done:!0}:{done:!1,value:r[_n++]}},e:function e(r){throw r},f:F}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,a=!0,u=!1;return{s:function s(){t=t.call(r)},n:function n(){var r=t.next();return a=r.done,r},e:function e(r){u=!0,o=r},f:function f(){try{a||null==t["return"]||t["return"]()}finally{if(u)throw o}}}}function _toConsumableArray(r){return _arrayWithoutHoles(r)||_iterableToArray(r)||_unsupportedIterableToArray(r)||_nonIterableSpread()}function _nonIterableSpread(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function _unsupportedIterableToArray(r,a){if(r){if("string"==typeof r)return _arrayLikeToArray(r,a);var t={}.toString.call(r).slice(8,-1);return"Object"===t&&r.constructor&&(t=r.constructor.name),"Map"===t||"Set"===t?Array.from(r):"Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)?_arrayLikeToArray(r,a):void 0}}function _iterableToArray(r){if("undefined"!=typeof Symbol&&null!=r[Symbol.iterator]||null!=r["@@iterator"])return Array.from(r)}function _arrayWithoutHoles(r){if(Array.isArray(r))return _arrayLikeToArray(r)}function _arrayLikeToArray(r,a){(null==a||a>r.length)&&(a=r.length);for(var e=0,n=Array(a);e<a;e++)n[e]=r[e];return n}function ownKeys(e,r){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);r&&(o=o.filter(function(r){return Object.getOwnPropertyDescriptor(e,r).enumerable})),t.push.apply(t,o)}return t}function _objectSpread(e){for(var r=1;r<arguments.length;r++){var t=null!=arguments[r]?arguments[r]:{};r%2?ownKeys(Object(t),!0).forEach(function(r){_defineProperty(e,r,t[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):ownKeys(Object(t)).forEach(function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(t,r))})}return e}function _defineProperty(e,r,t){return(r=_toPropertyKey(r))in e?Object.defineProperty(e,r,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[r]=t,e}function _toPropertyKey(t){var i=_toPrimitive(t,"string");return"symbol"==_typeof(i)?i:i+""}function _toPrimitive(t,r){if("object"!=_typeof(t)||!t)return t;var e=t[Symbol.toPrimitive];if(void 0!==e){var i=e.call(t,r||"default");if("object"!=_typeof(i))return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===r?String:Number)(t)}/**
* Copyright 2017-2024 Sourcepole AG
* All rights reserved.
*
* This source code is licensed under the BSD-style license found in the
* LICENSE file in the root directory of this source tree.
*/import axios from"axios";import deepmerge from"deepmerge";import{XMLParser}from"fast-xml-parser";import isEmpty from"lodash.isempty";import ol from"openlayers";import randomColor from"randomcolor";import url from"url";import{LayerRole}from"../actions/layers";import ConfigUtils from"./ConfigUtils";import CoordinatesUtils from"./CoordinatesUtils";import LayerUtils from"./LayerUtils";import MiscUtils from"./MiscUtils";function strcmp(a,b){var al=a.toLowerCase();var bl=b.toLowerCase();if(al<bl){return-1}else if(al>bl){return 1}return 0}var ServiceLayerUtils={getWMTSLayers:function getWMTSLayers(capabilities,capabilitiesUrl,mapCrs){var _this=this;if(!(capabilities!==null&&capabilities!==void 0&&capabilities.Contents)){return[]}var tileMatrices=capabilities.Contents.TileMatrixSet.reduce(function(res,entry){var crsMatch=entry.SupportedCRS.match(/(EPSG).*:(\d+)/i);res[entry.Identifier]={crs:crsMatch?"EPSG:"+crsMatch[2]:entry.SupportedCRS,matrix:entry.TileMatrix};return res},{});var layers=capabilities.Contents.Layer.map(function(layer){var _capabilities$Service,_capabilities$Service2,_capabilities$Service3;var styles=_this.getWMTSLayerStyles(capabilities,capabilitiesUrl,layer,tileMatrices);return{capabilitiesUrl:capabilitiesUrl,title:layer.Title,name:layer.Identifier,bbox:{crs:"EPSG:4326",bounds:layer.WGS84BoundingBox},sublayers:styles,"abstract":layer.Abstract,attribution:{Title:((_capabilities$Service=capabilities.ServiceProvider)===null||_capabilities$Service===void 0?void 0:_capabilities$Service.ProviderName)||((_capabilities$Service2=capabilities.ServiceIdentification)===null||_capabilities$Service2===void 0?void 0:_capabilities$Service2.Title)||"",OnlineResource:((_capabilities$Service3=capabilities.ServiceProvider)===null||_capabilities$Service3===void 0?void 0:_capabilities$Service3.ProviderSite)||""}}});layers.sort(function(a,b){return a.title.localeCompare(b.title)});return layers},getWMTSLayerStyles:function getWMTSLayerStyles(capabilities,capabilitiesUrl,layer,tileMatrices){var _this2=this;if(layer.Style.length===1){return this.getWMTSLayerTileMatrixSetLinks(capabilities,capabilitiesUrl,layer,tileMatrices,layer.Style[0].Identifier)}else{return layer.Style.map(function(style){return{title:style.Identifier,sublayers:_this2.getWMTSLayerTileMatrixSetLinks(capabilities,capabilitiesUrl,layer,tileMatrices,style.Identifier)}})}},getWMTSLayerTileMatrixSetLinks:function getWMTSLayerTileMatrixSetLinks(capabilities,capabilitiesUrl,layer,tileMatrices,style){var tileMatrixSetLinks=layer.TileMatrixSetLink;var layerLinks=tileMatrixSetLinks.map(function(link){var _MiscUtils$ensureArra,_capabilities$Operati,_capabilities$Service4,_capabilities$Service5,_capabilities$Service6;var tileMatrixSet=link.TileMatrixSet;var topMatrix=tileMatrices[tileMatrixSet].matrix[0];var tileMatrixPrefix=topMatrix.Identifier.includes(":")?topMatrix.Identifier.replace(/:[0-9]+$/,""):"";var origin=[topMatrix.TopLeftCorner[0],topMatrix.TopLeftCorner[1]];try{var axisOrder=CoordinatesUtils.getAxisOrder(tileMatrices[tileMatrixSet].crs).substr(0,2);if(axisOrder==="ne"){origin=[topMatrix.TopLeftCorner[1],topMatrix.TopLeftCorner[0]]}}catch(e){// eslint-disable-next-line
console.warn("Could not determine axis order for projection "+tileMatrices[tileMatrixSet].crs);return null}var matrixIds=[];var resolutions=tileMatrices[tileMatrixSet].matrix.map(function(entry,index){// 0.00028: assumed pixel width in meters, as per WMTS standard
matrixIds.push(entry.Identifier);return entry.ScaleDenominator*0.00028});var format=(_MiscUtils$ensureArra=MiscUtils.ensureArray(layer.Format).find(function(fmt){return fmt==="image/png"}))!==null&&_MiscUtils$ensureArra!==void 0?_MiscUtils$ensureArra:MiscUtils.ensureArray(layer.Format)[0];var getTile=MiscUtils.ensureArray((_capabilities$Operati=capabilities.OperationsMetadata)===null||_capabilities$Operati===void 0||(_capabilities$Operati=_capabilities$Operati.GetTile)===null||_capabilities$Operati===void 0||(_capabilities$Operati=_capabilities$Operati.DCP)===null||_capabilities$Operati===void 0||(_capabilities$Operati=_capabilities$Operati.HTTP)===null||_capabilities$Operati===void 0?void 0:_capabilities$Operati.Get)[0];var getEncoding=MiscUtils.ensureArray(getTile===null||getTile===void 0?void 0:getTile.Constraint).find(function(c){return c.name==="GetEncoding"});var requestEncoding=MiscUtils.ensureArray(getEncoding===null||getEncoding===void 0?void 0:getEncoding.AllowedValues.Value)[0];var serviceUrl=null;if(requestEncoding==="KVP"){serviceUrl=getTile.href}else{serviceUrl=layer.ResourceURL.find(function(u){return u.resourceType==="tile"}).template;(layer.Dimension||[]).forEach(function(dim){serviceUrl=serviceUrl.replace("{"+dim.Identifier+"}",dim.Default)})}return{type:"wmts",url:serviceUrl,capabilitiesUrl:capabilitiesUrl,title:layer.Title+" - "+tileMatrixSet,name:layer.Identifier,tileMatrixPrefix:tileMatrixPrefix,tileMatrixSet:tileMatrixSet,originX:origin[0],originY:origin[1],projection:tileMatrices[tileMatrixSet].crs,tileSize:[topMatrix.TileWidth,topMatrix.TileHeight],style:style,bbox:{crs:"EPSG:4326",bounds:layer.WGS84BoundingBox},format:format,requestEncoding:requestEncoding,resolutions:resolutions,matrixIds:matrixIds,"abstract":layer.Abstract,attribution:{Title:((_capabilities$Service4=capabilities.ServiceProvider)===null||_capabilities$Service4===void 0?void 0:_capabilities$Service4.ProviderName)||((_capabilities$Service5=capabilities.ServiceIdentification)===null||_capabilities$Service5===void 0?void 0:_capabilities$Service5.Title)||"",OnlineResource:((_capabilities$Service6=capabilities.ServiceProvider)===null||_capabilities$Service6===void 0?void 0:_capabilities$Service6.ProviderSite)||""}}}).filter(Boolean);return layerLinks},getWMSLayers:function getWMSLayers(capabilities,calledServiceUrl){var _capabilities,_capabilities2,_capabilities$WMS_Cap,_this3=this;var asGroup=arguments.length>2&&arguments[2]!==undefined?arguments[2]:false;if(!((_capabilities=capabilities)!==null&&_capabilities!==void 0&&_capabilities.WMS_Capabilities)&&!((_capabilities2=capabilities)!==null&&_capabilities2!==void 0&&_capabilities2.WMT_MS_Capabilities)){return[]}capabilities=(_capabilities$WMS_Cap=capabilities.WMS_Capabilities)!==null&&_capabilities$WMS_Cap!==void 0?_capabilities$WMS_Cap:capabilities.WMT_MS_Capabilities;var calledUrlParts=url.parse(calledServiceUrl,true);var extwmsparams={};calledUrlParts.query=Object.keys(calledUrlParts.query).filter(function(key){// Extract extwms params
if(key.toUpperCase().startsWith("EXTWMS.")){extwmsparams[key.substring(7)]=calledUrlParts.query[key];return false}// Filter service and request from calledServiceUrl, but keep other parameters (i.e. MAP)
return!["service","request"].includes(key.toLowerCase())}).reduce(function(res,key){return _objectSpread(_objectSpread({},res),{},_defineProperty({},key,calledUrlParts.query[key]))},{});delete calledUrlParts.search;var topLayer=capabilities.Capability.Layer;var getMapUrl=this.mergeCalledServiceUrlQuery(ServiceLayerUtils.getDCPTypes(capabilities.Capability.Request.GetMap.DCPType).HTTP.Get.OnlineResource.href,calledUrlParts);var featureInfoUrl=getMapUrl;try{featureInfoUrl=this.mergeCalledServiceUrlQuery(ServiceLayerUtils.getDCPTypes(capabilities.Capability.Request.GetFeatureInfo.DCPType).HTTP.Get.OnlineResource.href,calledUrlParts)}catch(e){// pass
}var mapFormats=null;try{mapFormats=MiscUtils.ensureArray(capabilities.Capability.Request.GetMap.Format)}catch(e){mapFormats=["image/png"]}var infoFormats=null;try{infoFormats=MiscUtils.ensureArray(capabilities.Capability.Request.GetFeatureInfo.Format)}catch(e){infoFormats=["text/plain"]}var externalLayerFeatureInfoFormats=ConfigUtils.getConfigProp("externalLayerFeatureInfoFormats")||{};for(var _i=0,_Object$keys=Object.keys(externalLayerFeatureInfoFormats);_i<_Object$keys.length;_i++){var entry=_Object$keys[_i];if(featureInfoUrl.toLowerCase().includes(entry.toLowerCase())){infoFormats=[externalLayerFeatureInfoFormats[entry]];break}}var version=capabilities.version;var supportedCrs=MiscUtils.ensureArray(topLayer.crs);var topLayerExtent=null;if(topLayer.EX_GeographicBoundingBox){topLayerExtent={crs:"EPSG:4326",bounds:[parseFloat(topLayer.EX_GeographicBoundingBox.westBoundLongitude),parseFloat(topLayer.EX_GeographicBoundingBox.southBoundLatitude),parseFloat(topLayer.EX_GeographicBoundingBox.eastBoundLongitude),parseFloat(topLayer.EX_GeographicBoundingBox.northBoundLatitude)]}}if(!topLayer.Layer||asGroup){return[this.getWMSLayerParams(topLayer,supportedCrs,calledUrlParts,version,getMapUrl,featureInfoUrl,mapFormats,infoFormats,extwmsparams,topLayerExtent)].filter(function(entry){return entry})}else{var entries=MiscUtils.ensureArray(topLayer.Layer).map(function(layer){return _this3.getWMSLayerParams(layer,supportedCrs,calledUrlParts,version,getMapUrl,featureInfoUrl,mapFormats,infoFormats,extwmsparams,topLayerExtent)}).filter(function(entry){return entry});return entries.sort(function(a,b){return strcmp(a.title,b.title)})}},getWMSLayerParams:function getWMSLayerParams(layer,parentCrs,calledUrlParts,version,getMapUrl,featureInfoUrl,mapFormats,infoFormats,extwmsparams,topLayerExtent){var _this4=this,_Object$keys$,_layer$Attribution,_layer$Attribution2,_layer$opacity;var groupbbox=arguments.length>10&&arguments[10]!==undefined?arguments[10]:null;var supportedCrs=MiscUtils.ensureArray(layer.CRS);if(isEmpty(supportedCrs)){supportedCrs=_toConsumableArray(parentCrs||[])}else{supportedCrs=[].concat(_toConsumableArray(parentCrs||[]),_toConsumableArray(supportedCrs))}var sublayers=[];var sublayerbounds={};if(!isEmpty(layer.Layer)){sublayers=MiscUtils.ensureArray(layer.Layer).map(function(sublayer){return _this4.getWMSLayerParams(sublayer,supportedCrs,calledUrlParts,version,getMapUrl,featureInfoUrl,mapFormats,infoFormats,extwmsparams,topLayerExtent,sublayerbounds)}).filter(function(entry){return entry})}var bbox=null;if(isEmpty(layer.BoundingBox)){if(!isEmpty(sublayerbounds)){bbox=sublayerbounds}else if(topLayerExtent){bbox=topLayerExtent}}else{var _boundingBox$CRS;var boundingBox=MiscUtils.ensureArray(layer.BoundingBox)[0];bbox={crs:(_boundingBox$CRS=boundingBox.CRS)!==null&&_boundingBox$CRS!==void 0?_boundingBox$CRS:boundingBox.SRS,bounds:[boundingBox.minx,boundingBox.miny,boundingBox.maxx,boundingBox.maxy].map(Number)}}if(groupbbox!==null){if(isEmpty(groupbbox)){Object.assign(groupbbox,bbox)}else if(bbox&&bbox.crs===groupbbox.crs){groupbbox.bounds[0]=Math.min(bbox.bounds[0],groupbbox.bounds[0]);groupbbox.bounds[1]=Math.min(bbox.bounds[1],groupbbox.bounds[1]);groupbbox.bounds[2]=Math.max(bbox.bounds[2],groupbbox.bounds[2]);groupbbox.bounds[3]=Math.max(bbox.bounds[3],groupbbox.bounds[3])}}var legendUrl=getMapUrl;try{legendUrl=this.mergeCalledServiceUrlQuery(MiscUtils.ensureArray(MiscUtils.ensureArray(layer.Style)[0].LegendURL)[0].OnlineResource.href,calledUrlParts)}catch(e){/* pass */}var styles=MiscUtils.ensureArray(layer.Style).reduce(function(res,entry){return _objectSpread(_objectSpread({},res),{},_defineProperty({},String(entry.Name),entry.Title))},{});var style=styles["default"]?"default":(_Object$keys$=Object.keys(styles)[0])!==null&&_Object$keys$!==void 0?_Object$keys$:"";var attribution={Title:(_layer$Attribution=layer.Attribution)===null||_layer$Attribution===void 0?void 0:_layer$Attribution.Title,OnlineResource:(_layer$Attribution2=layer.Attribution)===null||_layer$Attribution2===void 0||(_layer$Attribution2=_layer$Attribution2.OnlineResource)===null||_layer$Attribution2===void 0?void 0:_layer$Attribution2.href};return{type:"wms",name:String(layer.Name),title:layer.Title,"abstract":layer.Abstract,attribution:attribution,url:getMapUrl,featureInfoUrl:featureInfoUrl,legendUrl:legendUrl,version:version,infoFormats:infoFormats,mapFormats:mapFormats,queryable:layer.queryable===1,sublayers:isEmpty(sublayers)?null:sublayers,expanded:false,bbox:bbox,visibility:layer.visibilityChecked!==0,opacity:((_layer$opacity=layer.opacity)!==null&&_layer$opacity!==void 0?_layer$opacity:1)*255,extwmsparams:extwmsparams,minScale:layer.MinScaleDenominator!==undefined?Number(layer.MinScaleDenominator):undefined,maxScale:layer.MinScaleDenominator!==undefined?Number(layer.MaxScaleDenominator):undefined,styles:styles,style:style}},getWFSLayers:function getWFSLayers(capabilities,calledServiceUrl,mapCrs){var _capabilities$WFS_Cap;var calledUrlParts=url.parse(calledServiceUrl,true);// Filter service and request from calledServiceUrl, but keep other parameters (i.e. MAP)
calledUrlParts.query=Object.keys(calledUrlParts.query).filter(function(key){return!["service","request"].includes(key.toLowerCase())}).reduce(function(res,key){return _objectSpread(_objectSpread({},res),{},_defineProperty({},key,calledUrlParts.query[key]))},{});delete calledUrlParts.search;if(!(capabilities!==null&&capabilities!==void 0&&(_capabilities$WFS_Cap=capabilities.WFS_Capabilities)!==null&&_capabilities$WFS_Cap!==void 0&&_capabilities$WFS_Cap.version)){return[]}else if(capabilities.WFS_Capabilities.version<"1.1.0"){return ServiceLayerUtils.getWFS10Layers(capabilities.WFS_Capabilities,calledUrlParts)}else{return ServiceLayerUtils.getWFS11_20Layers(capabilities.WFS_Capabilities,calledUrlParts,mapCrs)}},getWFS10Layers:function getWFS10Layers(capabilities,calledUrlParts){var serviceUrl=null;var version=capabilities.version;var formats=null;try{serviceUrl=ServiceLayerUtils.getDCPTypes(MiscUtils.ensureArray(capabilities.Capability.Request.GetFeature.DCPType)).HTTP.Get.onlineResource;serviceUrl=this.mergeCalledServiceUrlQuery(serviceUrl,calledUrlParts);formats=Object.keys(capabilities.Capability.Request.GetFeature.ResultFormat);if(typeof formats==="string"){// convert to list if single entry
formats=[formats]}}catch(e){return[]}var layers=[];var _iterator=_createForOfIteratorHelper(MiscUtils.ensureArray(capabilities.FeatureTypeList.FeatureType)),_step;try{for(_iterator.s();!(_step=_iterator.n()).done;){var featureType=_step.value;var name=void 0;var bbox=void 0;try{name=featureType.Name;var llbbox=featureType.LatLongBoundingBox;bbox={crs:featureType.SRS,bounds:[llbbox.minx,llbbox.miny,llbbox.maxx,llbbox.maxy]}}catch(e){continue;// Name and bbox are required
}var title=featureType.Title||name;var _abstract=featureType.Abstract||"";layers.push({type:"wfs",name:name,title:title,"abstract":_abstract,bbox:bbox,projection:featureType.SRS,url:serviceUrl,version:version,formats:formats,color:randomColor(),visibility:true})}}catch(err){_iterator.e(err)}finally{_iterator.f()}return layers},getWFS11_20Layers:function getWFS11_20Layers(capabilities,calledUrlParts,mapCrs){var serviceUrl=null;var version=capabilities.version;var formats=null;try{var getFeatureOp=MiscUtils.ensureArray(capabilities.OperationsMetadata.Operation).find(function(el){return el.name==="GetFeature"});serviceUrl=ServiceLayerUtils.getDCPTypes(MiscUtils.ensureArray(getFeatureOp.DCP)).HTTP.Get.href;serviceUrl=this.mergeCalledServiceUrlQuery(serviceUrl,calledUrlParts);var outputFormat=MiscUtils.ensureArray(getFeatureOp.Parameter).find(function(el){return el.name==="outputFormat"});formats=MiscUtils.ensureArray(outputFormat.AllowedValues?outputFormat.AllowedValues.Value:outputFormat.Value)}catch(e){return[]}var layers=[];var _iterator2=_createForOfIteratorHelper(MiscUtils.ensureArray(capabilities.FeatureTypeList.FeatureType)),_step2;try{for(_iterator2.s();!(_step2=_iterator2.n()).done;){var featureType=_step2.value;var name=void 0;var bbox=void 0;try{name=featureType.Name;var lc=featureType.WGS84BoundingBox.LowerCorner.split(/\s+/);var uc=featureType.WGS84BoundingBox.UpperCorner.split(/\s+/);bbox={crs:"EPSG:4326",bounds:[lc[0],lc[1],uc[0],uc[1]]}}catch(e){continue;// Name and bbox are required
}var title=featureType.Title||name;var _abstract2=featureType.Abstract||"";var projections=[CoordinatesUtils.fromOgcUrnCrs(featureType.DefaultCRS||featureType.DefaultSRS)].concat(_toConsumableArray(MiscUtils.ensureArray(featureType.OtherCRS||featureType.OtherSRS||[]).map(function(crs){return CoordinatesUtils.fromOgcUrnCrs(crs)})));var projection=projections.includes(mapCrs)?mapCrs:projections[0];layers.push({type:"wfs",name:name,title:title,"abstract":_abstract2,bbox:bbox,projection:projection,url:serviceUrl,version:version,formats:formats,color:randomColor(),visibility:true})}}catch(err){_iterator2.e(err)}finally{_iterator2.f()}return layers},getCapabilities:function getCapabilities(baseUrl,params){var urlParts=url.parse(baseUrl,true);if(params){urlParts.query=_objectSpread(_objectSpread({},Object.entries(urlParts.query).reduce(function(res,_ref){var _ref2=_slicedToArray(_ref,2),key=_ref2[0],val=_ref2[1];return _objectSpread(_objectSpread({},res),{},_defineProperty({},key.toUpperCase(),val))},{})),params);delete urlParts.search}if(urlParts.protocol==="http"&&location.protocol==="https"){urlParts.protocol="https"}var requestUrl=url.format(urlParts);return new Promise(function(resolve,reject){axios.get(requestUrl).then(function(response){var options={attributeNamePrefix:"",ignoreAttributes:false,parseTagValue:true,parseAttributeValue:true,removeNSPrefix:true};resolve({capabilities:new XMLParser(options).parse(response.data),requestUrl:requestUrl})})["catch"](function(e){reject(e)})})},getWMTSCapabilities:function getWMTSCapabilities(serviceUrl){return new Promise(function(resolve,reject){var requestUrl=MiscUtils.adjustProtocol(serviceUrl);axios.get(requestUrl).then(function(response){var wmtsFormat=new ol.format.WMTSCapabilities;resolve({capabilities:wmtsFormat.read(response.data),requestUrl:requestUrl})})["catch"](reject)})},getWMSCapabilities:function getWMSCapabilities(serviceUrl){return new Promise(function(resolve,reject){ServiceLayerUtils.getCapabilities(serviceUrl,{SERVICE:"WMS",REQUEST:"GetProjectSettings"}).then(function(result){var _result$capabilities;if((_result$capabilities=result.capabilities)!==null&&_result$capabilities!==void 0&&_result$capabilities.WMS_Capabilities){resolve(result)}else{ServiceLayerUtils.getCapabilities(serviceUrl,{SERVICE:"WMS",REQUEST:"GetCapabilities"}).then(resolve)}})["catch"](function(){ServiceLayerUtils.getCapabilities(serviceUrl,{SERVICE:"WMS",REQUEST:"GetCapabilities"}).then(resolve)["catch"](reject)})})},getWFSCapabilities:function getWFSCapabilities(serviceUrl){return new Promise(function(resolve,reject){ServiceLayerUtils.getCapabilities(serviceUrl,{SERVICE:"WFS",REQUEST:"GetCapabilities"}).then(resolve)["catch"](reject)})},findLayers:function findLayers(type,serviceUrl,layerConfigs,mapCrs,callback){var getCapabilities=null;var getLayers=null;if(type==="wmts"){getCapabilities=ServiceLayerUtils.getWMTSCapabilities;getLayers=function getLayers(capabilites,requestUrl){return ServiceLayerUtils.getWMTSLayers(capabilites,requestUrl,mapCrs)}}else if(type==="wms"){getCapabilities=ServiceLayerUtils.getWMSCapabilities;getLayers=function getLayers(capabilites,requestUrl){return ServiceLayerUtils.getWMSLayers(capabilites,requestUrl,true)}}else if(type==="wfs"){getCapabilities=ServiceLayerUtils.getWFSCapabilities;getLayers=function getLayers(capabilites,requestUrl){return ServiceLayerUtils.getWFSLayers(capabilites,requestUrl,mapCrs)}}getCapabilities(serviceUrl).then(function(_ref3){var capabilities=_ref3.capabilities,requestUrl=_ref3.requestUrl;var layers=getLayers(capabilities,requestUrl);var _iterator3=_createForOfIteratorHelper(layerConfigs),_step3;try{var _loop=function _loop(){var _LayerUtils$searchSub;var layerConfig=_step3.value;var layer=LayerUtils.matchSubLayer({sublayers:layers},function(l){return l.name===layerConfig.name&&(!layerConfig.style||l.style===layerConfig.style)});// Some services (i.e. wms.geo.admin.ch) have same-named sublayers
layer=(_LayerUtils$searchSub=LayerUtils.searchSubLayer(layer,"name",layerConfig.name))!==null&&_LayerUtils$searchSub!==void 0?_LayerUtils$searchSub:layer;if(layer){layer=_objectSpread(_objectSpread({},layer),{},{id:layerConfig.id,opacity:layerConfig.opacity,visibility:layerConfig.visibility,style:layerConfig.style||layer.style,role:LayerRole.USERLAYER});if(layer.type==="wms"){layer.params={LAYERS:layerConfig.name}}callback(layerConfig.id,layer)}else{// eslint-disable-next-line
console.warn("Could not find layer "+layerConfig.name);callback(layerConfig.id,null)}};for(_iterator3.s();!(_step3=_iterator3.n()).done;){_loop()}}catch(err){_iterator3.e(err)}finally{_iterator3.f()}})["catch"](function(){// eslint-disable-next-line
console.warn("Failed to read "+serviceUrl);var _iterator4=_createForOfIteratorHelper(layerConfigs),_step4;try{for(_iterator4.s();!(_step4=_iterator4.n()).done;){var layerConfig=_step4.value;callback(layerConfig.id,null)}}catch(err){_iterator4.e(err)}finally{_iterator4.f()}})},getDCPTypes:function getDCPTypes(dcpTypes){var result={};var _iterator5=_createForOfIteratorHelper(MiscUtils.ensureArray(dcpTypes)),_step5;try{for(_iterator5.s();!(_step5=_iterator5.n()).done;){var dcpType=_step5.value;result=deepmerge(result,dcpType)}}catch(err){_iterator5.e(err)}finally{_iterator5.f()}return result},mergeCalledServiceUrlQuery:function mergeCalledServiceUrlQuery(capabilityUrl,calledServiceUrlParts){if(ConfigUtils.getConfigProp("trustWmsCapabilityURLs")){return url.format(capabilityUrl)}try{var _calledServiceUrlPart;var urlParts=url.parse(capabilityUrl,true);urlParts.host=calledServiceUrlParts.host;urlParts.protocol=(_calledServiceUrlPart=calledServiceUrlParts.protocol)!==null&&_calledServiceUrlPart!==void 0?_calledServiceUrlPart:location.protocol;urlParts.query=_objectSpread(_objectSpread({},calledServiceUrlParts.query),urlParts.query);delete urlParts.search;return url.format(urlParts)}catch(e){return url.format(capabilityUrl)}}};export default ServiceLayerUtils;