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

Function mainFetch

github-actions/browserstack/set-browserstack-env.js:14082–14180  ·  view source on GitHub ↗
(fetchParams, recursive = false)

Source from the content-addressed store, hash-verified

14080 return fetchParams.controller;
14081 }
14082 function mainFetch(fetchParams, recursive = false) {
14083 return __async(this, null, function* () {
14084 const request = fetchParams.request;
14085 let response = null;
14086 if (request.localURLsOnly && !urlIsLocal(requestCurrentURL(request))) {
14087 response = makeNetworkError("local URLs only");
14088 }
14089 tryUpgradeRequestToAPotentiallyTrustworthyURL(request);
14090 if (requestBadPort(request) === "blocked") {
14091 response = makeNetworkError("bad port");
14092 }
14093 if (request.referrerPolicy === "") {
14094 request.referrerPolicy = request.policyContainer.referrerPolicy;
14095 }
14096 if (request.referrer !== "no-referrer") {
14097 request.referrer = determineRequestsReferrer(request);
14098 }
14099 if (response === null) {
14100 response = yield (() => __async(this, null, function* () {
14101 const currentURL = requestCurrentURL(request);
14102 if (
14103 // - request’s current URL’s origin is same origin with request’s origin,
14104 // and request’s response tainting is "basic"
14105 sameOrigin(currentURL, request.url) && request.responseTainting === "basic" || // request’s current URL’s scheme is "data"
14106 currentURL.protocol === "data:" || // - request’s mode is "navigate" or "websocket"
14107 (request.mode === "navigate" || request.mode === "websocket")
14108 ) {
14109 request.responseTainting = "basic";
14110 return yield schemeFetch(fetchParams);
14111 }
14112 if (request.mode === "same-origin") {
14113 return makeNetworkError('request mode cannot be "same-origin"');
14114 }
14115 if (request.mode === "no-cors") {
14116 if (request.redirect !== "follow") {
14117 return makeNetworkError(
14118 'redirect mode cannot be "follow" for "no-cors" request'
14119 );
14120 }
14121 request.responseTainting = "opaque";
14122 return yield schemeFetch(fetchParams);
14123 }
14124 if (!urlIsHttpHttpsScheme(requestCurrentURL(request))) {
14125 return makeNetworkError("URL scheme must be a HTTP(S) scheme");
14126 }
14127 request.responseTainting = "cors";
14128 return yield httpFetch(fetchParams);
14129 }))();
14130 }
14131 if (recursive) {
14132 return response;
14133 }
14134 if (response.status !== 0 && !response.internalResponse) {
14135 if (request.responseTainting === "cors") {
14136 }
14137 if (request.responseTainting === "basic") {
14138 response = filterResponse(response, "basic");
14139 } else if (request.responseTainting === "cors") {

Callers 2

fetchingFunction · 0.70
httpRedirectFetchFunction · 0.70

Calls 15

__asyncFunction · 0.70
urlIsLocalFunction · 0.70
requestCurrentURLFunction · 0.70
makeNetworkErrorFunction · 0.70
requestBadPortFunction · 0.70
sameOriginFunction · 0.70
schemeFetchFunction · 0.70
urlIsHttpHttpsSchemeFunction · 0.70
httpFetchFunction · 0.70
filterResponseFunction · 0.70

Tested by

no test coverage detected