Skip to content

Commit 2b431e4

Browse files
committed
Refactor internals a bit
1 parent c98cd7e commit 2b431e4

File tree

1 file changed

+43
-33
lines changed

1 file changed

+43
-33
lines changed

index.js

Lines changed: 43 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -9,51 +9,35 @@
99

1010
/**
1111
* Module dependencies.
12+
* @private
1213
*/
1314

14-
var zlib = require('zlib');
15-
var accepts = require('accepts');
16-
var bytes = require('bytes');
15+
var accepts = require('accepts')
16+
var bytes = require('bytes')
17+
var compressible = require('compressible')
1718
var debug = require('debug')('compression')
18-
var onHeaders = require('on-headers');
19-
var compressible = require('compressible');
20-
var vary = require('vary');
19+
var onHeaders = require('on-headers')
20+
var vary = require('vary')
21+
var zlib = require('zlib')
2122

2223
/**
23-
* Supported content-encoding methods.
24+
* Module exports.
2425
*/
2526

26-
exports.methods = {
27-
gzip: zlib.createGzip
28-
, deflate: zlib.createDeflate
29-
};
30-
31-
/**
32-
* Default filter function.
33-
*/
34-
35-
exports.filter = function filter(req, res) {
36-
var type = res.getHeader('Content-Type')
37-
38-
if (type === undefined || !compressible(type)) {
39-
debug('%s not compressible', type)
40-
return false
41-
}
42-
43-
return true
44-
};
27+
module.exports = compression
4528

4629
/**
4730
* Compress response data with gzip / deflate.
4831
*
4932
* @param {Object} options
5033
* @return {Function} middleware
51-
* @api public
34+
* @public
5235
*/
5336

54-
module.exports = function compression(options) {
37+
function compression(options) {
5538
options = options || {};
56-
var filter = options.filter || exports.filter;
39+
40+
var filter = options.filter || shouldCompress
5741
var threshold;
5842

5943
if (false === options.threshold || 0 === options.threshold) {
@@ -173,8 +157,8 @@ module.exports = function compression(options) {
173157
}
174158

175159
// compression method
176-
var accept = accepts(req);
177-
var method = accept.encodings(['gzip', 'deflate', 'identity']);
160+
var accept = accepts(req)
161+
var method = accept.encoding(['gzip', 'deflate', 'identity'])
178162

179163
// negotiation failed
180164
if (!method || method === 'identity') {
@@ -184,7 +168,11 @@ module.exports = function compression(options) {
184168

185169
// compression stream
186170
debug('%s compression', method)
187-
stream = exports.methods[method](options);
171+
stream = method === 'gzip'
172+
? zlib.createGzip(options)
173+
: zlib.createDeflate(options)
174+
175+
// add bufferred listeners to stream
188176
addListeners(stream, stream.on, listeners)
189177

190178
// overwrite the flush method
@@ -214,10 +202,11 @@ module.exports = function compression(options) {
214202

215203
next();
216204
};
217-
};
205+
}
218206

219207
/**
220208
* Add bufferred listeners to stream
209+
* @private
221210
*/
222211

223212
function addListeners(stream, on, listeners) {
@@ -226,4 +215,25 @@ function addListeners(stream, on, listeners) {
226215
}
227216
}
228217

218+
/**
219+
* No-operation function
220+
* @private
221+
*/
222+
229223
function noop(){}
224+
225+
/**
226+
* Default filter function.
227+
* @private
228+
*/
229+
230+
function shouldCompress(req, res) {
231+
var type = res.getHeader('Content-Type')
232+
233+
if (type === undefined || !compressible(type)) {
234+
debug('%s not compressible', type)
235+
return false
236+
}
237+
238+
return true
239+
}

0 commit comments

Comments
 (0)