MCPcopy
hub / github.com/di-sukharev/opencommit / mainFetch

Function mainFetch

out/cli.cjs:60070–60166  ·  view source on GitHub ↗
(fetchParams, recursive = false)

Source from the content-addressed store, hash-verified

60068 }
60069 if (subresourceSet.has(request3.destination)) {
60070 }
60071 mainFetch(fetchParams).catch((err) => {
60072 fetchParams.controller.terminate(err);
60073 });
60074 return fetchParams.controller;
60075 }
60076 async function mainFetch(fetchParams, recursive = false) {
60077 const request3 = fetchParams.request;
60078 let response = null;
60079 if (request3.localURLsOnly && !urlIsLocal(requestCurrentURL(request3))) {
60080 response = makeNetworkError("local URLs only");
60081 }
60082 tryUpgradeRequestToAPotentiallyTrustworthyURL(request3);
60083 if (requestBadPort(request3) === "blocked") {
60084 response = makeNetworkError("bad port");
60085 }
60086 if (request3.referrerPolicy === "") {
60087 request3.referrerPolicy = request3.policyContainer.referrerPolicy;
60088 }
60089 if (request3.referrer !== "no-referrer") {
60090 request3.referrer = determineRequestsReferrer(request3);
60091 }
60092 if (response === null) {
60093 response = await (async () => {
60094 const currentURL = requestCurrentURL(request3);
60095 if (
60096 // - request’s current URL’s origin is same origin with request’s origin,
60097 // and request’s response tainting is "basic"
60098 sameOrigin(currentURL, request3.url) && request3.responseTainting === "basic" || // request’s current URL’s scheme is "data"
60099 currentURL.protocol === "data:" || // - request’s mode is "navigate" or "websocket"
60100 (request3.mode === "navigate" || request3.mode === "websocket")
60101 ) {
60102 request3.responseTainting = "basic";
60103 return await schemeFetch(fetchParams);
60104 }
60105 if (request3.mode === "same-origin") {
60106 return makeNetworkError('request mode cannot be "same-origin"');
60107 }
60108 if (request3.mode === "no-cors") {
60109 if (request3.redirect !== "follow") {
60110 return makeNetworkError(
60111 'redirect mode cannot be "follow" for "no-cors" request'
60112 );
60113 }
60114 request3.responseTainting = "opaque";
60115 return await schemeFetch(fetchParams);
60116 }
60117 if (!urlIsHttpHttpsScheme(requestCurrentURL(request3))) {
60118 return makeNetworkError("URL scheme must be a HTTP(S) scheme");
60119 }
60120 request3.responseTainting = "cors";
60121 return await httpFetch(fetchParams);
60122 })();
60123 }
60124 if (recursive) {
60125 return response;
60126 }
60127 if (response.status !== 0 && !response.internalResponse) {

Callers 2

fetchingFunction · 0.85
httpRedirectFetchFunction · 0.85

Calls 15

urlIsLocalFunction · 0.85
requestCurrentURLFunction · 0.85
makeNetworkErrorFunction · 0.85
requestBadPortFunction · 0.85
sameOriginFunction · 0.85
schemeFetchFunction · 0.85
urlIsHttpHttpsSchemeFunction · 0.85
httpFetchFunction · 0.85
filterResponseFunction · 0.85
processBodyErrorFunction · 0.85

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…