UNPKG

@arcgis/core

Version:

ArcGIS Maps SDK for JavaScript: A complete 2D and 3D mapping and data visualization API

3 lines (2 loc) 3.33 kB
/* COPYRIGHT Esri - https://js.arcgis.com/5.0.8/LICENSE.txt */ import{urlToObject as e,getOrigin as r,join as t,removeQueryParameters as s,removeTrailingSlash as n,Url as l,makeAbsolute as i}from"../../core/urlUtils.js";import{isSecureProxyService as o}from"../../portal/support/urlUtils.js";import{w as u}from"../../chunks/persistableUrlUtils.js";const a={mapserver:"MapServer",imageserver:"ImageServer",featureserver:"FeatureServer",knowledgegraphserver:"KnowledgeGraphServer",sceneserver:"SceneServer",streamserver:"StreamServer",vectortileserver:"VectorTileServer","3dtilesserver":"3DTilesServer",videoserver:"VideoServer"},c=Object.values(a),v=new RegExp(`^(?<path>(?:https?:)?\\/\\/\\S+?\\/rest\\/services\\/(?<serviceTitle>.+?)\\/(?<serverType>${c.join("|")})(?:\\/exts\\/(?<soeTitle>.+?)\\/(?<soeServerType>${c.join("|")}))?)(?:\\/(?:layers))?(?:\\/(?<sublayer>\\d+))?`,"i"),p=new RegExp(`^(?<path>(?:https?:)?\\/\\/\\S+?\\/(?<serviceTitle>[^/\\n]+)\\/(?<serverType>${c.join("|")}))(?:\\/(?:layers))?(?:\\/(?<sublayer>\\d+))?`,"i"),f=/(.*?)\/(?:layers\/)?(\d+)\/?$/i;function d(e){return v.test(e)}function m(r){if(null==r)return null;const t=e(r),s=t?.path.match(v)||t?.path.match(p);if(!s)return null;const{path:n,serviceTitle:l,serverType:i,soeTitle:o,soeServerType:u,sublayer:c}=s.groups??{},f=o||l,d=f.indexOf("/");return{title:y(-1!==d?f.slice(d+1):f),serverType:a[(u||i).toLowerCase()],sublayer:null!=c&&""!==c?parseInt(c,10):null,url:{path:n}}}function h(r){const t=e(r).path.match(f);return t?{serviceUrl:t[1],sublayerId:Number(t[2])}:null}function y(e){return(e=e.replaceAll(/\s*[/_]+\s*/g," "))[0].toUpperCase()+e.slice(1)}function w(e,r){const t=[];if(e){const r=m(e);null!=r&&r.title&&t.push(r.title)}if(r){const e=y(r);t.push(e)}if(2===t.length){if(t[0].toLowerCase().includes(t[1].toLowerCase()))return t[0];if(t[1].toLowerCase().includes(t[0].toLowerCase()))return t[1]}return t.join(" - ")}const g=["services","features","tiles","elevation3d","basemaps3d"];function S(e){let t=r(e,!0);return!!t&&(t=t.toLowerCase(),!!t.endsWith(".arcgis.com")&&(!!g.some(e=>t.startsWith(e))||/^[a-z\d-]+\.svcs[a-z\d-]*\./.test(t)))}function T(e){return o(e)&&b(e)}function b(e){const t=r(e);return!!t&&t.toLowerCase().endsWith(".arcgis.com")}function C(e,r){return e?n(s(e,r)):e}function L(r){let{url:t}=r;if(!t)return{url:t};t=s(t,r.logger);const l=e(t),i=m(l.path);let o;if(null!=i)null!=i.sublayer&&null==r.layer.layerId&&(o=i.sublayer),t=i.url.path;else if(r.nonStandardUrlAllowed){const e=h(l.path);null!=e&&(t=e.serviceUrl,o=e.sublayerId)}return{url:n(t),layerId:o}}function j(e,r,s,n,l){u(r,n,"url",l),n.url&&null!=e.layerId&&(n.url=t(n.url,s,e.layerId.toString()))}function I(e){if(!e)return!1;const r=e.toLowerCase(),t=r.includes("/services/"),s=r.includes("/mapserver/wmsserver"),n=r.includes("/imageserver/wmsserver"),l=r.includes("/wmsserver");return t&&(s||n||l)}function U(e){if(!e)return!1;const r=new l(i(e)),t=r.authority?.toLowerCase();return"server.arcgisonline.com"===t||"services.arcgisonline.com"===t}export{y as cleanTitle,T as isAgolSecuredProxyService,d as isArcGISUrl,S as isHostedAgolService,U as isServerOrServicesAGOLUrl,I as isWmsServer,m as parse,h as parseNonStandardSublayerUrl,C as sanitizeUrl,L as sanitizeUrlWithLayerId,c as serverTypes,w as titleFromUrlAndName,j as writeUrlWithLayerId};