/* All material copyright ESRI, All Rights Reserved, unless otherwise specified. See https://js.arcgis.com/4.25/esri/copyright.txt for details. */ import e from"../request.js";import r from"../core/Error.js";import t from"../core/Logger.js";import{isSome as o}from"../core/maybe.js";import{getDeepValue as s}from"../core/object.js";import{removeTrailingSlash as a}from"../core/urlUtils.js";import{asValidOptions as n,parseUrl as l}from"./utils.js";import i from"./support/NetworkServiceDescription.js";const d=t.getLogger("esri.rest.networkService");function u(e,r,t,o){o[t]=[r.length,r.length+e.length],e.forEach((e=>{r.push(e.geometry)}))}function f(e,r){for(let t=0;t=10.4?m(t,o,s):v(t,s),{defaultTravelMode:u,supportedTravelModes:f}=await d;return l.defaultTravelMode=u,l.supportedTravelModes=f,i.fromJSON(l)}async function v(r,t){const o=n({f:"json"},t),{data:i}=await e(r.replace(/\/rest\/.*$/i,"/info"),o);if(!i||!i.owningSystemUrl)return{supportedTravelModes:[],defaultTravelMode:null};const{owningSystemUrl:d}=i,u=a(d)+"/sharing/rest/portals/self",{data:f}=await e(u,o),c=s("helperServices.routingUtilities.url",f);if(!c)return{supportedTravelModes:[],defaultTravelMode:null};const p=l(d),v=/\/solve$/i.test(p.path)?"Route":/\/solveclosestfacility$/i.test(p.path)?"ClosestFacility":"ServiceAreas",m=n({f:"json",serviceName:v},t),T=a(c)+"/GetTravelModes/execute",M=await e(T,m),h=[];let g=null;if(M?.data?.results?.length){const e=M.data.results;for(const r of e)if("supportedTravelModes"===r.paramName){if(r.value?.features)for(const{attributes:e}of r.value.features)if(e){const r=JSON.parse(e.TravelMode);h.push(r)}}else"defaultTravelMode"===r.paramName&&(g=r.value)}return{supportedTravelModes:h,defaultTravelMode:g}}async function m(t,o,s){try{const r=n({f:"json",token:o},s),l=a(t)+"/retrieveTravelModes",{data:{supportedTravelModes:i,defaultTravelMode:d}}=await e(l,r);return{supportedTravelModes:i,defaultTravelMode:d}}catch(l){throw new r("network-service:retrieveTravelModes","Could not get to the NAServer's retrieveTravelModes.",{error:l})}}export{u as collectGeometries,f as dropZValuesOffInputGeometry,p as fetchServiceDescription,c as isInputGeometryZAware};