MCPcopy Create free account
hub / github.com/angular/dev-infra / httpNetworkOrCacheFetch

Function httpNetworkOrCacheFetch

github-actions/saucelabs/set-saucelabs-env.js:14440–14561  ·  view source on GitHub ↗
(fetchParams, isAuthenticationFetch = false, isNewConnectionFetch = false)

Source from the content-addressed store, hash-verified

14438 return Promise.resolve(makeNetworkError(err));
14439 }
14440 if (!urlIsHttpHttpsScheme(locationURL)) {
14441 return Promise.resolve(makeNetworkError("URL scheme must be a HTTP(S) scheme"));
14442 }
14443 if (request.redirectCount === 20) {
14444 return Promise.resolve(makeNetworkError("redirect count exceeded"));
14445 }
14446 request.redirectCount += 1;
14447 if (request.mode === "cors" && (locationURL.username || locationURL.password) && !sameOrigin(request, locationURL)) {
14448 return Promise.resolve(makeNetworkError('cross origin not allowed for request mode "cors"'));
14449 }
14450 if (request.responseTainting === "cors" && (locationURL.username || locationURL.password)) {
14451 return Promise.resolve(makeNetworkError(
14452 'URL cannot contain credentials for request mode "cors"'
14453 ));
14454 }
14455 if (actualResponse.status !== 303 && request.body != null && request.body.source == null) {
14456 return Promise.resolve(makeNetworkError());
14457 }
14458 if ([301, 302].includes(actualResponse.status) && request.method === "POST" || actualResponse.status === 303 && !GET_OR_HEAD.includes(request.method)) {
14459 request.method = "GET";
14460 request.body = null;
14461 for (const headerName of requestBodyHeader) {
14462 request.headersList.delete(headerName);
14463 }
14464 }
14465 if (!sameOrigin(requestCurrentURL(request), locationURL)) {
14466 request.headersList.delete("authorization", true);
14467 request.headersList.delete("proxy-authorization", true);
14468 request.headersList.delete("cookie", true);
14469 request.headersList.delete("host", true);
14470 }
14471 if (request.body != null) {
14472 assert(request.body.source != null);
14473 request.body = safelyExtractBody(request.body.source)[0];
14474 }
14475 const timingInfo = fetchParams.timingInfo;
14476 timingInfo.redirectEndTime = timingInfo.postRedirectStartTime = coarsenedSharedCurrentTime(fetchParams.crossOriginIsolatedCapability);
14477 if (timingInfo.redirectStartTime === 0) {
14478 timingInfo.redirectStartTime = timingInfo.startTime;
14479 }
14480 request.urlList.push(locationURL);
14481 setRequestReferrerPolicyOnRedirect(request, actualResponse);
14482 return mainFetch(fetchParams, true);
14483 }
14484 function httpNetworkOrCacheFetch(fetchParams, isAuthenticationFetch = false, isNewConnectionFetch = false) {
14485 return __async(this, null, function* () {
14486 const request = fetchParams.request;
14487 let httpFetchParams = null;
14488 let httpRequest = null;
14489 let response = null;
14490 const httpCache = null;
14491 const revalidatingFlag = false;
14492 if (request.window === "no-window" && request.redirect === "error") {
14493 httpFetchParams = fetchParams;
14494 httpRequest = request;
14495 } else {
14496 httpRequest = cloneRequest(request);
14497 httpFetchParams = __spreadValues({}, fetchParams);

Callers 1

httpFetchFunction · 0.70

Calls 15

__asyncFunction · 0.70
cloneRequestFunction · 0.70
__spreadValuesFunction · 0.70
isomorphicEncodeFunction · 0.70
appendFetchMetadataFunction · 0.70
urlHasHttpsSchemeFunction · 0.70
requestCurrentURLFunction · 0.70
makeNetworkErrorFunction · 0.70
httpNetworkFetchFunction · 0.70
isCancelledFunction · 0.70

Tested by

no test coverage detected