MCPcopy Index your code
hub / github.com/unpkg/unpkg / getBuildIntegrity

Function getBuildIntegrity

packages/unpkg-esm/src/request-handler.ts:281–321  ·  view source on GitHub ↗
(
  env: Env,
  origin: string,
  packageName: string,
  version: string,
  filename: string | undefined,
  searchParams: URLSearchParams
)

Source from the content-addressed store, hash-verified

279}
280
281async function getBuildIntegrity(
282 env: Env,
283 origin: string,
284 packageName: string,
285 version: string,
286 filename: string | undefined,
287 searchParams: URLSearchParams
288): Promise<{ response: Response } | { value: string | null }> {
289 if (searchParams.has("raw")) {
290 return { value: null };
291 }
292
293 let buildSearchParams = new URLSearchParams(searchParams);
294 buildSearchParams.set("origin", origin);
295 let response: Response;
296 try {
297 response = await fetch(
298 new URL(`/build/${packageName}@${version}${filename ?? ""}${normalizeSearch(buildSearchParams)}`, env.FILES_ORIGIN)
299 );
300 } catch {
301 return { value: null };
302 }
303
304 if (!response.ok) {
305 if (response.status === 404) {
306 return {
307 response: jsonError({
308 code: "BUILD_NOT_FOUND",
309 message: await response.text(),
310 status: 404,
311 }),
312 };
313 }
314
315 return { value: null };
316 }
317
318 let bytes = await response.arrayBuffer();
319 let digest = await crypto.subtle.digest("SHA-384", bytes);
320 return { value: `sha384-${base64Encode(new Uint8Array(digest))}` };
321}
322
323async function serveRawFile(env: Env, packageName: string, version: string, filename: string): Promise<Response> {
324 let rawResponse = await fetch(new URL(`/file/${packageName}@${version}${filename}`, env.FILES_ORIGIN));

Callers 1

createMetadataFunction · 0.85

Calls 5

normalizeSearchFunction · 0.85
jsonErrorFunction · 0.85
base64EncodeFunction · 0.85
digestMethod · 0.80
fetchFunction · 0.70

Tested by

no test coverage detected