UNPKG

@arcgis/core

Version:

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

6 lines (5 loc) • 26.9 kB
/* All material copyright ESRI, All Rights Reserved, unless otherwise specified. See https://js.arcgis.com/4.33/esri/copyright.txt for details. */ import e from"../../Graphic.js";import{ArcadeDate as t}from"../ArcadeDate.js";import n from"../ArcadePortal.js";import i from"../Dictionary.js";import{StringEnum as a,toStringEnumKey as r}from"../enum.js";import{ArcadeExecutionError as o,ExecutionErrorCodes as s}from"../executionError.js";import l from"../Feature.js";import{convertToFeatureSet as f,constructFeatureSetFromPortalItem as d,constructFeatureSet as u,constructFeatureSetFromRelationship as c,constructFeatureSetFromUrl as m,constructAssociationMetaDataFeatureSetFromUrl as p}from"../featureSetUtils.js";import y from"../ImmutableArray.js";import{B as w,g as I,f as h,m as g,w as F,N as b,K as T,e as D,l as x,J as E,H as N,k as A,j as v,i as S,u as L,L as j,Y as C}from"../../chunks/languageUtils.js";import{getPortal as k}from"../portalUtils.js";import{SqlExpressionAdapted as Z,StringToCodeAdapted as $,FieldRename as P,AdaptedFeatureSet as U,OriginalField as M}from"../featureset/actions/Adapted.js";import R from"../featureset/actions/AttributeFilter.js";import O from"../featureset/actions/OrderBy.js";import z from"../featureset/actions/Top.js";import H from"../featureset/sources/Empty.js";import W from"../featureset/sources/FeatureLayerMemory.js";import G from"../featureset/support/OrderbyClause.js";import{isSupportedLayer as V,cloneField as _}from"../featureset/support/shared.js";import{isSingleField as B}from"../featureset/support/sqlUtils.js";import{calculateStat as K}from"./fieldStats.js";import{isPromiseLike as q}from"../../core/promiseUtils.js";import Q from"../../core/sql/WhereClause.js";import J from"../../layers/FeatureLayer.js";import Y from"../../layers/support/Field.js";import X from"../../portal/Portal.js";import{queryAssociations as ee}from"../../rest/networks/queryAssociations.js";import te from"../../rest/networks/support/NetworkElement.js";import ne from"../../rest/networks/support/QueryAssociationsParameters.js";import{isString as ie,isArray as ae,isInteger as re}from"../../support/guards.js";function oe(e){if(1===e.length){if(ae(e[0]))return K("distinct",e[0],-1);if(v(e[0]))return K("distinct",e[0].toArray(),-1)}return K("distinct",e,-1)}function se(e,t,n){const i=e.getVariables();if(i.length>0){const a={};for(const e of i)a[e]=t.evaluateIdentifier(n,{name:e});e.parameters=a}return e}function le(e,t,n=null){for(const i in e)if(i.toLowerCase()===t.toLowerCase())return e[i];return n}function fe(e){if(null===e)return null;const t={type:le(e,"type",""),name:le(e,"name","")};if("range"===t.type)t.range=le(e,"range",[]);else{t.codedValues=[];for(const n of le(e,"codedValues",[]))t.codedValues.push({name:le(n,"name",""),code:le(n,"code",null)})}return t}function de(e){if(null===e)return null;const t={},n=le(e,"wkt");null!==n&&(t.wkt=n);const i=le(e,"wkid");return null!==i&&(t.wkid=i),t}function ue(e){if(null===e)return null;const t={hasZ:le(e,"hasz",!1),hasM:le(e,"hasm",!1)},n=le(e,"spatialreference");null!=n&&(t.spatialReference=de(n));const i=le(e,"x",null);if(null!==i)return t.x=i,t.y=le(e,"y",null),t.hasZ&&(t.z=le(e,"z",null)),t.hasM&&(t.m=le(e,"m",null)),t;const a=le(e,"rings",null);if(null!==a)return t.rings=a,t;const r=le(e,"paths",null);if(null!==r)return t.paths=r,t;const o=le(e,"points",null);if(null!==o)return t.points=o,t;for(const s of["xmin","xmax","ymin","ymax","zmin","zmax","mmin","mmax"]){const n=le(e,s,null);null!==n&&(t[s]=n)}return t}function ce(e,t){for(const n of t)if(n===e)return!0;return!1}function me(e){return!!e.layerDefinition&&(!!e.featureSet&&(!1!==ce(e.layerDefinition.geometryType,["",null,"esriGeometryNull","esriGeometryPoint","esriGeometryPolyline","esriGeometryPolygon","esriGeometryMultipoint","esriGeometryEnvelope"])&&(!1!==ae(e.layerDefinition.fields)&&!1!==ae(e.featureSet.features))))}function pe(e){return"utc"===e?.toLowerCase()?"UTC":"unknown"===e?.toLowerCase()?"Unknown":e}async function ye(t,n,i,a,r,l,f){const d=await t.getFeatureSetInfo();if(null===(d?.layerId??null))return null;if(!r.layerIdLookup.get(d.layerId))return null;const c=t.serviceUrl().replace(/\/FeatureServer/i,"/UtilityNetworkServer"),m=[];switch(i){case"connected":m.push("connectivity"),m.push("junction-edge-from-connectivity"),m.push("junction-edge-to-connectivity"),m.push("junction-edge-midspan-connectivity"),m.push("junction-junction-connectivity");break;case"container":case"content":m.push("containment");break;case"structure":case"attached":m.push("attachment");break;case"junctionedge":m.push("junction-edge-from-connectivity"),m.push("junction-edge-to-connectivity");break;case"midspan":m.push("junction-edge-midspan-connectivity");break;default:throw new o(l,s.InvalidParameter,f)}let p=null,y=!1;if(null!==a&&""!==a&&void 0!==a){for(const e of r.terminals)e.terminalName===a&&(p=e.terminalId);null===p&&(y=!0)}const w=[];if(!y){const a=new te({globalId:n.field(t.globalIdField),networkSourceId:r.layerIdLookup.get(d.layerId).sourceId,...p?{terminalId:p}:""}),o=await ee(c,new ne({types:m,elements:[a]}));let s=0;for(const t of o.associations){let n=null,o="",l="";if(t.fromNetworkElement?.globalId===a.globalId?(n=t.toNetworkElement,l="to"):t.toNetworkElement?.globalId===a.globalId&&(n=t.fromNetworkElement,l="from"),!n)continue;switch(i){case"attached":if("attachment"!==t.associationType)continue;if("to"!==l)continue;break;case"structure":if("attachment"!==t.associationType)continue;if("from"!==l)continue;break;case"container":if("containment"!==t.associationType)continue;if("from"!==l)continue;break;case"content":if("containment"!==t.associationType)continue;if("to"!==l)continue;break;case"connected":break;case"junctionedge":"junction-edge-to-connectivity"===t.associationType?o="to":"junction-edge-from-connectivity"===t.associationType&&(o="from");break;case"midspan":if("junction-edge-midspan-connectivity"!==t.associationType)continue}const f=r.sourceIdLookup.get(n.networkSourceId)?.className??"";w.push(new e({geometry:null,attributes:{objectId:s++,globalId:n.globalId,percentAlong:t.percentAlong??0,isContentVisible:t.isContentVisible?0:1,className:f,side:o}}))}}const I=new J({source:w,geometryType:null,objectIdField:"objectId",globalIdField:"globalId",fields:[new Y({name:"objectId",alias:"objectId",type:"oid"}),new Y({name:"globalId",alias:"globalId",type:"global-id"}),new Y({name:"percentAlong",alias:"percentAlong",type:"double"}),new Y({name:"side",alias:"side",type:"string"}),new Y({name:"isContentVisible",alias:"isContentVisible",type:"integer"}),new Y({name:"className",alias:"className",type:"string"})]});return u(I)}function we(e){if("async"===e.mode){e.functions.timezone=function(n,a){return e.standardFunctionAsync(n,a,(async(e,r,l)=>{if(w(l,1,2,n,a),I(l[0]))return"Unknown";if(h(l[0]))return"Unknown";if(g(l[0])){if(await l[0].load(),1===l.length||null===l[1])return l[0].datesInUnknownTimezone?pe("unknown"):pe(l[0].dateFieldsTimeZone);if(!(l[1]instanceof i)||!1===l[1].hasField("type"))throw new o(n,s.InvalidParameter,a);const e=l[1].field("type");if(!1===ie(e))throw new o(n,s.InvalidParameter,a);switch(F(e).toLowerCase()){case"preferredtimezone":return pe(l[0].preferredTimeZone);case"editfieldsinfo":return pe(l[0].editFieldsInfo?.timeZone??null);case"timeinfo":return pe(l[0].timeInfo?.timeZone??null);case"field":if(l[1].hasField("fieldname")&&ie(l[1].field("fieldname")))return pe(l[0].fieldTimeZone(F(l[1].field("fieldname"))))}throw new o(n,s.InvalidParameter,a)}const f=b(l[0],T(n));if(null===f)return null;const d=f.timeZone;return"system"===d?t.systemTimeZoneCanonicalName:"utc"===d.toLowerCase()?"UTC":"unknown"===d.toLowerCase()?"Unknown":d}))},e.functions.sqltimestamp=function(t,n){return e.standardFunctionAsync(t,n,(async(e,i,a)=>{w(a,1,3,t,n);const r=a[0];if(D(r)){if(1===a.length)return r.toSQLWithKeyword();if(2===a.length)return r.changeTimeZone(F(a[1])).toSQLWithKeyword();throw new o(t,s.InvalidParameter,n)}if(h(r))return r.toSQLWithKeyword();if(g(r)){if(3!==a.length)throw new o(t,s.InvalidParameter,n);await r.load();const e=F(a[1]);if(h(a[2]))return a[2].toSQLWithKeyword();if(!1===D(a[2]))throw new o(t,s.InvalidParameter,n);const i=r.fieldTimeZone(e);return null==i?a[2].toSQLWithKeyword():a[2].changeTimeZone(i).toSQLWithKeyword()}throw new o(t,s.InvalidParameter,n)}))},e.signatures.push({name:"sqltimestamp",min:2,max:4}),e.functions.featuresetbyid=function(t,n){return e.standardFunctionAsync(t,n,((e,i,a)=>{if(w(a,2,4,t,n),x(a[0])){const e=F(a[1]);let i=E(a[2],null);const r=N(E(a[3],!0));if(null===i&&(i=["*"]),!1===ae(i))throw new o(t,s.InvalidParameter,n);return a[0].featureSetById(e,r,i)}throw new o(t,s.InvalidParameter,n)}))},e.signatures.push({name:"featuresetbyid",min:2,max:4});const K=new a(["datasource","parent","root"]);e.functions.getfeatureset=function(t,n){return e.standardFunctionAsync(t,n,(async(e,i,a)=>{if(w(a,1,2,t,n),A(a[0])){const e=null==a[1]?"datasource":K.lookup(F(a[1]));return f(a[0].fullSchema(),e,t.lrucache,t.interceptor,t.spatialReference)}throw new o(t,s.InvalidParameter,n)}))},e.signatures.push({name:"getfeatureset",min:1,max:2}),e.functions.featuresetbyportalitem=function(t,i){return e.standardFunctionAsync(t,i,((e,a,r)=>{if(w(r,2,5,t,i),null===r[0])throw new o(t,s.PortalRequired,i);if(r[0]instanceof n){const e=F(r[1]),n=F(r[2]);let a=E(r[3],null);const l=N(E(r[4],!0));if(null===a&&(a=["*"]),!1===ae(a))throw new o(t,s.InvalidParameter,i);let f;return f=t.services?.portal?t.services.portal:X.getDefault(),f=k(r[0],f),d(e,n,t.spatialReference,a,l,f,t.lrucache,t.interceptor)}if(!1===ie(r[0]))throw new o(t,s.PortalRequired,i);const l=F(r[0]),f=F(r[1]);let u=E(r[2],null);const c=N(E(r[3],!0));if(null===u&&(u=["*"]),!1===ae(u))throw new o(t,s.InvalidParameter,i);return d(l,f,t.spatialReference,u,c,t.services?.portal??X.getDefault(),t.lrucache,t.interceptor)}))},e.signatures.push({name:"featuresetbyportalitem",min:2,max:5}),e.functions.featuresetbyname=function(t,n){return e.standardFunctionAsync(t,n,((e,i,a)=>{if(w(a,2,4,t,n),x(a[0])){const e=F(a[1]);let i=E(a[2],null);const r=N(E(a[3],!0));if(null===i&&(i=["*"]),!1===ae(i))throw new o(t,s.InvalidParameter,n);return a[0].featureSetByName(e,r,i)}throw new o(t,s.InvalidParameter,n)}))},e.signatures.push({name:"featuresetbyname",min:2,max:4}),e.functions.featureset=function(t,n){return e.standardFunction(t,n,((e,a,r)=>{w(r,1,1,t,n);const l={layerDefinition:{geometryType:"",objectIdField:"",globalIdField:"",typeIdField:"",hasM:!1,hasZ:!1,fields:[]},featureSet:{geometryType:"",features:[]}};if(ie(r[0])){const e=JSON.parse(r[0]);void 0!==e.layerDefinition?(l.layerDefinition=e.layerDefinition,l.featureSet=e.featureSet,e.layerDefinition.spatialReference&&(l.layerDefinition.spatialReference=e.layerDefinition.spatialReference)):(l.featureSet.features=e.features,l.featureSet.geometryType=e.geometryType,l.layerDefinition.geometryType=l.featureSet.geometryType,l.layerDefinition.objectIdField=e.objectIdFieldName??"",l.layerDefinition.typeIdField=e.typeIdFieldName,l.layerDefinition.globalIdField=e.globalIdFieldName,l.layerDefinition.fields=e.fields,e.spatialReference&&(l.layerDefinition.spatialReference=e.spatialReference))}else{if(!(r[0]instanceof i))throw new o(t,s.InvalidParameter,n);{const e=JSON.parse(r[0].castToText(!0)),i=le(e,"layerdefinition");if(null!==i){l.layerDefinition.geometryType=le(i,"geometrytype",""),l.featureSet.geometryType=l.layerDefinition.geometryType,l.layerDefinition.globalIdField=le(i,"globalidfield",""),l.layerDefinition.objectIdField=le(i,"objectidfield",""),l.layerDefinition.typeIdField=le(i,"typeidfield",""),l.layerDefinition.hasZ=!0===le(i,"hasz",!1),l.layerDefinition.hasM=!0===le(i,"hasm",!1);const t=le(i,"spatialreference");t&&(l.layerDefinition.spatialReference=de(t));const n=[];for(const e of le(i,"fields",[])){const t={name:le(e,"name",""),alias:le(e,"alias",""),type:le(e,"type",""),nullable:le(e,"nullable",!0),editable:le(e,"editable",!0),length:le(e,"length",null),domain:fe(le(e,"domain"))};n.push(t)}l.layerDefinition.fields=n;const a=le(e,"featureset");if(a){const e={};for(const t of n)e[t.name.toLowerCase()]=t.name;for(const t of le(a,"features",[])){const n={},i=le(t,"attributes",{});for(const t in i)n[e[t.toLowerCase()]]=i[t];l.featureSet.features.push({attributes:n,geometry:ue(le(t,"geometry"))})}}}else{l.layerDefinition.hasZ=!0===le(e,"hasz",!1),l.layerDefinition.hasM=!0===le(e,"hasm",!1),l.layerDefinition.geometryType=le(e,"geometrytype",""),l.featureSet.geometryType=l.layerDefinition.geometryType,l.layerDefinition.objectIdField=le(e,"objectidfieldname",""),l.layerDefinition.typeIdField=le(e,"typeidfieldname","");const i=le(e,"spatialreference");i&&(l.layerDefinition.spatialReference=de(i));const a=[],r=le(e,"fields",null);if(!ae(r))throw new o(t,s.InvalidParameter,n);for(const e of r){const t={name:le(e,"name",""),alias:le(e,"alias",""),type:le(e,"type",""),nullable:le(e,"nullable",!0),editable:le(e,"editable",!0),length:le(e,"length",null),domain:fe(le(e,"domain"))};a.push(t)}l.layerDefinition.fields=a;const f={};for(const e of a)f[e.name.toLowerCase()]=e.name;let d=le(e,"features",null);if(ae(d))for(const e of d){const t={},n=le(e,"attributes",{});for(const e in n)t[f[e.toLowerCase()]]=n[e];l.featureSet.features.push({attributes:t,geometry:ue(le(e,"geometry",null))})}else d=null,l.featureSet.features=d}}}if(!1===me(l))throw new o(t,s.InvalidParameter,n);return l.layerDefinition.geometryType||(l.layerDefinition.geometryType="esriGeometryNull"),W.create(l,t.spatialReference)}))},e.signatures.push({name:"featureset",min:1,max:1}),e.functions.filter=function(t,n){return e.standardFunctionAsync(t,n,(async(i,a,r)=>{if(w(r,2,2,t,n),ae(r[0])||v(r[0])){const e=[];let i,a=r[0];if(a instanceof y&&(a=a.toArray()),!S(r[1]))throw new o(t,s.InvalidParameter,n);i=r[1].createFunction(t);for(const t of a){const n=i(t);q(n)?!0===await n&&e.push(t):!0===n&&e.push(t)}return e}if(g(r[0])){const n=await r[0].load(),i=Q.create(r[1],{fieldsIndex:n.getFieldsIndex(),timeZone:n.dateFieldsTimeZoneDefaultUTC}),a=i.getVariables();if(a.length>0){const n={};for(const i of a)n[i]=e.evaluateIdentifier(t,{name:i});i.parameters=n}return new R({parentfeatureset:r[0],whereclause:i})}throw new o(t,s.InvalidParameter,n)}))},e.signatures.push({name:"filter",min:2,max:2}),e.functions.orderby=function(t,n){return e.standardFunctionAsync(t,n,(async(e,i,a)=>{if(w(a,2,2,t,n),g(a[0])){const e=new G(a[1]);return new O({parentfeatureset:a[0],orderbyclause:e})}throw new o(t,s.InvalidParameter,n)}))},e.signatures.push({name:"orderby",min:2,max:2}),e.functions.top=function(t,n){return e.standardFunctionAsync(t,n,(async(e,i,a)=>{if(w(a,2,2,t,n),g(a[0]))return new z({parentfeatureset:a[0],topnum:a[1]});if(ae(a[0]))return L(a[1])>=a[0].length?a[0].slice():a[0].slice(0,L(a[1]));if(v(a[0]))return L(a[1])>=a[0].length()?a[0].slice():a[0].slice(0,L(a[1]));throw new o(t,s.InvalidParameter,n)}))},e.signatures.push({name:"top",min:2,max:2}),e.functions.first=function(t,n){return e.standardFunctionAsync(t,n,(async(e,i,a)=>{if(w(a,1,1,t,n),g(a[0])){const n=await a[0].first(e.abortSignal);if(null!==n){const e=l.createFromGraphicLikeObject(n.geometry,n.attributes,a[0],t.timeZone);return e._underlyingGraphic=n,e}return n}return ae(a[0])?0===a[0].length?null:a[0][0]:v(a[0])?0===a[0].length()?null:a[0].get(0):null}))},e.signatures.push({name:"first",min:1,max:1}),e.functions.attachments=function(t,n){return e.standardFunctionAsync(t,n,(async(e,a,r)=>{w(r,1,2,t,n);const l={minsize:-1,maxsize:-1,types:null,returnMetadata:!1};if(r.length>1)if(r[1]instanceof i){if(r[1].hasField("minsize")&&(l.minsize=L(r[1].field("minsize"))),r[1].hasField("metadata")&&(l.returnMetadata=N(r[1].field("metadata"))),r[1].hasField("maxsize")&&(l.maxsize=L(r[1].field("maxsize"))),r[1].hasField("types")){const e=j(r[1].field("types"),!1);e.length>0&&(l.types=e)}}else if(null!==r[1])throw new o(t,s.InvalidParameter,n);if(A(r[0])){const e=r[0]._layer;let n;if(g(e))n=e;else{if(null==e||!V(e))return[];n=u(e,t.spatialReference,["*"],!0,t.lrucache,t.interceptor)}return await n.load(),n.queryAttachments(r[0].field(n.objectIdField),l.minsize,l.maxsize,l.types,l.returnMetadata)}if(null===r[0])return[];throw new o(t,s.InvalidParameter,n)}))},e.signatures.push({name:"attachments",min:1,max:2}),e.functions.featuresetbyrelationshipname=function(t,n){return e.standardFunctionAsync(t,n,(async(e,i,a)=>{w(a,2,4,t,n);const r=a[0],l=F(a[1]);let f=E(a[2],null);const d=N(E(a[3],!0));if(null===f&&(f=["*"]),!1===ae(f))throw new o(t,s.InvalidParameter,n);if(null===a[0])return null;if(!A(a[0]))throw new o(t,s.InvalidParameter,n);const p=r._layer;let y;if(g(p))y=p;else{if(null==p||!V(p))return null;y=u(p,t.spatialReference,["*"],!0,t.lrucache,t.interceptor)}y=await y.load();const I=y.relationshipMetaData().filter((e=>e.name===l));if(0===I.length)return null;if(void 0!==I[0].relationshipTableId&&null!==I[0].relationshipTableId&&I[0].relationshipTableId>-1)return c(y,I[0],r.field(y.objectIdField),y.spatialReference,f,d,t.lrucache,t.interceptor);let h=y.serviceUrl();if(!h)return null;h="/"===h.charAt(h.length-1)?h+I[0].relatedTableId.toString():h+"/"+I[0].relatedTableId.toString();const b=await m(h,y.spatialReference,f,d,t.lrucache,t.interceptor);await b.load();let T=b.relationshipMetaData();if(T=T.filter((e=>e.id===I[0].id)),!1===r.hasField(I[0].keyField)||null===r.field(I[0].keyField)){const e=await y.getFeatureByObjectId(r.field(y.objectIdField),[I[0].keyField]);if(e){const t=Q.create(T[0].keyField+"= @id",{fieldsIndex:b.getFieldsIndex(),timeZone:b.dateFieldsTimeZoneDefaultUTC});return t.parameters={id:e.attributes[I[0].keyField]},b.filter(t)}return new H({parentfeatureset:b})}const D=Q.create(T[0].keyField+"= @id",{fieldsIndex:b.getFieldsIndex(),timeZone:b.dateFieldsTimeZoneDefaultUTC});return D.parameters={id:r.field(I[0].keyField)},b.filter(D)}))},e.signatures.push({name:"featuresetbyrelationshipname",min:2,max:4}),e.functions.featuresetbyassociation=function(t,n){return e.standardFunctionAsync(t,n,(async(e,i,a)=>{w(a,2,3,t,n);const l=a[0],f=r(F(E(a[1],""))),d=ie(a[2])?F(a[2]):null;if(null===a[0])return null;if(!A(a[0]))throw new o(t,s.InvalidParameter,n);let c=l._layer;if(c instanceof J&&(c=u(c,t.spatialReference,["*"],!0,t.lrucache,t.interceptor)),null===c)return null;if(!1===g(c))return null;await c.load();const m=c.serviceUrl(),y=await p(m,t.spatialReference,!0);if(y.unVersion>=8)return await ye(c,l,f,d,y,t,n);const I=y.associations;let h=null,b=null,T=!1;if(null!==d&&""!==d&&void 0!==d){for(const e of y.terminals)e.terminalName===d&&(b=e.terminalId);null===b&&(T=!0)}const D=I.getFieldsIndex(),x=D.get("TOGLOBALID").name,N=D.get("FROMGLOBALID").name,v=D.get("TOTERMINALID").name,S=D.get("FROMTERMINALID").name,L=D.get("FROMNETWORKSOURCEID").name,j=D.get("TONETWORKSOURCEID").name,k=D.get("ASSOCIATIONTYPE").name,R=D.get("ISCONTENTVISIBLE").name,O=D.get("OBJECTID").name;for(const t of c.fields)if("global-id"===t.type){h=l.field(t.name);break}let z=null,H=new Z(new Y({name:"percentalong",alias:"percentalong",type:"double"}),Q.create("0",{fieldsIndex:I.getFieldsIndex(),timeZone:I.dateFieldsTimeZoneDefaultUTC})),W=new Z(new Y({name:"side",alias:"side",type:"string"}),Q.create("''",{fieldsIndex:I.getFieldsIndex(),timeZone:I.dateFieldsTimeZoneDefaultUTC}));const G="globalid",V="globalId",B={};for(const t in y.lkp)B[t]=y.lkp[t].sourceId;const K=new $(new Y({name:"classname",alias:"classname",type:"string"}),null,B);let q="";switch(f){case"midspan":{q=`((${x}='${h}') OR ( ${N}='${h}')) AND (${k} IN (5))`,K.codefield=Q.create(`CASE WHEN (${x}='${h}') THEN ${L} ELSE ${j} END`,{fieldsIndex:I.getFieldsIndex(),timeZone:I.dateFieldsTimeZoneDefaultUTC});const e=_(U.findField(I.fields,N));e.name=G,e.alias=G,z=new Z(e,Q.create(`CASE WHEN (${N}='${h}') THEN ${x} ELSE ${N} END`,{fieldsIndex:I.getFieldsIndex(),timeZone:I.dateFieldsTimeZoneDefaultUTC})),H=y.unVersion>=4?new M(U.findField(I.fields,D.get("PERCENTALONG").name)):new Z(new Y({name:"percentalong",alias:"percentalong",type:"double"}),Q.create("0",{fieldsIndex:I.getFieldsIndex(),timeZone:I.dateFieldsTimeZoneDefaultUTC}));break}case"junctionedge":{q=`((${x}='${h}') OR ( ${N}='${h}')) AND (${k} IN (4,6))`,K.codefield=Q.create(`CASE WHEN (${x}='${h}') THEN ${L} ELSE ${j} END`,{fieldsIndex:I.getFieldsIndex(),timeZone:I.dateFieldsTimeZoneDefaultUTC});const e=_(U.findField(I.fields,N));e.name=G,e.alias=G,z=new Z(e,Q.create(`CASE WHEN (${N}='${h}') THEN ${x} ELSE ${N} END`,{fieldsIndex:I.getFieldsIndex(),timeZone:I.dateFieldsTimeZoneDefaultUTC})),W=new Z(new Y({name:"side",alias:"side",type:"string"}),Q.create(`CASE WHEN (${k}=4) THEN 'from' ELSE 'to' END`,{fieldsIndex:I.getFieldsIndex(),timeZone:I.dateFieldsTimeZoneDefaultUTC}));break}case"connected":{let e=`${x}='@T'`,t=`${N}='@T'`;null!==b&&(e+=` AND ${v}=@A`,t+=` AND ${S}=@A`),q="(("+e+") OR ("+t+"))",q=C(q,"@T",h??""),e=C(e,"@T",h??""),null!==b&&(e=C(e,"@A",b.toString()),q=C(q,"@A",b.toString())),K.codefield=Q.create("CASE WHEN "+e+` THEN ${L} ELSE ${j} END`,{fieldsIndex:I.getFieldsIndex(),timeZone:I.dateFieldsTimeZoneDefaultUTC});const n=_(U.findField(I.fields,N));n.name=G,n.alias=G,z=new Z(n,Q.create("CASE WHEN "+e+` THEN ${N} ELSE ${x} END`,{fieldsIndex:I.getFieldsIndex(),timeZone:I.dateFieldsTimeZoneDefaultUTC}));break}case"container":q=`${x}='${h}' AND ${k} = 2`,null!==b&&(q+=` AND ${v} = `+b.toString()),K.codefield=L,q="( "+q+" )",z=new P(U.findField(I.fields,N),G,G);break;case"content":q=`(${N}='${h}' AND ${k} = 2)`,null!==b&&(q+=` AND ${S} = `+b.toString()),K.codefield=j,q="( "+q+" )",z=new P(U.findField(I.fields,x),G,G);break;case"structure":q=`(${x}='${h}' AND ${k} = 3)`,null!==b&&(q+=` AND ${v} = `+b.toString()),K.codefield=L,q="( "+q+" )",z=new P(U.findField(I.fields,N),G,V);break;case"attached":q=`(${N}='${h}' AND ${k} = 3)`,null!==b&&(q+=` AND ${S} = `+b.toString()),K.codefield=j,q="( "+q+" )",z=new P(U.findField(I.fields,x),G,V);break;default:throw new o(t,s.InvalidParameter,n)}T&&(q="1 <> 1");return new U({parentfeatureset:I,adaptedFields:[new M(U.findField(I.fields,O)),new M(U.findField(I.fields,R)),z,W,K,H],extraFilter:q?Q.create(q,{fieldsIndex:I.getFieldsIndex(),timeZone:I.dateFieldsTimeZoneDefaultUTC}):null})}))},e.signatures.push({name:"featuresetbyassociation",min:2,max:6}),e.functions.groupby=function(t,n){return e.standardFunctionAsync(t,n,(async(a,r,l)=>{if(w(l,3,3,t,n),!g(l[0]))throw new o(t,s.InvalidParameter,n);const f=await l[0].load(),d=[],u=[];let c=!1,m=[];if(ie(l[1]))m.push(l[1]);else if(l[1]instanceof i)m.push(l[1]);else if(ae(l[1]))m=l[1];else{if(!v(l[1]))throw new o(t,s.InvalidParameter,n);m=l[1].toArray()}for(const e of m)if(ie(e)){const t=Q.create(F(e),{fieldsIndex:f.getFieldsIndex(),timeZone:f.dateFieldsTimeZoneDefaultUTC}),n=!0===B(t)?F(e):"%%%%FIELDNAME";d.push({name:n,expression:t}),"%%%%FIELDNAME"===n&&(c=!0)}else{if(!(e instanceof i))throw new o(t,s.InvalidParameter,n);{const i=e.hasField("name")?e.field("name"):"%%%%FIELDNAME",a=e.hasField("expression")?e.field("expression"):"";if("%%%%FIELDNAME"===i&&(c=!0),!i)throw new o(t,s.InvalidParameter,n);d.push({name:i,expression:Q.create(a||i,{fieldsIndex:f.getFieldsIndex(),timeZone:f.dateFieldsTimeZoneDefaultUTC})})}}if(m=[],ie(l[2]))m.push(l[2]);else if(ae(l[2]))m=l[2];else if(v(l[2]))m=l[2].toArray();else{if(!(l[2]instanceof i))throw new o(t,s.InvalidParameter,n);m.push(l[2])}for(const e of m){if(!(e instanceof i))throw new o(t,s.InvalidParameter,n);{const i=e.hasField("name")?e.field("name"):"",a=e.hasField("statistic")?e.field("statistic"):"",r=e.hasField("expression")?e.field("expression"):"";if(!(i&&a&&ie(a)&&r))throw new o(t,s.InvalidParameter,n);u.push({name:i,statistic:a,expression:Q.create(r,{fieldsIndex:f.getFieldsIndex(),timeZone:f.dateFieldsTimeZoneDefaultUTC})})}}if(c){const e={};for(const n of f.fields)e[n.name.toLowerCase()]=1;for(const n of d)"%%%%FIELDNAME"!==n.name&&(e[n.name.toLowerCase()]=1);for(const n of u)"%%%%FIELDNAME"!==n.name&&(e[n.name.toLowerCase()]=1);let t=0;for(const n of d)if("%%%%FIELDNAME"===n.name){for(;1===e["field_"+t.toString()];)t++;e["field_"+t.toString()]=1,n.name="FIELD_"+t.toString()}}for(const n of d)se(n.expression,e,t);for(const n of u)se(n.expression,e,t);return l[0].groupby(d,u)}))},e.signatures.push({name:"groupby",min:3,max:3}),e.functions.distinct=function(t,n){return e.standardFunctionAsync(t,n,(async(a,r,l)=>{if(g(l[0])){w(l,2,2,t,n);const a=await l[0].load(),r=[];let f=[];if(ie(l[1]))f.push(l[1]);else if(l[1]instanceof i)f.push(l[1]);else if(ae(l[1]))f=l[1];else{if(!v(l[1]))throw new o(t,s.InvalidParameter,n);f=l[1].toArray()}let d=!1;for(const e of f)if(ie(e)){const t=Q.create(F(e),{fieldsIndex:a.getFieldsIndex(),timeZone:a.dateFieldsTimeZoneDefaultUTC}),n=!0===B(t)?F(e):"%%%%FIELDNAME";r.push({name:n,expression:t}),"%%%%FIELDNAME"===n&&(d=!0)}else{if(!(e instanceof i))throw new o(t,s.InvalidParameter,n);{const i=e.hasField("name")?e.field("name"):"%%%%FIELDNAME",l=e.hasField("expression")?e.field("expression"):"";if("%%%%FIELDNAME"===i&&(d=!0),!i)throw new o(t,s.InvalidParameter,n);r.push({name:i,expression:Q.create(l||i,{fieldsIndex:a.getFieldsIndex(),timeZone:a.dateFieldsTimeZoneDefaultUTC})})}}if(d){const e={};for(const n of a.fields)e[n.name.toLowerCase()]=1;for(const n of r)"%%%%FIELDNAME"!==n.name&&(e[n.name.toLowerCase()]=1);let t=0;for(const n of r)if("%%%%FIELDNAME"===n.name){for(;1===e["field_"+t.toString()];)t++;e["field_"+t.toString()]=1,n.name="FIELD_"+t.toString()}}for(const n of r)se(n.expression,e,t);return l[0].groupby(r,[])}return oe(l)}))},e.functions.getfeaturesetinfo=function(t,n){return e.standardFunctionAsync(t,n,(async(e,a,r)=>{if(w(r,1,1,t,n),!g(r[0]))return null;const o=await r[0].getFeatureSetInfo();return o?i.convertObjectToArcadeDictionary({layerId:o.layerId,layerName:o.layerName,itemId:o.itemId,serviceLayerUrl:o.serviceLayerUrl,webMapLayerId:o.webMapLayerId??null,webMapLayerTitle:o.webMapLayerTitle??null,className:null,objectClassId:null},T(t),!1,!1):null}))},e.signatures.push({name:"getfeaturesetinfo",min:1,max:1}),e.functions.filterbysubtypecode=function(t,n){return e.standardFunctionAsync(t,n,(async(e,i,a)=>{if(w(a,2,2,t,n),g(a[0])){const e=await a[0].load(),i=a[1];if(!re(i))throw new o(t,s.InvalidParameter,n);if(e.subtypeField){const t=Q.create(`${e.subtypeField}= ${a[1]}`,{fieldsIndex:e.getFieldsIndex(),timeZone:e.dateFieldsTimeZoneDefaultUTC});return new R({parentfeatureset:a[0],whereclause:t})}if(null===e.typeIdField||""===e.typeIdField)throw new o(t,s.FeatureSetDoesNotHaveSubtypes,n);const r=Q.create(`${e.typeIdField}= ${a[1]}`,{fieldsIndex:e.getFieldsIndex(),timeZone:e.dateFieldsTimeZoneDefaultUTC});return new R({parentfeatureset:a[0],whereclause:r})}throw new o(t,s.InvalidParameter,n)}))},e.signatures.push({name:"filterbysubtypecode",min:2,max:2})}}export{we as registerFunctions};