// All material copyright Esri, All Rights Reserved, unless otherwise specified. // See https://js.arcgis.com/4.30/esri/copyright.txt for details. //>>built define("exports ../../geometry ../../request ../../core/Error ../../core/Logger ../../core/urlUtils ../../geometry/support/spatialReferenceUtils ../../geometry/support/webMercatorUtils ../graphics/featureConversionUtils ../graphics/OptimizedFeatureSet ../graphics/sources/geojson/geojson ../graphics/sources/support/clientSideDefaults ../graphics/sources/support/sourceUtils ../support/FieldsIndex ../support/fieldType ../../time/timeZoneUtils ../../geometry/SpatialReference".split(" "),function(n,ka, y,t,V,u,W,N,J,X,K,Y,Z,O,aa,ba,z){async function P(b,a,c){const {collection:{links:f,landingPage:{url:d}},layerDefinition:m,maxRecordCount:p,queryParameters:{apiKey:C,customParameters:l},spatialReference:D,supportedCrs:v}=b;var g=q(f,"items",h.geojson)||q(f,"http://www.opengis.net/def/rel/ogc/1.0/items",h.geojson);if(null==g)throw new t("ogc-feature-layer:missing-items-page","Missing items url");const {geometry:e,num:A,start:x,timeExtent:Q,where:G}=a;if(a.objectIds)throw new t("ogc-feature-layer:query-by-objectids-not-supported", "Queries with object ids are not supported");b=z.fromJSON(D);a=a.outSpatialReference??b;b=a.isWGS84?null:R(a,v);if(null==e||"extent"!==e.type)var k=null;else if({spatialReference:k}=e,!k||k.isWGS84)k={bbox:L(e)};else{var w=R(k,v);k=null!=w?{bbox:L(e),"bbox-crs":w}:k.isWebMercator?{bbox:L(N.project(e,z.WGS84))}:null}w=k;if(null==Q)k=null;else{var {start:S,end:T}=Q;k=`${null!=S?S.toISOString():".."}/${null!=T?T.toISOString():".."}`}const ca=k;var da=null!=G&&G&&"1\x3d1"!==G?G:null;k=A??(null==x?p:10); const ea=0===x?void 0:x,{fields:U,geometryType:H,hasZ:M,objectIdField:E,paginationParameter:fa}=m;g=u.makeAbsolute(g.href,d);({data:g}=await y(g,{...c,query:{...l,...w,crs:b,datetime:ca,query:da,limit:k,[fa]:ea,token:C},headers:{accept:h.geojson}}));c=K.createOptimizedFeatures(g,{geometryType:H,hasZ:M,objectIdField:E});g=c.length===k&&!!q(g.links??[],"next",h.geojson);k=new O(U);for(var B of c)w={},Z.mixAttributes(k,w,B.attributes),w[E]=B.attributes[E],B.attributes=w;if(!b&&a.isWebMercator)for(var F of c)null!= F.geometry&&null!=H&&(B=J.convertToGeometry(F.geometry,H,M,!1),B.spatialReference=z.WGS84,F.geometry=J.convertFromGeometry(N.project(B,a)));for(var r of c)r.objectId=r.attributes[E];F=b||!b&&a.isWebMercator?a.toJSON():W.wgs84;r=new X;r.exceededTransferLimit=g;r.features=c;r.fields=U;r.geometryType=H;r.hasZ=M;r.objectIdFieldName=E;r.spatialReference=F;return r}function R(b,a){const {isWebMercator:c,wkid:f}=b;return f?(b=c?a[3857]??a[102100]??a[102113]??a[900913]:a[b.wkid])?`${"http://www.opengis.net/def/crs/"}${b}`: null:null}function L(b){if(null==b)return"";const {xmin:a,ymin:c,xmax:f,ymax:d}=b;return`${a},${c},${f},${d}`}function ha(b){b=b.extent?.spatial;if(!b)return null;var a=b.bbox[0],c=4===a.length;const [f,d]=a;b=c?void 0:a[2];const m=c?a[2]:a[3],p=c?a[3]:a[4];a=c?void 0:a[5];c=z.WGS84.toJSON();return{xmin:f,ymin:d,xmax:m,ymax:p,zmin:b,zmax:a,spatialReference:c}}function q(b,a,c){return b.find(({rel:f,type:d})=>f===a&&d===c)??b.find(({rel:f,type:d})=>f===a&&!d)}function ia(b,a,c){if(c&&(c=q(c,"next", h.geojson),c=u.urlToObject(c?.href)?.query)){b=u.urlToObject(b).query;var f=Object.keys(b??{});return Object.entries(c).filter(([d])=>!f.includes(d)).find(([d,m])=>ja.has(d.toLowerCase())&&Number.parseInt(m,10)===a)?.[0]}}const I=()=>V.getLogger("esri.layers.ogc.ogcFeatureUtils"),ja=new Set(["startindex","offset"]);var h;(function(b){b.json="application/json";b.geojson="application/geo+json";b.openapi="application/vnd.oai.openapi+json;version\x3d3.0"})(h||={});n.crsDefault="http://www.opengis.net/def/crs/OGC/1.3/CRS84"; n.crsPrefix="http://www.opengis.net/def/crs/";n.getCollectionDefinition=async function(b,a,c={},f=5){var {links:d}=b;d=q(d,"items",h.geojson)||q(d,"http://www.opengis.net/def/rel/ogc/1.0/items",h.geojson);if(null==d)throw new t("ogc-feature-layer:missing-items-page","Missing items url");const {apiKey:m,customParameters:p,signal:C}=c;c=u.makeAbsolute(d.href,b.landingPage.url);d=u.addQueryParameters(c,{limit:f,...p,token:m});({data:c}=await y(d,{signal:C,headers:{accept:h.geojson}}));f=ia(d,f,c.links)?? "startindex";K.validateGeoJSON(c);const l=K.inferLayerProperties(c,{geometryType:a.geometryType});c=a.fields||l.fields||[];d=null!=a.hasZ?a.hasZ:l.hasZ;const D=l.geometryType,v=a.objectIdField||l.objectIdFieldName||"OBJECTID";a=a.timeInfo;var g=c.find(({name:x})=>x===v);if(g)g.editable=!1,g.nullable=!1;else{if(!l.objectIdFieldType)throw new t("ogc-feature-layer:missing-feature-id","Collection geojson require a feature id as a unique identifier");c.unshift({name:v,alias:v,type:"number"===l.objectIdFieldType? "esriFieldTypeOID":"esriFieldTypeString",editable:!1,nullable:!1})}v!==l.objectIdFieldName&&(g=c.find(({name:x})=>x===l.objectIdFieldName))&&(g.type="esriFieldTypeInteger");c===l.fields&&0.*)\/(?.*)\/(?.*)$/i.exec(b)?.groups;if(!b)return null;const {authority:a,code:c}=b;switch(a.toLowerCase()){case "ogc":switch(c.toLowerCase()){case "crs27":return z.GCS_NAD_1927.wkid;case "crs83":return 4269;case "crs84":case "crs84h":return z.WGS84.wkid;default:return null}case "esri":case "epsg":return b= Number.parseInt(c,10),Number.isNaN(b)?null:b;default:return null}};n.queryFeatureSetJSON=async function(b,a,c){b=await P(b,a,c);return J.convertToFeatureSet(b)};n.queryOptimizedFeatureSet=P;Object.defineProperty(n,Symbol.toStringTag,{value:"Module"})});