server-timing-header
Advanced tools
Comparing version 1.5.1 to 1.6.0
62
index.js
@@ -21,4 +21,5 @@ const onHeaders = require("on-headers"); | ||
* @param {string} [userAgent] — string that contain user agent description | ||
* @param {boolean} [sendHeaders=true] - you may send or don't send headers depending on environment | ||
*/ | ||
constructor(userAgent = "") { | ||
constructor(userAgent = "", sendHeaders = true) { | ||
// Before 64 version Chrome support old server-timing | ||
@@ -42,3 +43,10 @@ // specification with different syntax | ||
/** | ||
* Should middleware send headers | ||
* @private | ||
* @type {boolean} - if false middleware will not add headers | ||
*/ | ||
this.sendHeaders = sendHeaders; | ||
/** | ||
* @private | ||
* @type {object} - We will store time metrics in this object | ||
@@ -55,5 +63,8 @@ */ | ||
// We should keep consistent context for non static methods | ||
this.addHeaders = this.addHeaders.bind(this); | ||
this.from = this.from.bind(this); | ||
this.to = this.to.bind(this); | ||
Object.getOwnPropertyNames(Object.getPrototypeOf(this)).forEach(name => { | ||
const method = this[name]; | ||
if (name !== "constructor" && typeof method === "function") { | ||
this[name] = method.bind(this); | ||
} | ||
}); | ||
} | ||
@@ -72,3 +83,3 @@ | ||
* const app = express(); | ||
* app.use(serverTimingMiddleware); | ||
* app.use(serverTimingMiddleware()); | ||
* app.use(function (req, res, next) { | ||
@@ -122,3 +133,3 @@ * // If one measurement include other inside you may substract times | ||
* const app = express(); | ||
* app.use(serverTimingMiddleware); | ||
* app.use(serverTimingMiddleware()); | ||
* app.get('/', function (req, res, next) { | ||
@@ -148,3 +159,3 @@ * // If you define only start time for metric, | ||
* const app = express(); | ||
* app.use(serverTimingMiddleware); | ||
* app.use(serverTimingMiddleware()); | ||
* app.get('/', function (req, res, next) { | ||
@@ -215,3 +226,3 @@ * // fetching data from database | ||
* const app = express(); | ||
* app.use(serverTimingMiddleware); | ||
* app.use(serverTimingMiddleware()); | ||
* app.get('/', function (req, res, next) { | ||
@@ -241,3 +252,3 @@ * // You got time metric from the external source | ||
* const app = express(); | ||
* app.use(serverTimingMiddleware); | ||
* app.use(serverTimingMiddleware()); | ||
* app.get('/', function (req, res, next) { | ||
@@ -251,2 +262,3 @@ * req.serverTiming.from('db'); | ||
addHeaders(response) { | ||
if (!this.addHeaders) return; | ||
if (response.headerSent) throw new Error(HEADERS_SENT); | ||
@@ -385,7 +397,11 @@ const updatedMetrics = this.hooks | ||
* @exports serverTimingMiddleware | ||
* @param {object} [options] — middleware options | ||
* @param {boolean} [options.sendHeaders] - should middleware send headers (may be disabled for some environments) | ||
* @return {function} - return express middleware | ||
* @example <caption>How to add middleware</caption> | ||
* const serverTiming = require('server-timing-header'); | ||
* const express = require('express'); | ||
* const serverTimingMiddleware = require('server-timing-header'); | ||
* const port = 3000; | ||
* const app = express(); | ||
* app.use(serverTimingMiddleware); | ||
* app.use(serverTimingMiddleware()); | ||
* app.get('/', function (req, res, next) { | ||
@@ -398,12 +414,20 @@ * req.serverTiming.from('db'); | ||
*/ | ||
module.exports = function serverTimingMiddleware(request, response, next) { | ||
// Adding controller to request object | ||
request.serverTiming = new ServerTiming(request.header("user-agent")); | ||
module.exports = ({ sendHeaders = true } = {}) => { | ||
function serverTimingMiddleware(request, response, next) { | ||
// Adding controller to request object | ||
request.serverTiming = new ServerTiming( | ||
request.header("user-agent"), | ||
sendHeaders | ||
); | ||
// We should send server-timing headers before headers are sent | ||
onHeaders(response, () => { | ||
request.serverTiming.addHeaders(response); | ||
}); | ||
// We should send server-timing headers before headers are sent | ||
if (sendHeaders) | ||
onHeaders(response, () => { | ||
request.serverTiming.addHeaders(response); | ||
}); | ||
next(); | ||
next(); | ||
} | ||
return serverTimingMiddleware; | ||
}; |
{ | ||
"name": "server-timing-header", | ||
"version": "1.5.1", | ||
"version": "1.6.0", | ||
"description": "Allow you add metrics via Server-Timing header", | ||
@@ -5,0 +5,0 @@ "main": "index.js", |
@@ -18,3 +18,3 @@ # Abstract | ||
const app = express(); | ||
app.use(serverTimingMiddleware); | ||
app.use(serverTimingMiddleware({sendHeaders: (process.env.NODE_ENV !== 'production')})); | ||
app.get('/', function (req, res, next) { | ||
@@ -35,3 +35,3 @@ req.serverTiming.from('db'); | ||
const app = express(); | ||
app.use(serverTimingMiddleware); | ||
app.use(serverTimingMiddleware()); | ||
app.get('/', function (req, res, next) { | ||
@@ -129,3 +129,3 @@ // You got time metric from the external source | ||
const app = express(); | ||
app.use(serverTimingMiddleware); | ||
app.use(serverTimingMiddleware()); | ||
app.use(function (req, res, next) { | ||
@@ -173,3 +173,3 @@ // If one measurement include other inside you may substract times | ||
const app = express(); | ||
app.use(serverTimingMiddleware); | ||
app.use(serverTimingMiddleware()); | ||
app.get('/', function (req, res, next) { | ||
@@ -203,3 +203,3 @@ // If you define only start time for metric, | ||
const app = express(); | ||
app.use(serverTimingMiddleware); | ||
app.use(serverTimingMiddleware()); | ||
app.get('/', function (req, res, next) { | ||
@@ -252,3 +252,3 @@ // fetching data from database | ||
const app = express(); | ||
app.use(serverTimingMiddleware); | ||
app.use(serverTimingMiddleware()); | ||
app.get('/', function (req, res, next) { | ||
@@ -307,5 +307,4 @@ // You got time metric from the external source | ||
- `request` | ||
- `response` | ||
- `next` | ||
- `options` **[object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object)?** — middleware options (optional, default `{}`) | ||
- `options.sendHeaders` **[boolean](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Boolean)?** should middleware send headers (may be disabled for some environments) (optional, default `true`) | ||
@@ -318,6 +317,7 @@ ### Examples | ||
```javascript | ||
const serverTiming = require('server-timing-header'); | ||
const express = require('express'); | ||
const serverTimingMiddleware = require('server-timing-header'); | ||
const port = 3000; | ||
const app = express(); | ||
app.use(serverTimingMiddleware); | ||
app.use(serverTimingMiddleware()); | ||
app.get('/', function (req, res, next) { | ||
@@ -330,1 +330,3 @@ req.serverTiming.from('db'); | ||
``` | ||
Returns **[function](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Statements/function)** return express middleware |
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
739018
396
324