// All material copyright Esri, All Rights Reserved, unless otherwise specified. // See https://js.arcgis.com/4.30/esri/copyright.txt for details. //>>built define("require ./config ./kernel ./core/Error ./core/has ./core/lang ./core/promiseUtils ./core/urlUtils ./portal/support/urlUtils ./support/apiKeyUtils ./support/requestUtils".split(" "),function(G,C,n,D,y,O,w,k,P,Q,x){async function q(a,b){a instanceof URL&&(a=a.toString());b?.query instanceof URLSearchParams&&(b.query=k.queryToObject(b.query.toString().replaceAll("+"," ")));var c=k.isDataProtocol(a);const e=k.isBlobProtocol(a);e||c||(a=k.normalize(a));const d={url:a,requestOptions:{...b}};b=m=> ({data:m,getAllHeaders:u,getHeader:u,httpStatus:200,requestOptions:d.requestOptions,url:d.url});var f=k.getInterceptor(a,p.internalInterceptors);if(f&&(f=await H(f,d),null!=f))return b(f);if(f=k.getInterceptor(a)){a=await H(f,d);if(null!=a)return b(a);f.after||f.error||(f=null)}a=d.url;b=d.requestOptions;if("image"===b.responseType&&(y("host-webworker")||y("host-node")))throw r("request:invalid-parameters",Error("responseType 'image' is not supported in Web Workers or Node environment"),d);if("head"=== b.method){if(b.body)throw r("request:invalid-parameters",Error("body parameter cannot be set when method is 'head'"),d);if(c||e)throw r("request:invalid-parameters",Error("data and blob URLs are not supported for method 'head'"),d);}await R();if(z)return z.execute(a,b);const h=new AbortController,g=w.onAbort(b,()=>h.abort());c=await S({controller:h,credential:void 0,credentialToken:void 0,fetchOptions:void 0,hasToken:!1,interceptor:f,params:d,redoRequest:!1,useIdentity:p.useIdentity,useProxy:!1,useSSL:!1, withCredentials:!1}).finally(()=>g?.remove());f?.after?.(c);return c}function T(a){(a=k.getOrigin(a))&&!q._corsServers.includes(a)&&q._corsServers.push(a)}function I(a){a=k.getOrigin(a);return!a||a.endsWith(".arcgis.com")||q._corsServers.includes(a)||k.isTrustedServer(a)}function r(a,b,c,e){let d="Error";const f={url:c.url,requestOptions:c.requestOptions,getAllHeaders:u,getHeader:u,ssl:!1};if(b instanceof D)return b.details?(b.details=O.clone(b.details),b.details.url=c.url,b.details.requestOptions= c.requestOptions):b.details=f,b;if(b){c=e&&(()=>Array.from(e.headers));const h=e&&(m=>e.headers.get(m)),g=b.message;g&&(d=g);c&&h&&(f.getAllHeaders=c,f.getHeader=h);f.httpStatus=(null!=b.httpCode?b.httpCode:b.code)||e?.status||0;f.subCode=b.subcode;f.messageCode=b.messageCode;f.messages="string"===typeof b.details?[b.details]:b.details;f.raw=A in b?b[A]:b}return w.isAbortError(b)?w.createAbortError():new D(a,d,f)}async function R(){y("host-webworker")&&!z&&(z=await new Promise((a,b)=>G(["./core/workers/request"], a,b)))}async function E(){n.id||await new Promise((a,b)=>G(["./identity/IdentityManager"],c=>a(Object.freeze(Object.defineProperty({__proto__:null,default:c},Symbol.toStringTag,{value:"Module"}))),b))}async function U(a){const b=a.params.url,c=a.params.requestOptions,e=a.controller.signal,d=c.body;let f=null,h=null;J&&"HTMLFormElement"in globalThis&&(d instanceof FormData?f=d:d instanceof HTMLFormElement&&(f=new FormData(d)));"string"===typeof d&&(h=d);a.fetchOptions={cache:c.cacheBust?"no-cache": "default",credentials:"same-origin",headers:c.headers||{},method:"head"===c.method?"HEAD":"GET",mode:"cors",priority:p.priority,redirect:"follow",signal:e};if(f||h)a.fetchOptions.body=f||h;"anonymous"===c.authMode&&(a.useIdentity=!1);a.hasToken=!!(/token=/i.test(b)||c.query?.token||f?.get("token"));!a.hasToken&&C.apiKey&&Q.supportsApiKey(b)&&(c.query||(c.query={}),c.query.token=C.apiKey,a.hasToken=!0);if(a.useIdentity&&!a.hasToken&&!a.credentialToken&&!K(b)&&!w.isAborted(e)){let g;"immediate"===c.authMode? (await E(),g=await n.id.getCredential(b,{signal:e}),a.credential=g):"no-prompt"===c.authMode?(await E(),g=await n.id.getCredential(b,{prompt:!1,signal:e}).catch(()=>{}),a.credential=g):n.id&&(g=n.id.findCredential(b));g&&(a.credentialToken=g.token,a.useSSL=!!g.ssl)}}function K(a){return V.some(b=>b.test(a))}async function W(a){let b=a.params.url;const c=a.params.requestOptions,e=a.fetchOptions??{},d=k.isBlobProtocol(b)||k.isDataProtocol(b),f=c.responseType||"json";var h=d?0:null!=c.timeout?c.timeout: p.timeout,g=!1;if(!d){a.useSSL&&(b=k.toHTTPS(b));var m={...c.query};a.credentialToken&&(m.token=a.credentialToken);g=k.objectToQuery(m);y("esri-url-encodes-apostrophe")&&(g=g.replaceAll("'","%27"));const t=b.length+1+g.length;let v;g="delete"===c.method||"post"===c.method||"put"===c.method||!!c.body||t>p.maxUrlLength;const B=c.useProxy||!!k.getProxyRule(b);if(B){const F=k.getProxyUrl(b);v=F.path;!g&&v.length+1+t>p.maxUrlLength&&(g=!0);F.query&&(m={...F.query,...m})}if("HEAD"===e.method&&(g||B)){if(g){if(t> p.maxUrlLength)throw r("request:invalid-parameters",Error("URL exceeds maximum length"),a.params);throw r("request:invalid-parameters",Error("cannot use POST request when method is 'head'"),a.params);}if(B)throw r("request:invalid-parameters",Error("cannot use proxy when method is 'head'"),a.params);}g?(e.method="delete"===c.method?"DELETE":"put"===c.method?"PUT":"POST",c.body?b=k.addQueryParameters(b,m):(e.body=k.objectToQuery(m),e.headers||(e.headers={}),e.headers["Content-Type"]="application/x-www-form-urlencoded")): b=k.addQueryParameters(b,m);B&&(a.useProxy=!0,b=`${v}?${b}`);m.token&&J&&e.body instanceof FormData&&!P.isSecureProxyService(b)&&e.body.set("token",m.token);c.hasOwnProperty("withCredentials")?a.withCredentials=c.withCredentials:k.hasSameOrigin(b,k.getAppUrl())||(k.isTrustedServer(b)?a.withCredentials=!0:n.id&&n.id.findServerInfo(b)?.webTierAuth&&(a.withCredentials=!0));a.withCredentials&&(e.credentials="include",x.isNoCorsRequestRequired(b)&&await x.sendNoCorsRequest(g?k.addQueryParameters(b,m): b))}m=0;let L=!1;0{L=!0;a.controller.abort()},h));h=void 0;let l;try{if("native-request-init"===c.responseType)l=e,l.url=b;else if("image"!==c.responseType||"default"!==e.cache||"GET"!==e.method||g||X(c.headers)||!d&&!a.useProxy&&p.proxyUrl&&!I(b))if(q._beforeFetch&&await q._beforeFetch(b,e),h=await fetch(b,e),q._afterFetch&&await q._afterFetch(h),a.useProxy||T(b),"native"===c.responseType)l=h;else{if("HEAD"!==e.method)if(h.ok){switch(f){case "array-buffer":l=await h.arrayBuffer(); break;case "blob":case "image":l=await h.blob();break;default:l=await h.text()}m&&(clearTimeout(m),m=0);if("json"===f||"xml"===f||"document"===f)if(l)switch(f){case "json":l=JSON.parse(l);break;case "xml":l=M(l,"application/xml");break;case "document":l=M(l,"text/html")}else l=null;if(l){if("array-buffer"===f||"blob"===f){const t=h.headers.get("Content-Type");if(t&&/application\/json|text\/plain/i.test(t)&&750>=l["blob"===f?"size":"byteLength"])try{const v=await (new Response(l)).json();v.error&& (l=v)}catch{}}"image"===f&&l instanceof Blob&&(l=await N(URL.createObjectURL(l),a,!0))}}else{l=await h.text();try{l=JSON.parse(l)}catch{}}}else l=await N(b,a)}catch(t){if("AbortError"===t.name){if(L)throw x.createTimeoutError();throw w.createAbortError("Request canceled");}if(!h&&t instanceof TypeError&&p.proxyUrl&&!c.body&&"delete"!==c.method&&"head"!==c.method&&"post"!==c.method&&"put"!==c.method&&!a.useProxy&&!I(b))a.redoRequest=!0,k.addProxyRule({proxyUrl:p.proxyUrl,urlPrefix:k.getOrigin(b)?? ""});else throw t;}finally{m&&clearTimeout(m)}return[h,l]}async function H(a,b){if(null!=a.responseData)return a.responseData;a.headers&&(b.requestOptions.headers={...b.requestOptions.headers,...a.headers});a.query&&(b.requestOptions.query={...b.requestOptions.query,...a.query});if(a.before){let c,e;try{e=await a.before(b)}catch(d){c=r("request:interceptor",d,b)}if(e instanceof Error||e instanceof D)c=r("request:interceptor",e,b);if(c)throw a.error&&a.error(c),c;return e}}function X(a){if(a)for(const b of Object.getOwnPropertyNames(a))if(a[b])return!0; return!1}function M(a,b){let c;try{c=(new DOMParser).parseFromString(a,b)}catch{}if(!c||c.getElementsByTagName("parsererror").length)throw new SyntaxError("XML Parse error");return c}async function S(a){await U(a);let b;try{do[b,c]=await W(a);while(!await Y(a,b,c))}catch(f){var c=r("request:server",f,a.params,b);c.details.ssl=a.useSSL;a.interceptor?.error&&a.interceptor.error(c);throw c;}var e=a.params.url;c&&/\/sharing\/rest\/(accounts|portals)\/self/i.test(e)&&(a.hasToken||a.credentialToken||!c.user?.username|| k.isTrustedServer(e)||(e=k.getOrigin(e,!0))&&p.trustedServers.push(e),Array.isArray(c.authorizedCrossOriginNoCorsDomains)&&x.registerNoCorsDomains(c.authorizedCrossOriginNoCorsDomains));var d=a.credential;d&&n.id&&(e=n.id.findServerInfo(d.server)?.owningSystemUrl)&&(e=e.replace(/\/?$/,"/sharing"),(d=n.id.findCredential(e,d.userId))&&-1===n.id._getIdenticalSvcIdx(e,d)&&d.resources.unshift(e));return{data:c,getAllHeaders:b?()=>Array.from(b.headers):u,getHeader:b?f=>b.headers.get(f):u,httpStatus:b?.status?? 200,requestOptions:a.params.requestOptions,ssl:a.useSSL,url:a.params.url}}async function Y(a,b,c){if(a.redoRequest)return a.redoRequest=!1;var e=a.params.requestOptions;if(!b||"native"===e.responseType||"native-request-init"===e.responseType)return!0;let d;c&&(c.error&&"object"===typeof c.error?d=c.error:"error"===c.status&&Array.isArray(c.messages)&&(d={...c},d[A]=c,d.details=c.messages));if(!d&&!b.ok)throw d=Error(`Unable to load ${b.url} status: ${b.status}`),d[A]=c,d;let f;b=null;let h;d&&(f= Number(d.code),b=d.hasOwnProperty("subcode")?Number(d.subcode):null,h=d.messageCode,h=h?.toUpperCase());e=e.authMode;if(403===f&&(4===b||d.message?.toLowerCase().includes("ssl")&&!d.message.toLowerCase().includes("permission"))){if(!a.useSSL)return a.useSSL=!0,!1}else if(!(a.hasToken||!a.useIdentity||"no-prompt"===e&&498!==f||void 0===f||!Z.has(f)||K(a.params.url)||403===f&&(h&&aa.has(h)||!(null==b||2===b&&a.credentialToken)))){await E();try{const g=await n.id.getCredential(a.params.url,{error:r("request:server", d,a.params),prompt:"no-prompt"!==e,signal:a.controller.signal,token:a.credentialToken});a.credential=g;a.credentialToken=g.token;a.useSSL=a.useSSL||g.ssl;return!1}catch(g){if("no-prompt"===e)return a.credential=void 0,a.credentialToken=void 0,!1;d=g}}if(d)throw d;return!0}function N(a,b,c=!1){const e=b.controller.signal,d=new Image;d.crossOrigin=b.withCredentials?"use-credentials":"anonymous";d.alt="";d.fetchPriority=p.priority;d.src=a;return x.loadImageAsync(d,a,c,e)}let z;const p=C.request,J="FormData"in globalThis,Z=new Set([499,498,403,401]),aa=new Set(["COM_0056","COM_0057","SB_0008"]),V=[/\/arcgis\/tokens/i,/\/sharing(\/rest)?\/generatetoken/i,/\/rest\/info/i],u=()=>null,A=Symbol();q._corsServers=["https://server.arcgisonline.com","https://services.arcgisonline.com"];q._beforeFetch=void 0;q._afterFetch=void 0;return q});