@vertigis/arcgis-rest-client
Advanced tools
Comparing version 17.0.0 to 18.0.0
@@ -16,3 +16,3 @@ { | ||
}, | ||
"version": "17.0.0", | ||
"version": "18.0.0", | ||
"files": [ | ||
@@ -25,3 +25,2 @@ "**/*.js", | ||
], | ||
"type": "module", | ||
"sideEffects": false, | ||
@@ -44,3 +43,2 @@ "scripts": { | ||
"@typescript-eslint/eslint-plugin": "^8.0.1", | ||
"@vertigis-internal/environment": "^1.0.3", | ||
"@vertigis/licensing": "5.1.1", | ||
@@ -63,4 +61,10 @@ "copyfiles": "^2.4.1", | ||
"peerDependencies": { | ||
"@vertigis/licensing": "*" | ||
"@vertigis/licensing": "*", | ||
"@vertigis-internal/environment": "^1.0.3" | ||
}, | ||
"peerDependenciesMeta": { | ||
"@vertigis-internal/environment": { | ||
"optional": true | ||
} | ||
}, | ||
"simple-git-hooks": { | ||
@@ -67,0 +71,0 @@ "pre-commit": "npx lint-staged" |
@@ -6,2 +6,3 @@ import type PortalCommonParams from "./models/PortalCommonParams"; | ||
export declare function setAllowHttpRequests(allowHttp: boolean): void; | ||
export declare function setRefreshFunction(refreshToUse: (principal: Principal) => Promise<Principal | undefined>): void; | ||
export interface RequestOptions { | ||
@@ -8,0 +9,0 @@ url: string; |
@@ -1,1 +0,1 @@ | ||
import{refresh}from"@vertigis-internal/environment/auth";import{isArcGISOnlineUrl}from"./utils";import{getToken}from"../auth";let allowHttpRequests=!1;function defaultFetch(){return fetch}export function setAllowHttpRequests(allowHttp){allowHttpRequests=allowHttp}export async function requestWithPaging(options,limit=1e3){const results=[];let total=0,start=options.pagingParams?.start??1,num=options.pagingParams?.num??100;for(;total<limit;){limit-total<num&&(num=limit-total);const response=await request({...options,pagingParams:{start:start,num:num}});if(results.push(response),"number"!=typeof response.nextStart)throw new Error(`Endpoint does not support paging: ${options.url}`);if(-1===response.nextStart)break;start=response.nextStart,total+=response.num}return results}async function request(options){const{fetch:fetch=defaultFetch(),params:params={},pagingParams:pagingParams={},principal:principal,usePost:usePost=!1,responseType:responseType="json"}=options;let url=options.url;if(url.startsWith("http:")){if(!allowHttpRequests)throw new Error(`Requests to insecure portal are not supported. Url: ${url}`);"https:"===window.location.protocol&&(url=url.replace(/^http:/i,"https:"))}const principalUrl=principal.credentials?.url,isAGOUrl=isArcGISOnlineUrl(url),isAGOPrincipalUrl=principalUrl&&isArcGISOnlineUrl(principalUrl),finalParams={...params,...pagingParams,f:"json"};if(isAGOUrl&&isAGOPrincipalUrl||principalUrl&&url.toLowerCase().startsWith(principalUrl.toLowerCase())){const updatedPrincipal=await refresh(principal);if(!updatedPrincipal)throw new Error(`Could not update principal credentials during request to ${url}`);const token=getToken(updatedPrincipal);token&&(finalParams.token=token)}const useFormData=Object.keys(finalParams).some((key=>finalParams[key]instanceof Blob||"function"==typeof Buffer&&finalParams[key]instanceof Buffer));let paramsAsQuery="";const formData=new FormData;for(const[key,value]of Object.entries(finalParams))null!=value&&(useFormData?value instanceof Blob&&value.name?formData.append(key,value,value.name):formData.append(key,value):paramsAsQuery=`${paramsAsQuery}${key}=${encodeURIComponent(value)}&`);paramsAsQuery.endsWith("&")&&(paramsAsQuery=paramsAsQuery.slice(0,-1));let finalUrl=url;const init={credentials:isArcGISOnlineUrl(finalUrl)?void 0:"include"};usePost?(init.method="POST",useFormData?init.body=formData:(init.body=paramsAsQuery,init.headers={"Content-Type":"application/x-www-form-urlencoded"})):finalUrl=`${finalUrl}?${paramsAsQuery}`;const response=await fetch(finalUrl,init);let error,result,responseCopy=response;"json"!==responseType&&(responseCopy=response.clone());try{result=await responseCopy.json(),error=result.error}catch{}if(error){const err=new Error(error.message);throw err.response=result,err}switch(responseType){case"json":return result;case"blob":return await response.blob();case"text":return await response.text();default:throw assertNever(responseType),new Error(`Unknown response type: ${responseType}`)}}function assertNever(x){}export default request; | ||
import{isArcGISOnlineUrl}from"./utils";import{getToken}from"../auth";import{warn}from"../utils/log";let refresh,allowHttpRequests=!1;function defaultFetch(){return fetch}export function setAllowHttpRequests(allowHttp){allowHttpRequests=allowHttp}export function setRefreshFunction(refreshToUse){refresh=refreshToUse}export async function requestWithPaging(options,limit=1e3){const results=[];let total=0,start=options.pagingParams?.start??1,num=options.pagingParams?.num??100;for(;total<limit;){limit-total<num&&(num=limit-total);const response=await request({...options,pagingParams:{start:start,num:num}});if(results.push(response),"number"!=typeof response.nextStart)throw new Error(`Endpoint does not support paging: ${options.url}`);if(-1===response.nextStart)break;start=response.nextStart,total+=response.num}return results}async function request(options){const{fetch:fetch=defaultFetch(),params:params={},pagingParams:pagingParams={},principal:principal,usePost:usePost=!1,responseType:responseType="json"}=options;let url=options.url;if(url.startsWith("http:")){if(!allowHttpRequests)throw new Error(`Requests to insecure portal are not supported. Url: ${url}`);"https:"===window.location.protocol&&(url=url.replace(/^http:/i,"https:"))}const principalUrl=principal.credentials?.url,isAGOUrl=isArcGISOnlineUrl(url),isAGOPrincipalUrl=principalUrl&&isArcGISOnlineUrl(principalUrl),finalParams={...params,...pagingParams,f:"json"};if(isAGOUrl&&isAGOPrincipalUrl||principalUrl&&url.toLowerCase().startsWith(principalUrl.toLowerCase())){let updatedPrincipal;if(refresh){if(updatedPrincipal=await refresh(principal),!updatedPrincipal)throw new Error(`Could not update principal credentials during request to ${url}`)}else warn("Principal Refresh function not set, see `setRefreshFunction` for details.");const token=getToken(updatedPrincipal??principal);token&&(finalParams.token=token)}const useFormData=Object.keys(finalParams).some((key=>finalParams[key]instanceof Blob||"function"==typeof Buffer&&finalParams[key]instanceof Buffer));let paramsAsQuery="";const formData=new FormData;for(const[key,value]of Object.entries(finalParams))null!=value&&(useFormData?value instanceof Blob&&value.name?formData.append(key,value,value.name):formData.append(key,value):paramsAsQuery=`${paramsAsQuery}${key}=${encodeURIComponent(value)}&`);paramsAsQuery.endsWith("&")&&(paramsAsQuery=paramsAsQuery.slice(0,-1));let finalUrl=url;const init={credentials:isArcGISOnlineUrl(finalUrl)?void 0:"include"};usePost?(init.method="POST",useFormData?init.body=formData:(init.body=paramsAsQuery,init.headers={"Content-Type":"application/x-www-form-urlencoded"})):finalUrl=`${finalUrl}?${paramsAsQuery}`;const response=await fetch(finalUrl,init);let error,result,responseCopy=response;"json"!==responseType&&(responseCopy=response.clone());try{result=await responseCopy.json(),error=result.error}catch{}if(error){const err=new Error(error.message);throw err.response=result,err}switch(responseType){case"json":return result;case"blob":return await response.blob();case"text":return await response.text();default:throw assertNever(responseType),new Error(`Unknown response type: ${responseType}`)}}function assertNever(x){}export default request; |
64205
21
1093
2
No