fresh rewrite in TypeScript with ESM targets
npm install es-fresh![Top language][top-lang-image]
![Vulnerabilities][snyk-image]
[![Version][npm-v-image]][npm-url]
[![Node Version][node-version-image]][node-version-url]
![Last commit][last-commit-image]
> This is a copy of @foxify/fresh package but with ESM and CommonJS targets.
HTTP response freshness testing.
``sh`
pnpm i es-fresh
`ts`
import fresh from 'es-fresh'
Check freshness of the response using request and response headers.
When the response is still "fresh" in the client's cache true isfalse
returned, otherwise is returned to indicate that the client
cache is now stale and the full response should be sent.
When a client sends the Cache-Control: no-cache request header tofalse
indicate an end-to-end reload request, this module will return
to make handling these requests transparent.
`ts
import fresh from 'es-fresh'
import { createServer } from 'http'
function isFresh(req, res) {
return fresh(req.headers, {
etag: res.getHeader('ETag'),
'last-modified': res.getHeader('Last-Modified'),
})
}
createServer((req, res) => {
// perform server logic
// ... including adding ETag / Last-Modified response headers
if (isFresh(req, res)) {
// client has a fresh copy of resource
res.statusCode = 304
res.end()
return
}
// send the resource
res.statusCode = 200
res.end('hello, world!')
}).listen(3000)
``
MIT © v1rtl
[node-version-image]: https://img.shields.io/node/v/es-fresh.svg?style=flat-square
[node-version-url]: https://nodejs.org
[top-lang-image]: https://img.shields.io/github/languages/top/talentlessguy/es-fresh.svg?style=flat-square
[snyk-image]: https://img.shields.io/snyk/vulnerabilities/npm/es-fresh.svg?style=flat-square
[npm-v-image]: https://img.shields.io/npm/v/es-fresh.svg?style=flat-square
[npm-url]: https://www.npmjs.com/package/es-fresh
[last-commit-image]: https://img.shields.io/github/last-commit/talentlessguy/es-fresh.svg?style=flat-square