Skip to content

Commit eacaabe

Browse files
committed
refactor: expose getEtag
1 parent 73f5ecb commit eacaabe

File tree

1 file changed

+14
-8
lines changed

1 file changed

+14
-8
lines changed

src/index.js

Lines changed: 14 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@ const createCompress = require('compress-brotli')
44
const memoize = require('@keyvhq/memoize')
55
const Keyv = require('@keyvhq/core')
66
const assert = require('assert')
7-
const getEtag = require('etag')
87

98
const { createKey, isFunction, setHeaders, size } = require('./util')
109

@@ -34,11 +33,14 @@ const cacheableResponse = ({
3433
...compressOpts
3534
})
3635

37-
const get = opts => Promise.resolve(rawGet(opts)).then(result => {
38-
if (typeof result !== 'object') return result
39-
result.etag = getEtag(serialize(result))
40-
return result
41-
})
36+
const getEtag = input => require('etag')(serialize(input))
37+
38+
const get = opts =>
39+
Promise.resolve(rawGet(opts)).then(result => {
40+
if (typeof result !== 'object') return result
41+
result.etag = getEtag(result)
42+
return result
43+
})
4244

4345
const memoGet = memoize(get, cache, {
4446
key: getKey,
@@ -48,7 +50,7 @@ const cacheableResponse = ({
4850
value: compress
4951
})
5052

51-
return async opts => {
53+
const fn = async opts => {
5254
const { req, res } = opts
5355
const [raw, { forceExpiration, hasValue, key, isExpired, isStale }] =
5456
await memoGet(opts)
@@ -61,7 +63,7 @@ const cacheableResponse = ({
6163
const {
6264
createdAt = Date.now(),
6365
data = null,
64-
etag = getEtag(serialize(result)),
66+
etag = getEtag(result),
6567
staleTtl = memoGet.staleTtl(result),
6668
ttl = memoGet.ttl(result),
6769
...props
@@ -101,6 +103,10 @@ const cacheableResponse = ({
101103

102104
return send({ data, res, req, ...props })
103105
}
106+
107+
fn.getEtag = getEtag
108+
return fn
104109
}
105110

106111
module.exports = cacheableResponse
112+
module.exports.setHeaders = setHeaders

0 commit comments

Comments
 (0)