diff --git a/src/router.ts b/src/router.ts index aa000ca..dc6d425 100644 --- a/src/router.ts +++ b/src/router.ts @@ -87,22 +87,23 @@ v2Router.delete("/:name+/manifests/:reference", async (req, env: Env) => { const url = new URL(req.url); if (tags.truncated) { - url.searchParams.set("last", tags.truncated ? tags.cursor : ""); + url.searchParams.set("last", tags.cursor); + const headers: Record = { + "Content-Type": "application/json", + }; + const linkValue = `<${url.toString()}>; rel="next"`; + headers["Link"] = linkValue; return new Response(JSON.stringify(ManifestTagsListTooBigError), { status: 400, - headers: { - "Link": `${url.toString()}; rel=next`, - "Content-Type": "application/json", - }, + headers, }); } - // Last but not least, delete the digest manifest await env.REGISTRY.delete(`${name}/manifests/${reference}`); return new Response("", { status: 202, headers: { - "Content-Length": "None", + "Content-Length": "0", }, }); }); @@ -576,12 +577,13 @@ v2Router.get("/:name+/tags/list", async (req, env: Env) => { const url = new URL(req.url); url.searchParams.set("n", `${n}`); url.searchParams.set("last", keys.length ? keys[keys.length - 1] : ""); - const responseHeaders: { "Content-Type": string; "Link"?: string } = { + const responseHeaders: Record = { "Content-Type": "application/json", }; // Only supply a next link if the previous result is truncated if (tags.truncated) { - responseHeaders.Link = `${url.toString()}; rel=next`; + const linkValue = `<${url.toString()}>; rel="next"`; + responseHeaders["Link"] = linkValue; } return new Response( JSON.stringify({