New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

restify-etag-cache

Package Overview
Dependencies
Maintainers
1
Versions
13
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

restify-etag-cache - npm Package Compare versions

Comparing version 1.0.0 to 1.0.1

106

lib/index.js

@@ -8,63 +8,75 @@ 'use strict';

function eTagCache(req, res, nextM) {
let oldWrite,
oldWriteHead,
oldEnd;
function eTagCache(options) {
let chunks = [];
let headers = [];
/**
* TODO
* Implement the options logic.
* - ignore urls
* - ?
*/
oldWrite = res.write;
oldWriteHead = res.writeHead;
oldEnd = res.end;
function middleware(req, res, nextM) {
let oldWrite,
oldWriteHead,
oldEnd;
chunks = [];
headers = [];
let chunks = [];
let headers = [];
res.writeHead = function() {
headers.push(arguments);
};
oldWrite = res.write;
oldWriteHead = res.writeHead;
oldEnd = res.end;
res.write = function(chunk) {
chunks.push(chunk);
};
chunks = [];
headers = [];
res.end = function(chunk) {
if (chunk) {
res.writeHead = function() {
headers.push(arguments);
};
res.write = function(chunk) {
chunks.push(chunk);
}
};
res.writeHead = oldWriteHead;
res.write = oldWrite;
res.end = oldEnd;
res.end = function(chunk) {
if (chunk) {
chunks.push(chunk);
}
const strEtag = etag(chunks.join(''));
res.setHeader('etag', strEtag);
debug('Generated etag: ' + strEtag);
res.writeHead = oldWriteHead;
res.write = oldWrite;
res.end = oldEnd;
async.eachSeries(restify.conditionalRequest(), (conditionalRequestMiddleware, nextConditionalRequestMiddleware) => {
conditionalRequestMiddleware(req, res, (stopChainFlag) => {
debug('nextConditionalRequestMiddleware');
if (stopChainFlag === false) {
nextConditionalRequestMiddleware(new Error('Send client cache headers'));
} else {
nextConditionalRequestMiddleware();
const strEtag = etag(chunks.join(''));
res.setHeader('etag', strEtag);
debug('Generated etag: ' + strEtag);
async.eachSeries(restify.conditionalRequest(), (conditionalRequestMiddleware, nextConditionalRequestMiddleware) => {
conditionalRequestMiddleware(req, res, (stopChainFlag) => {
debug('nextConditionalRequestMiddleware');
if (stopChainFlag === false) {
nextConditionalRequestMiddleware(new Error('Send client cache headers'));
} else {
nextConditionalRequestMiddleware();
}
});
}, (err) => {
if (!err) {
headers.forEach((header) => {
oldWriteHead.apply(res, header);
});
chunks.forEach((chunk) => {
oldWrite.apply(res, [chunk]);
});
oldEnd.apply(res, arguments);
}
});
}, (err) => {
if (!err) {
headers.forEach((header) => {
oldWriteHead.apply(res, header);
});
};
chunks.forEach((chunk) => {
oldWrite.apply(res, [chunk]);
});
nextM();
}
oldEnd.apply(res, arguments);
}
});
};
nextM();
return middleware;
}

@@ -71,0 +83,0 @@

{
"name": "restify-etag-cache",
"version": "1.0.0",
"version": "1.0.1",
"description": "Restify ETag Cache. The easy way.",

@@ -5,0 +5,0 @@ "main": "lib/index.js",

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc