Performant and composable type guards for runtime data validation.
import { validate } from 'typeguard-composer';
import { isString, isNumber } from 'typeguard-composer/validators';
import { AddressSchema } from './my-address.schema';
/**
* Schemas are simple object where every value is an object or
* array containing type guard functions or a single type guard function.
*/
const PersonSchema = {
name: isString,
age: isNumber,
addresses: [AddressSchema],
};
validate(PersonSchema, { name: 'Test Elek', age: 18, addresses: [] });
npm install typeguard-composer
- add two different error for schema and value errors
- add support for logging/returning invalid values
- add support for throwing error on extraneous values
- return object instead of simple true/false with reasoning (eg: "'MyValue' was expected to match isMyValidator.")
- create repo for complex types (dates, id formats, phone numbers, addresses, etc)
To be written... include info about defining schemas and how there validation works...
The public API is extremely small, it consists only one function to validate values against schemas and a validator for every primitive types which can be used to build custom schemas.
Tries to validate the received value against the received schema. If the value is valid it returns true and false otherwise.
Signature:
validate(schema: TypeSchema, value: any, options: ValidatorOptions): boolean
- validators are simple functions what implement the type guard pattern described the Typescript documentation
- this library includes validators for the basic primitive types only
- you can and should define your own validators when using this library
- validators should be fairly simple in complexity and check a single value
Note: You can check out the NoNameProvided/typeguard-composer-validators repository to see a list of available pre-written complex schemas and validator functions.
List of included base validators:
isBoolean
isNumber
isString
isSymbol
isNull
isUndefined
isObject
isArray
isFunction
-
isAny
- always returns true -
isValue
- return true when the provided value is notnull
orundefined
MIT Licensed