Skip to content

jacoobia/schemeit

Repository files navigation

TypeScript

SchemeIt

A lightweight express-js request payload validator, originally written for my personal projects and separated out into its own package for easier use. Schemeit will check individual elements against their chosen validators, ensure all non-optional elements are present in a payload and can also optionally enforce noExtraElements to prevent bloated payloads.

Install

npm install schemeit

Usage

The following is a basic example usage of schemeit to build a validator middleware for an endpoint:

import express from "express";
import createValidator, { NumberValidator, StringValidator } from 'schemeit';

const app = express();

const testValidator = createValidator({
  name: StringValidator(),
  age: NumberValidator.optional()
});

app.post('/test', testValidator, async (request: Request, response: Response) => {
  response.status(200).json({ message: 'Success!' });
});

app.listen(3000);

You can also use the exported function objectValidator to create your own validation function with custom rules and optinally an error message like so:

const SpecificStringValidator: ValidationFunction = objectValidator((object: unknown) => {
  return object === 'foo' || object === 'bar';
}, 'Invalid type, should be foo or bar!');

Validator Options

Option Description
noExtraElements Rejects payloads with elements that do not exist in the validator schema
errorListName Sets the name of the error list returned by the validator middleware, by default it is just errors