@arcgis/core
Version:
ArcGIS Maps SDK for JavaScript: A complete 2D and 3D mapping and data visualization API
3 lines (2 loc) • 2.57 kB
JavaScript
/* COPYRIGHT Esri - https://js.arcgis.com/5.0.8/LICENSE.txt */
import e from"./config.js";import r from"./core/Error.js";import has from"./core/has.js";import{onAbort as t}from"./core/promiseUtils.js";import{isDataProtocol as o,isBlobProtocol as s,normalize as n,queryToObject as i,getInterceptor as a}from"./core/urlUtils.js";import{requestConfig as u}from"./request/config.js";import{createRequestError as p,processRequest as c}from"./request/process.js";import{ensureRequestQueue as l}from"./request/queue.js";async function f(e,r){e instanceof URL&&(e=e.toString());const u=o(e),l=s(e);l||u||(e=n(e));const f={url:e,requestOptions:{...r}};r?.query&&(f.requestOptions.query=r?.query instanceof URLSearchParams?i(r.query.toString().replaceAll("+"," ")):r?.query);const b=e=>({data:e,getAllHeaders:q,getHeader:q,httpStatus:200,requestOptions:f.requestOptions,url:f.url}),g=a(e,m.internalInterceptors);if(g){const e=await w(g,f);if(null!=e)return b(e)}let O=a(e);if(O){const e=await w(O,f);if(null!=e)return b(e);O.after||O.error||(O=null)}if(e=f.url,"image"===(r=f.requestOptions).responseType&&(has("host-webworker")||has("host-node")))throw p("request:invalid-parameters",new Error("responseType 'image' is not supported in Web Workers or Node environment"),f);if("head"===r.method){if(r.body)throw p("request:invalid-parameters",new Error("body parameter cannot be set when method is 'head'"),f);if(u||l)throw p("request:invalid-parameters",new Error("data and blob URLs are not supported for method 'head'"),f)}if(await h(),d)return d.execute(e,r);const j=new AbortController,v=t(r,()=>j.abort()),k={controller:j,credential:void 0,credentialToken:void 0,fetchOptions:void 0,hasToken:!1,interceptor:O,parameters:f,redoRequest:!1,useIdentity:m.useIdentity,useProxy:!1,useSSL:!1,withCredentials:!1},S=r.useQueue?y(k):c(k),E=await S.finally(()=>v?.remove());return O?.after?.(E),E}let d;const m=e.request,q=()=>null;async function h(){has("host-webworker")&&(!d&&globalThis.invokeStaticMessage?d=await import("./core/workers/request.js"):u.isForeignWorker=!0)}async function w(e,t){if(null!=e.responseData)return e.responseData;if(e.headers&&(t.requestOptions.headers={...t.requestOptions.headers,...e.headers}),e.query&&(t.requestOptions.query={...t.requestOptions.query,...e.query}),e.before){let s,n;try{n=await e.before(t)}catch(o){s=p("request:interceptor",o,t)}if((n instanceof Error||n instanceof r)&&(s=p("request:interceptor",n,t)),s)throw e.error&&e.error(s),s;return n}}async function y(e){const r=await l(e);return r?r.push(e):c(e)}export{f as default};