// 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","../../core/has","./arcgisLayerUrl","../../rest/support/jsonUtils"],function(p,r,q,b){function t(a){a=a?.supportedSpatialAggregationStatistics?.map(d=>d.toLowerCase());return{envelope:!!a?.includes("envelopeaggregate"),centroid:!!a?.includes("centroidaggregate"),convexHull:!!a?.includes("convexhullaggregate")}}function n(a,d){return!!a?.supportedOperationsWithCacheHint?.map(c=>c.toLowerCase())?.includes(d.toLowerCase())}function u(a){const d=a.attachmentProperties,c={supportsName:!1, supportsSize:!1,supportsContentType:!1,supportsKeywords:!1,supportsExifInfo:!1,supportsCacheHint:n(a.advancedQueryCapabilities,"queryAttachments"),supportsResize:b.readBoolean(a,"supportsAttachmentsResizing",!1)};d&&Array.isArray(d)&&d.forEach(e=>{const f=v[e.name];f&&(c[f]=!!e.isEnabled)});return c}function w(a,d,c){a=a?a.toLowerCase().split(",").map(m=>m.trim()):[];c=c?q.parse(c):null;c=a.includes(null!=c&&"MapServer"===c.serverType?"data":"query");const e=a.includes("editing")&&!d.datesInUnknownTimezone; let f=e&&a.includes("create"),g=e&&a.includes("delete"),l=e&&a.includes("update");const h=a.includes("changetracking"),k=d.advancedQueryCapabilities;!e||f||g||l||(f=g=l=!0);return{supportsCalculate:b.readBoolean(d,"supportsCalculate",!1),supportsTruncate:b.readBoolean(d,"supportsTruncate",!1),supportsValidateSql:b.readBoolean(d,"supportsValidateSql",!1),supportsAdd:f,supportsDelete:g,supportsEditing:e,supportsChangeTracking:h,supportsQuery:c,supportsQueryAnalytics:b.readBoolean(k,"supportsQueryAnalytic", !1),supportsQueryAttachments:b.readBoolean(k,"supportsQueryAttachments",!1),supportsQueryTopFeatures:b.readBoolean(k,"supportsTopFeaturesQuery",!1),supportsResizeAttachments:b.readBoolean(d,"supportsAttachmentsResizing",!1),supportsSync:a.includes("sync"),supportsUpdate:l,supportsExceedsLimitStatistics:b.readBoolean(d,"supportsExceedsLimitStatistics",!1),supportsAsyncConvert3D:b.readBoolean(d,"supportsAsyncConvert3D",!1)}}function x(a,d){const c=a.advancedQueryCapabilities,e=a.ownershipBasedAccessControlForFeatures, f=a.archivingInfo;var g=a.currentVersion;g=!d?.includes("MapServer")||g>=r("mapserver-pbf-version-support");d=q.isHostedAgolService(d);const l=new Set((a.supportedQueryFormats??"").split(",").map(h=>h.toLowerCase().trim()));return{maxRecordCount:b.readNumber(a,"maxRecordCount",void 0),maxRecordCountFactor:b.readNumber(a,"maxRecordCountFactor",void 0),standardMaxRecordCount:b.readNumber(a,"standardMaxRecordCount",void 0),supportedSpatialAggregationStatistics:t(c),supportsCacheHint:b.readBoolean(c, "supportsQueryWithCacheHint",!1)||n(c,"query"),supportsCentroid:b.readBoolean(c,"supportsReturningGeometryCentroid",!1),supportsCompactGeometry:d,supportsDefaultSpatialReference:b.readBoolean(c,"supportsDefaultSR",!1),supportsDisjointSpatialRelationship:b.readBoolean(c,"supportsDisjointSpatialRel",!1),supportsDistance:b.readBoolean(c,"supportsQueryWithDistance",!1),supportsDistinct:b.readBoolean(c,"supportsDistinct",a.supportsAdvancedQueries),supportsExtent:b.readBoolean(c,"supportsReturningQueryExtent", !1),supportsFormatPBF:g&&l.has("pbf"),supportsFullTextSearch:b.readBoolean(c,"supportsFullTextSearch",!1),supportsGeometryProperties:b.readBoolean(c,"supportsReturningGeometryProperties",!1),supportsHavingClause:b.readBoolean(c,"supportsHavingClause",!1),supportsHistoricMoment:b.readBoolean(f,"supportsQueryWithHistoricMoment",!1),supportsMaxRecordCountFactor:b.readBoolean(c,"supportsMaxRecordCountFactor",!1),supportsOrderBy:b.readBoolean(c,"supportsOrderBy",a.supportsAdvancedQueries),supportsPagination:b.readBoolean(c, "supportsPagination",!1),supportsPercentileStatistics:b.readBoolean(c,"supportsPercentileStatistics",!1),supportsQuantization:b.readBoolean(a,"supportsCoordinatesQuantization",!1),supportsQuantizationEditMode:b.readBoolean(a,"supportsQuantizationEditMode",!1),supportsQueryByAnonymous:b.readBoolean(e,"allowAnonymousToQuery",!0),supportsQueryByOthers:b.readBoolean(e,"allowOthersToQuery",!0),supportsQueryGeometry:b.readBoolean(a,"supportsReturningQueryGeometry",!1),supportsResultType:b.readBoolean(c, "supportsQueryWithResultType",!1),supportsSpatialAggregationStatistics:b.readBoolean(c,"supportsSpatialAggregationStatistics",!1),supportsSqlExpression:b.readBoolean(c,"supportsSqlExpression",!1),supportsStandardizedQueriesOnly:b.readBoolean(a,"useStandardizedQueries",!1),supportsStatistics:b.readBoolean(c,"supportsStatistics",a.supportsStatistics),supportsTopFeaturesQuery:b.readBoolean(c,"supportsTopFeaturesQuery",!1),tileMaxRecordCount:b.readNumber(a,"tileMaxRecordCount",void 0)}}const v={name:"supportsName", size:"supportsSize",contentType:"supportsContentType",keywords:"supportsKeywords",exifInfo:"supportsExifInfo"};p.getFeatureLayerCapabilities=function(a,d){var c={supportsCacheHint:n(a.advancedQueryCapabilities,"queryAnalytics")},e=u(a);var f={isVersioned:b.readBoolean(a,"isDataVersioned",!1),supportsAttachment:b.readBoolean(a,"hasAttachments",!1),supportsM:b.readBoolean(a,"hasM",!1),supportsZ:b.readBoolean(a,"hasZ",!1)};var g={supportsAdvancedFieldProperties:b.readBoolean(a,"supportsFieldDescriptionProperty", !1)},l=w(a.capabilities,a,d);d=x(a,d);var h=a.advancedQueryCapabilities;var k=b.readBoolean(h,"supportsAdvancedQueryRelated",!1);h={supportsPagination:b.readBoolean(h,"supportsQueryRelatedPagination",!1),supportsCount:k,supportsOrderBy:k,supportsCacheHint:n(h,"queryRelated")};k={supportsCacheHint:n(a.advancedQueryCapabilities,"queryTopFilter")};const m=a.ownershipBasedAccessControlForFeatures,y=a?a.advancedEditingCapabilities:void 0;a={supportsGeometryUpdate:b.readBoolean(a,"allowGeometryUpdates", !0),supportsGlobalId:b.readBoolean(a,"supportsApplyEditsWithGlobalIds",!1),supportsReturnServiceEditsInSourceSpatialReference:b.readBoolean(a,"supportsReturnServiceEditsInSourceSR",!1),supportsRollbackOnFailure:b.readBoolean(a,"supportsRollbackOnFailureParameter",!1),supportsUpdateWithoutM:b.readBoolean(a,"allowUpdateWithoutMValues",!1),supportsUploadWithItemId:b.readBoolean(a,"supportsAttachmentsByUploadId",!1),supportsDeleteByAnonymous:b.readBoolean(m,"allowAnonymousToDelete",!0),supportsDeleteByOthers:b.readBoolean(m, "allowOthersToDelete",!0),supportsUpdateByAnonymous:b.readBoolean(m,"allowAnonymousToUpdate",!0),supportsUpdateByOthers:b.readBoolean(m,"allowOthersToUpdate",!0),supportsAsyncApplyEdits:b.readBoolean(y,"supportsAsyncApplyEdits",!1),zDefault:b.readNumber(a,"zDefault",void 0)};return{analytics:c,attachment:e,data:f,metadata:g,operations:l,query:d,queryRelated:h,queryTopFeatures:k,editing:a}};p.getVideoLayerCapabilities=function(a){return{operations:{supportsAppend:b.readBoolean(a,"supportsAppend",!1), supportsExportClip:b.readBoolean(a,"supportsExportClip",!1),supportsExportFrameset:b.readBoolean(a,"supportsExportFrameset",!1),supportsMensuration:b.readBoolean(a,"supportsMensuration",!1),supportsUpdate:b.readBoolean(a,"supportsUpdate",!1)},query:{supportsCoverageQuery:a?.playbackInfo?.klv["0601"]??!1}}};Object.defineProperty(p,Symbol.toStringTag,{value:"Module"})});