GitXplorerGitXplorer
N

typeguard-composer

public
0 stars
0 forks
10 issues

Commits

List of commits on branch develop.
Unverified
e20a6242b98c7244b10e519063386b8402760fda

build: fix Github Action syntax error

NNoNameProvided committed 5 years ago
Unverified
76b67b51880e0ae9c53ff66c69f833c4958a5517

build: bump version to 0.9.10

NNoNameProvided committed 5 years ago
Unverified
88565fc52b13cec6d2ad3c344453e014341fa024

build: add continious deployment workflow

NNoNameProvided committed 5 years ago
Unverified
2d5c8d6efb394f6b635ce083d3ed83d371012234

build: rename CI task to Continuous Integration

NNoNameProvided committed 5 years ago
Unverified
57dbbc4a4924bd0c80a8431fa3bcb68834ba0a97

build: add CI badge to README

NNoNameProvided committed 5 years ago
Unverified
5be7d1530688c1bacaa365ade27beb936fe93db5

style: format code with latest prettier

NNoNameProvided committed 5 years ago

README

The README file for this repository.

typeguard-composer

CI codecov

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: [] });

Installation

npm install typeguard-composer

TODO

  • 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)

Usage

To be written... include info about defining schemas and how there validation works...

API

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.

validate function

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

  • 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 not null or undefined

License

MIT Licensed