@no-pro/express-middleware v1.0.0
no-pro express-middleware - express-compatible middleware to profile keyed requests
Part of the no-pro mono-repo.
install
npm install @no-pro/express-middlewarequick start
...
const profilingMiddleware = require('@no-pro/express-middleware')
...
const app = express()
...
app.use('*', profilingMiddleware({
profilingKey: 'my-secret-profiling-key-42',
writeProfile: '/tmp'
}))
...The options here indicate that profiles will be written to the /tmp directory,
and that only requests with the following header will be profiled:
x-no-pro-profiling-key: my-secret-profiling-key-42usage
The package exports a function which will return an express middleware function to profile requests to the server.
The exported function takes an object as a parameter, with the following properties:
all the options from the runtime startProfiling() function function
profilingKey(required)A string which will be the "key" that indicates requests should be profiled. This key needs to be sent as the value of the http header
x-no-pro-profiling-keywhen making a request that you'd like to profile.writeProfile(required)A string or function which indicates where to write the profile.
If a string is passed, it will be used as the directory name to write the profile to, with the suggested file name, as described below.
If a function is passed, it will be invoked with the following arguments:
- http request object
- http response object
- JSON-able profile data
- suggestedFileName
The suggested file name is built from the date, request method, and url.
For example, to write the profile data to the console (not recommended, heh), use:
writeProfile: function (req, res, profile) { console.log(profile) }profilingKeyHeaderRather than using the header
x-no-pro-profiling-keyto pass the profiling key, you can specify the header with this option.profilingSuggestedNameHeaderIn the http response of a request that has been profiled, a header with the name
x-no-pro-suggested-namewill be added with the suggested name of the profile. The name of the header can be overridden with this value.
changelog
See the file CHANGELOG.md.
license / contributing / etc
See the root of the no-pro mono-repo.