// All material copyright Esri, All Rights Reserved, unless otherwise specified. // See https://js.arcgis.com/4.30/esri/copyright.txt for details. //>>built define("../../chunks/tslib.es6 ../../config ../../kernel ../../request ../../core/arrayUtils ../../core/Error ../../core/Identifiable ../../core/JSONSupport ../../core/lang ../../core/Loadable ../../core/promiseUtils ../../core/accessorSupport/decorators/property ../../core/has ../../core/Logger ../../core/accessorSupport/decorators/reader ../../core/accessorSupport/decorators/subclass ../../geometry/SpatialReference ../../layers/graphics/applyEditsUtils ../../layers/graphics/editingSupport ../../layers/mixins/EditBusLayer ../../layers/support/featureLayerUtils ../../layers/support/layerUtils ../../layers/support/serviceCapabilitiesUtils ../../portal/PortalItem ../../portal/support/portalItemUtils ../utils ../query/operations/editsZScale ../support/jsonUtils ../../versionManagement/support/versionManagementUtils".split(" "), function(k,J,K,x,E,L,h,M,F,N,v,m,X,Y,A,O,G,r,B,P,Q,R,H,S,T,w,U,n,C){function y(b,a){const d=a.id;return{id:d,name:a.name,url:`${b}/${d}`,type:a.type||"Table"}}function V(b,a){b=b?b.toLowerCase().split(",").map(f=>f.trim()):[];const d=b.includes("query"),c=b.includes("editing")&&!a.datesInUnknownTimezone;let e=c&&b.includes("create"),g=c&&b.includes("delete"),l=c&&b.includes("update");const q=b.includes("changetracking");!c||e||g||l||(e=g=l=!0);return{supportsAdd:e,supportsDelete:g,supportsEditing:c, supportsChangeTracking:q,supportsQuery:d,supportsQueryDataElements:n.readBoolean(a,"supportsQueryDataElements",!1),supportsQueryDomains:n.readBoolean(a,"supportsQueryDomains",!1),supportsQueryContingentValues:n.readBoolean(a,"supportsQueryContingentValues",!1),supportsSync:b.includes("sync"),supportsUpdate:l}}function W(b){const a=[];return{results:b.data.map(d=>{const c=r.unpackEditResultData({addResults:d.addResults??[],updateResults:d.updateResults??[],deleteResults:d.deleteResults??[],attachments:d.attachments, editMoment:d.editMoment});var e=d.editedFeatures;const g=e?.spatialReference?new G({wkid:e?.spatialReference.wkid,wkt:e?.spatialReference.wkt,latestWkid:e?.spatialReference.latestWkid,latestVcsWkid:e?.spatialReference.latestVcsWkid,vcsWkid:e?.spatialReference.vcsWkid}):null;(e=e?r.createEditedFeatures(e,g):null)&&a.push({layerId:d.id,editedFeatures:e});return{id:d.id,editedFeatures:e,...c}}),editedFeatures:a}}h=class extends M.JSONSupportMixin(h.IdentifiableMixin(N)){constructor(b){super(b);this.sourceJSON= this.url=null;this.userHasUpdateItemPrivileges=this.userHasFullEditingPrivileges=!1;this.userTypeExtensions=[];this.capabilities=this.tableInfos=this.layerInfos=null}read(b,a){this.sourceJSON=b;super.read(b,a)}get utilityNetworkUrl(){if(this.sourceJSON)for(const b of this.sourceJSON.layers)if("Utility Network Layer"===b.type)return`${this.url}/${b.id}`;return null}get versionManagementServiceUrl(){return this.sourceJSON?.hasBranchVersionedData?this.url.replace(/\/FeatureServer/i,"/VersionManagementServer"): null}readLayerInfos(b,a){return(a.layers||[]).map(d=>{const {type:c,geometryType:e}=d;return{...y(this.url,d),type:c||"Feature Layer",geometryType:e}})}readTableInfos(b,a){return(a.tables||[]).map(d=>y(this.url,d))}readCapabilities(b,a){b={isDataVersioned:n.readBoolean(a,"hasVersionedData",!1)};var d=a?.syncCapabilities;var c=d?.supportedSyncDataOptions;d={supportsAsync:n.readBoolean(d,"supportsAsync",!1),supportedSyncDataOptions:{annotations:1===(c&1),dimensions:2===(c&2),contingentValues:4===(c& 4),attributeRules:8===(c&8),utilityNetworkSystem:16===(c&16),annotationFullModel:32===(c&32),include3DObjects:64===(c&64),utilityNetworkMissingLayers:128===(c&128),preserveTrueCurves:256===(c&256)}};c=V(a.capabilities,a);var e={maxRecordCountFactor:n.readNumber(a,"maxRecordCountFactor",void 0),maxRecordCount:n.readNumber(a,"maxRecordCount",void 0)};const g=a?.advancedEditingCapabilities;a={supportsGlobalId:n.readBoolean(a,"supportsApplyEditsWithGlobalIds",!1),supportsReturnServiceEditsInSourceSpatialReference:n.readBoolean(g, "supportsReturnServiceEditsInSourceSR",!1),supportsSplit:n.readBoolean(g,"supportsSplit",!1),supportsAsyncApplyEdits:n.readBoolean(g,"supportsAsyncApplyEdits",!1)};return{data:b,sync:d,operations:c,query:e,editing:a}}get effectiveCapabilities(){var b=this.capabilities;if(!b)return null;b=F.clone(b);const {operations:a}=b;if(this.userHasUpdateItemPrivileges)return a.supportsAdd=a.supportsDelete=a.supportsEditing=a.supportsQuery=a.supportsUpdate=!0,b;this.userHasFullEditingPrivileges&&a.supportsEditing&& (a.supportsAdd=a.supportsDelete=a.supportsUpdate=!0);return b}load(b){this.addResolvingPromise(this._fetchService(this.url,b).then(()=>this._setUserPrivileges(b)));return Promise.resolve(this)}async fetchAllLayersAndTables(b){await this.load(b);this._fetchLayersAndTablesPromise||(this._fetchLayersAndTablesPromise=this._fetchLayersAndTables(this.url));v.throwIfAborted(b);return this._fetchLayersAndTablesPromise}async applyEdits(b,a){let d=null;try{const {results:c,edits:e,editedFeatures:g}=await this._internalApplyEdits(b, a),l=f=>f.filter(p=>!p.error).map(F.clone);let q=0;c.map(f=>{d=P.emitApplyEditsEvent(this.url,f.id,a?.gdbVersion,!0);f={edits:e[q],addedFeatures:l(f.addFeatureResults),updatedFeatures:l(f.updateFeatureResults),deletedFeatures:l(f.deleteFeatureResults),addedAttachments:l(f.addAttachmentResults),updatedAttachments:l(f.updateAttachmentResults),deletedAttachments:l(f.deleteAttachmentResults),exceededTransferLimit:!1,historicMoment:f.editMoment?new Date(f.editMoment):null};q+=1;0{var p=f.addFeatures?.map(D=>r.getFeatureJSON({spatialReference:c},D,null))??[];p=(await Promise.all(p)).filter(E.isSome);p=0r.getFeatureJSON({spatialReference:c},D,null))??[];t=(await Promise.all(t)).filter(E.isSome);t=0{var e=this.effectiveCapabilities;B.checkEditingCapabilities(c,e,a,!(!c||!(c.addFeatures||c.updateFeatures||c.deleteFeatures)),!(!c||!(c.addAttachments||c.updateAttachments||c.deleteAttachments)),"feature-service");if(!e.data.isDataVersioned&&a?.gdbVersion)throw new L("feature-service:invalid-parameter","'gdbVersion' is applicable only if the layer supports versioned data. See: 'capabilities.data.isVersioned'"); e=B.normalizeEdits(c,e,"feature-service");return{...(await B.normalizeGeometries(e)),id:c.id,identifierFields:c.identifierFields}})),options:d}}async _fetchService(b,a){this.sourceJSON?this.read(this.sourceJSON,{url:w.parseUrl(b)}):(a=await x(b,{responseType:"json",query:{f:"json"},...a}),this.read(a.data,{url:w.parseUrl(b)}))}async _fetchLayersAndTables(b){var a=await x(`${b}/layers`,{responseType:"json",query:{f:"json"}});b=a.data.layers.map(d=>{const {type:c,geometryType:e}=d,g=y(this.url,d);d= H.getFeatureLayerCapabilities(d,g.url);return{...g,type:c||"Feature Layer",geometryType:e,capabilities:d}});a=a.data.tables.map(d=>{const c=y(this.url,d);d=H.getFeatureLayerCapabilities(d,c.url);return{...c,capabilities:d}});return{layers:b,tables:a}}};k.__decorate([m.property()],h.prototype,"url",void 0);k.__decorate([m.property()],h.prototype,"sourceJSON",void 0);k.__decorate([m.property()],h.prototype,"userHasFullEditingPrivileges",void 0);k.__decorate([m.property()],h.prototype,"userHasUpdateItemPrivileges", void 0);k.__decorate([m.property({readOnly:!0})],h.prototype,"utilityNetworkUrl",null);k.__decorate([m.property({readOnly:!0})],h.prototype,"versionManagementServiceUrl",null);k.__decorate([m.property()],h.prototype,"userTypeExtensions",void 0);k.__decorate([m.property({json:{read:{source:["layers"]}}})],h.prototype,"layerInfos",void 0);k.__decorate([A.reader("layerInfos",["layers"])],h.prototype,"readLayerInfos",null);k.__decorate([m.property({json:{read:{source:["tables"]}}})],h.prototype,"tableInfos", void 0);k.__decorate([A.reader("tableInfos",["tables"])],h.prototype,"readTableInfos",null);k.__decorate([m.property({readOnly:!0,json:{read:{source:"hasVersionedData capabilities supportsQueryDataElements supportsQueryDomains supportsQueryContingentValues maxRecordCountFactor maxRecordCount advancedEditingCapabilities supportsApplyEditsWithGlobalIds syncCapabilities datesInUnknownTimezone".split(" ")}}})],h.prototype,"capabilities",void 0);k.__decorate([A.reader("capabilities","hasVersionedData capabilities supportsQueryDataElements supportsQueryDomains supportsQueryContingentValues maxRecordCountFactor maxRecordCount advancedEditingCapabilities supportsApplyEditsWithGlobalIds syncCapabilities datesInUnknownTimezone".split(" "))], h.prototype,"readCapabilities",null);k.__decorate([m.property({readOnly:!0})],h.prototype,"effectiveCapabilities",null);return h=k.__decorate([O.subclass("esri.rest.featureService.FeatureService")],h)});