route-cache
Advanced tools
Comparing version 0.4.1 to 0.4.2
36
index.js
'use strict' | ||
var LRU = require('lru-cache') | ||
const LRU = require('lru-cache') | ||
const debug = require('debug')('route-cache') | ||
const queues = Object.create(null) | ||
var queues = {} | ||
var defaults = { | ||
const defaults = { | ||
max: 64 * 1000000, // ~64mb | ||
@@ -15,3 +16,3 @@ length: function (n, key) { | ||
} | ||
var cacheStore = new LRU(defaults) | ||
let cacheStore = new LRU(defaults) | ||
@@ -27,4 +28,5 @@ module.exports.config = function (opts) { | ||
function drainQueue (key) { | ||
var subscriber = null | ||
while (queues[key].length > 0) { | ||
debug('drain!', key) | ||
let subscriber = null | ||
while (queues[key] && queues[key].length > 0) { | ||
subscriber = queues[key].shift() | ||
@@ -37,3 +39,3 @@ process.nextTick(subscriber) | ||
module.exports.cacheSeconds = function (secondsTTL, cacheKey) { | ||
var ttl = secondsTTL * 1000 | ||
const ttl = secondsTTL * 1000 | ||
return function (req, res, next) { | ||
@@ -49,3 +51,3 @@ var key = req.originalUrl // default cache key | ||
var redirectKey = cacheStore.get('redirect:' + key) | ||
const redirectKey = cacheStore.get('redirect:' + key) | ||
if (redirectKey) { | ||
@@ -55,5 +57,6 @@ return res.redirect(redirectKey.status, redirectKey.url) | ||
var value = cacheStore.get(key) | ||
const value = cacheStore.get(key) | ||
if (value) { | ||
// returns the value immediately | ||
debug('hit!!', key) | ||
if (value.isJson) { | ||
@@ -78,2 +81,3 @@ res.json(value.body) | ||
function rawSend (data, isJson) { | ||
debug('rawSend', typeof data, data.length) | ||
// pass-through for Buffer - not supported | ||
@@ -97,4 +101,6 @@ if (typeof data === 'object') { | ||
if (isJson) { | ||
debug('res.original_json') | ||
res.original_json(body) | ||
} else { | ||
debug('res.original_send') | ||
res.original_send(body) | ||
@@ -106,2 +112,3 @@ } | ||
if (queues[key].length === 0) { | ||
debug('miss:', key) | ||
queues[key].push(function noop () {}) | ||
@@ -112,2 +119,3 @@ | ||
res.send = function (data) { | ||
// debug('res.send() >>', data.length) | ||
if (didHandle) { | ||
@@ -126,4 +134,4 @@ res.original_send(data) | ||
res.redirect = function (url) { | ||
var address = url | ||
var status = 302 | ||
let address = url | ||
let status = 302 | ||
@@ -149,4 +157,5 @@ // allow statusCode for 301 redirect. See: https://github.com/expressjs/express/blob/master/lib/response.js#L857 | ||
} else { | ||
debug(key, '>> has queue.length:', queues[key].length) | ||
queues[key].push(function () { | ||
var redirectKey = cacheStore.get('redirect:' + key) | ||
const redirectKey = cacheStore.get('redirect:' + key) | ||
if (redirectKey) { | ||
@@ -156,3 +165,4 @@ return res.redirect(redirectKey.status, redirectKey.url) | ||
var value = cacheStore.get(key) || {} | ||
const value = cacheStore.get(key) || {} | ||
debug('>> queued hit:', key, value.length) | ||
if (value.isJson) { | ||
@@ -159,0 +169,0 @@ res.json(value.body) |
{ | ||
"name": "route-cache", | ||
"version": "0.4.1", | ||
"version": "0.4.2", | ||
"description": "express middleware for caching your routes", | ||
"main": "index.js", | ||
"scripts": { | ||
"test": "standard && mocha -R spec test" | ||
"test": "standard && DEBUG=route-cache mocha -R spec test" | ||
}, | ||
@@ -22,2 +22,3 @@ "repository": { | ||
"dependencies": { | ||
"debug": "3.0.1", | ||
"lru-cache": "4.0.1" | ||
@@ -24,0 +25,0 @@ }, |
@@ -0,12 +1,13 @@ | ||
/* globals decribe */ | ||
'use strict' | ||
var request = require('supertest'), | ||
routeCache = require('../index'), | ||
express = require('express') | ||
const request = require('supertest') | ||
const routeCache = require('../index') | ||
const express = require('express') | ||
var testindex = 0 | ||
var paramTestindex = 0 | ||
var testindexRemove = 0 | ||
let testindex = 0 | ||
let paramTestindex = 0 | ||
let testindexRemove = 0 | ||
describe('# RouteCache middleware test', function () { | ||
var app = express() | ||
const app = express() | ||
@@ -51,3 +52,3 @@ app.get('/hello', routeCache.cacheSeconds(1), function (req, res) { | ||
var agent = request.agent(app) | ||
const agent = request.agent(app) | ||
@@ -133,3 +134,3 @@ it('1st Hello', function (done) { | ||
it("Error states don't get cached", function (done) { | ||
var message | ||
let message | ||
@@ -136,0 +137,0 @@ agent.get('/500').expect(500).end(function (req, res) { |
Sorry, the diff of this file is not supported yet
Major refactor
Supply chain riskPackage has recently undergone a major refactor. It may be unstable or indicate significant internal changes. Use caution when updating to versions that include significant changes.
Found 1 instance in 1 package
135740
19
3366
2
2
+ Addeddebug@3.0.1
+ Addeddebug@3.0.1(transitive)
+ Addedms@2.0.0(transitive)