Measured.js

A thin wrapper around the Node.js Performance API to transparently
measure the execution time of asynchronous functions.
Installing
Using yarn:
yarn add @twuni/measured
Using npm:
npm install @twuni/measured
Usage
First, import the module:
import { measured } from '@twuni/measured';
const { measured } = require('@twuni/measured');
Then, you can use the measured() function like this:
If this is what your code looked like before:
await doExpensiveThing();
To measure that, just change it to read something like this:
await measured(doExpensiveThing, {
onComplete: ({ duration }) => {
console.debug(`Completed in ${duration}ms`);
},
onReject: ({ duration }) => {
console.debug(`Rejected in ${duration}ms`);
},
onResolve: ({ duration }) => {
console.debug(`Resolved in ${duration}ms`);
}
})();
Each of these callbacks is optional and is described as follows:
-
The #onComplete() function will run whether the wrapped behavior resolves or rejects.
-
The #onResolve() function will run only when the wrapped behavior resolves.
-
The #onReject() function will run only when the wrapped behavior rejects.
Examples
Express.js Middleware
const express = require('express');
const app = express();
app.use((request, response, next) => measured(next, {
onComplete: ({ duration }) => {
console.log(`${request.method} ${request.path} served in ${duration}ms`);
}
})());