https://github.com/talentlessguy/es-fresh
fresh rewrite in TypeScript with ESM and CommonJS targets
https://github.com/talentlessguy/es-fresh
Last synced: about 1 year ago
JSON representation
fresh rewrite in TypeScript with ESM and CommonJS targets
- Host: GitHub
- URL: https://github.com/talentlessguy/es-fresh
- Owner: talentlessguy
- License: mit
- Created: 2020-07-13T01:50:18.000Z (almost 6 years ago)
- Default Branch: master
- Last Pushed: 2024-09-11T17:04:49.000Z (over 1 year ago)
- Last Synced: 2025-04-15T01:08:58.303Z (about 1 year ago)
- Language: TypeScript
- Size: 65.4 KB
- Stars: 2
- Watchers: 1
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# 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](https://github.com/foxifyjs/fresh) package but with ESM and CommonJS targets.
HTTP response freshness testing.
## Install
```sh
pnpm i es-fresh
```
## API
```ts
import fresh from 'es-fresh'
```
### `fresh(reqHeaders, resHeaders)`
Check freshness of the response using request and response headers.
When the response is still "fresh" in the client's cache `true` is
returned, otherwise `false` 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 to
indicate an end-to-end reload request, this module will return `false`
to make handling these requests transparent.
## Example
```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)
```
## License
MIT © [v1rtl](https://v1rtl.site)
[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