1.1.0 • Public • Published

Tcomb Validation Middleware

Express Middleware that performs runtime type checking of objects. It is primerily meant for type checking in development.

Build CircleCI

Tests Coverage Status


npm i tcomb-validation-middleware


Use the library tcomb to define the model of the data structure

const t = require('tcomb');

const test = t.struct({
  test: t.String,
  bool: t.Boolean,

module.exports = {

Then add as middleware to the route of the endpoint

const t = require('tcomb-validation-middleware');

... //Express setup stuff'/test', t(test), (req, res) => {
  res.send({ message: 'schema was obviously valid' });

The module also accepts an options object like so

t(test,{ active: true, verboseErrors: false })


To run the tests do

npm test


Applying strict type validation to your server will decrease it's performance slightly under heavy loads but the tradeoff of very usefull error messages can make it worth it. If in production in an environment where you control the client it's very easy to reuse your tcomb schemas. This allows you to move the validation client side without much development overhead.

The results in the table below are generated using artillery.

First Header Scenarios launched Scenarios completed Requests completed RPS sent Request latency min max median p95 p99 Scenario duration min max median p95 p99
Enabled 1000 1000 20000 970.87 -> 0.3 41.4 0.4 2.8 11.7 -> 14.5 447.2 18.7 98 384.6
Disabled 1000 1000 20000 970.4 -> 0.2 24.2 0.4 1.6 3.5 -> 11 124.8 16.6 48.6 108.1

If you would like to verify them clone the module from git then run the following commands.

cd express-tcomb-validation-middleware
npm install
node ./test/lib/index.js

Then in another window run

npm install -g artillery
artillery quick --count 1000 -n 20 http://localhost:4444/test/on/test/hi
artillery quick --count 1000 -n 20 http://localhost:4444/test/off/test/hi

Built with


Make a github issue if you have any feature requests or problems. I welcome pull requests as long as they have the relevent tests included.


This project is licensed under the MIT License - see the file for details

Package Sidebar


npm i tcomb-validation-middleware

Weekly Downloads






Unpacked Size

14.6 kB

Total Files


Last publish


  • thomasankcorn