astro
Version:
Astro is a modern site builder with web best practices, performance, and DX front-of-mind.
44 lines (43 loc) • 1.13 kB
JavaScript
const PATH_TAG_PREFIX = "astro-path:";
function pathTag(path) {
return `${PATH_TAG_PREFIX}${path}`;
}
function buildCacheControlDirectives(options, extraDirectives) {
const directives = [];
if (extraDirectives) {
directives.push(...extraDirectives);
}
if (options.maxAge !== void 0) {
directives.push(`max-age=${options.maxAge}`);
}
if (options.swr !== void 0) {
directives.push(`stale-while-revalidate=${options.swr}`);
}
return directives.length > 0 ? directives.join(", ") : void 0;
}
function setConditionalHeaders(headers, options) {
if (options.lastModified) {
headers.set("Last-Modified", options.lastModified.toUTCString());
}
if (options.etag) {
headers.set("ETag", options.etag);
}
}
function normalizeTags(tags) {
if (!tags) return [];
return Array.isArray(tags) ? tags : [tags];
}
function collectInvalidationTags(options) {
const tags = normalizeTags(options.tags);
if (options.path) {
tags.push(pathTag(options.path));
}
return tags;
}
export {
buildCacheControlDirectives,
collectInvalidationTags,
normalizeTags,
pathTag,
setConditionalHeaders
};