added doga
This commit is contained in:
51
25_02_24/node_modules/@tinyhttp/req/dist/fresh.js
generated
vendored
Normal file
51
25_02_24/node_modules/@tinyhttp/req/dist/fresh.js
generated
vendored
Normal file
@@ -0,0 +1,51 @@
|
||||
const CACHE_CONTROL_NO_CACHE_REGEXP = /(?:^|,)\s*?no-cache\s*?(?:,|$)/;
|
||||
const compareETags = (etag, str) => str === etag || str === `W/${etag}` || `W/${str}` === etag;
|
||||
function isStale(etag, noneMatch) {
|
||||
let start = 0;
|
||||
let end = 0;
|
||||
for (let i = 0, len = noneMatch.length; i < len; i++) {
|
||||
switch (noneMatch.charCodeAt(i)) {
|
||||
case 0x20 /* */:
|
||||
if (start === end)
|
||||
start = end = i + 1;
|
||||
break;
|
||||
case 0x2c /* , */:
|
||||
if (compareETags(etag, noneMatch.substring(start, end)))
|
||||
return false;
|
||||
start = end = i + 1;
|
||||
break;
|
||||
default:
|
||||
end = i + 1;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (compareETags(etag, noneMatch.substring(start, end)))
|
||||
return false;
|
||||
return true;
|
||||
}
|
||||
/**
|
||||
* Check freshness of the response using request and response headers.
|
||||
*/
|
||||
export function fresh(reqHeaders, resHeaders) {
|
||||
const modifiedSince = reqHeaders['if-modified-since'];
|
||||
const noneMatch = reqHeaders['if-none-match'];
|
||||
if (!modifiedSince && !noneMatch)
|
||||
return false;
|
||||
const cacheControl = reqHeaders['cache-control'];
|
||||
if (cacheControl && CACHE_CONTROL_NO_CACHE_REGEXP.test(cacheControl))
|
||||
return false;
|
||||
// if-none-match
|
||||
if (noneMatch && noneMatch !== '*') {
|
||||
const etag = resHeaders.etag;
|
||||
if (!etag || isStale(etag, noneMatch))
|
||||
return false;
|
||||
}
|
||||
// if-modified-since
|
||||
if (modifiedSince) {
|
||||
const lastModified = resHeaders['last-modified'];
|
||||
if (!lastModified || !(Date.parse(lastModified) <= Date.parse(modifiedSince)))
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
//# sourceMappingURL=fresh.js.map
|
||||
Reference in New Issue
Block a user