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

Function fetchFinale

github-actions/browserstack/set-browserstack-env.js:14278–14334  ·  view source on GitHub ↗
(fetchParams, response)

Source from the content-addressed store, hash-verified

14276 response.headersList.set("content-length", serializedFullLength, true);
14277 response.headersList.set("content-type", type, true);
14278 } else {
14279 response.rangeRequested = true;
14280 const rangeHeader = request.headersList.get("range", true);
14281 const rangeValue = simpleRangeHeaderValue(rangeHeader, true);
14282 if (rangeValue === "failure") {
14283 return Promise.resolve(makeNetworkError("failed to fetch the data URL"));
14284 }
14285 let { rangeStartValue: rangeStart, rangeEndValue: rangeEnd } = rangeValue;
14286 if (rangeStart === null) {
14287 rangeStart = fullLength - rangeEnd;
14288 rangeEnd = rangeStart + rangeEnd - 1;
14289 } else {
14290 if (rangeStart >= fullLength) {
14291 return Promise.resolve(makeNetworkError("Range start is greater than the blob's size."));
14292 }
14293 if (rangeEnd === null || rangeEnd >= fullLength) {
14294 rangeEnd = fullLength - 1;
14295 }
14296 }
14297 const slicedBlob = blob.slice(rangeStart, rangeEnd, type);
14298 const slicedBodyWithType = extractBody(slicedBlob);
14299 response.body = slicedBodyWithType[0];
14300 const serializedSlicedLength = isomorphicEncode(`${slicedBlob.size}`);
14301 const contentRange = buildContentRange(rangeStart, rangeEnd, fullLength);
14302 response.status = 206;
14303 response.statusText = "Partial Content";
14304 response.headersList.set("content-length", serializedSlicedLength, true);
14305 response.headersList.set("content-type", type, true);
14306 response.headersList.set("content-range", contentRange, true);
14307 }
14308 return Promise.resolve(response);
14309 }
14310 case "data:": {
14311 const currentURL = requestCurrentURL(request);
14312 const dataURLStruct = dataURLProcessor(currentURL);
14313 if (dataURLStruct === "failure") {
14314 return Promise.resolve(makeNetworkError("failed to fetch the data URL"));
14315 }
14316 const mimeType = serializeAMimeType(dataURLStruct.mimeType);
14317 return Promise.resolve(makeResponse({
14318 statusText: "OK",
14319 headersList: [
14320 ["content-type", { name: "Content-Type", value: mimeType }]
14321 ],
14322 body: safelyExtractBody(dataURLStruct.body)[0]
14323 }));
14324 }
14325 case "file:": {
14326 return Promise.resolve(makeNetworkError("not implemented... yet..."));
14327 }
14328 case "http:":
14329 case "https:": {
14330 return httpFetch(fetchParams).catch((err) => makeNetworkError(err));
14331 }
14332 default: {
14333 return Promise.resolve(makeNetworkError("unknown scheme"));
14334 }
14335 }

Callers 3

processBodyErrorFunction · 0.70
processBodyFunction · 0.70
mainFetchFunction · 0.70

Calls 2

processResponseEndOfBodyFunction · 0.70
processResponseMethod · 0.45

Tested by

no test coverage detected