Skip to content

Commit

Permalink
Change digits argument to an options argument
Browse files Browse the repository at this point in the history
  • Loading branch information
dougwilson committed Sep 16, 2014
1 parent 98cb99b commit dd7f841
Show file tree
Hide file tree
Showing 5 changed files with 68 additions and 9 deletions.
5 changes: 5 additions & 0 deletions HISTORY.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,8 @@
unreleased
==========

* Change `digits` argument to an `options` argument

2.0.1 / 2014-08-10
==================

Expand Down
11 changes: 9 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -20,11 +20,18 @@ $ npm install response-time
var responseTime = require('response-time')
```

### responseTime(digits)
### responseTime(options)

Returns middleware that adds a `X-Response-Time` header to responses.

- `digits` - the fixed number of digits to include. (default: `3`)
#### Options

`responseTime` accepts these properties in the options object.

##### digits

The fixed number of digits to include in the output, which is always in
milliseconds, defaults to `3` (ex: `2.300ms`).

## Examples

Expand Down
21 changes: 16 additions & 5 deletions index.js
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
* Module dependencies
*/

var deprecate = require('depd')('response-time')
var onHeaders = require('on-headers')

/**
Expand All @@ -18,15 +19,25 @@ var onHeaders = require('on-headers')
* Adds the `X-Response-Time` header displaying the response
* duration in milliseconds.
*
* @param {number} [digits=3]
* @param {object} [options]
* @param {number} [options.digits=3]
* @return {function}
* @api public
*/

module.exports = function responseTime(digits) {
digits = digits === undefined
? 3
: digits
module.exports = function responseTime(options) {
if (typeof options === 'number') {
// back-compat single number argument
deprecate('number argument: use {digits: ' + JSON.stringify(options) + '} instead')
options = { digits: options }
}

options = options || {}

// response time digits
var digits = options.digits !== undefined
? options.digits
: 3

return function responseTime(req, res, next) {
var startAt = process.hrtime()
Expand Down
1 change: 1 addition & 0 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
"license": "MIT",
"repository": "expressjs/response-time",
"dependencies": {
"depd": "0.4.5",
"on-headers": "~1.0.0"
},
"devDependencies": {
Expand Down
39 changes: 37 additions & 2 deletions test/test.js
Original file line number Diff line number Diff line change
@@ -1,3 +1,6 @@

process.env.NO_DEPRECATION = 'response-time'

var http = require('http');
var request = require('supertest');
var responseTime = require('..')
Expand Down Expand Up @@ -28,6 +31,13 @@ describe('responseTime()', function () {
.expect('X-Response-Time', /^[0-9]+\.[0-9]{3}ms$/, done)
})

it('should allow custom digits', function (done) {
var server = createServer(5)
request(server)
.get('/')
.expect('X-Response-Time', /^[0-9]+\.[0-9]{5}ms$/, done)
})

it('should allow no digits', function (done) {
var server = createServer(0)
request(server)
Expand All @@ -37,8 +47,33 @@ describe('responseTime()', function () {
})
})

function createServer(digits, fn) {
var _responseTime = responseTime(digits)
describe('responseTime(options)', function () {
describe('with "digits" option', function () {
it('should default to 3', function (done) {
var server = createServer()
request(server)
.get('/')
.expect('X-Response-Time', /^[0-9]+\.[0-9]{3}ms$/, done)
})

it('should allow custom digits', function (done) {
var server = createServer({ digits: 5 })
request(server)
.get('/')
.expect('X-Response-Time', /^[0-9]+\.[0-9]{5}ms$/, done)
})

it('should allow no digits', function (done) {
var server = createServer({ digits: 0 })
request(server)
.get('/')
.expect('X-Response-Time', /^[0-9]+ms$/, done)
})
})
})

function createServer(opts, fn) {
var _responseTime = responseTime(opts)
return http.createServer(function (req, res) {
_responseTime(req, res, function (err) {
setTimeout(function () {
Expand Down

0 comments on commit dd7f841

Please sign in to comment.