Skip to content

AidenHadisi/Joi-Decorators

Repository files navigation

Joi-Decorators

Joi validation decorators for TypeScript.

Easily validate your classes, method parameters, and properties using Joi decorators.

Install

Install using npm:

$ npm install @aidenhadisi/joi-decorators

Or using yarn:

$ yarn add @aidenhadisi/joi-decorators

Usage

Validate Class Properties

Valid decorator validates class properties whenever the property is set or modified. Anytime the value is modified the validation schema will be applied.

import { Valid } from "@aidenhadisi/joi-decorators";

//Create a Joi Schema:
let schema = Joi.string().max(5);

class Employee {
	//Pass schema to decorator
	@Valid(schema)
	public id: string

	public name: string;

	constructor() {
		this.name = "John Doe"
		this.id = "valid";
	}
}

let employee = new Employee();

//Throws Joi.ValidationError
employee.id = "invalid";

Furthermore, If an invalid value is provided during the class construction, the constructor function will throw.

import { Valid } from "@aidenhadisi/joi-decorators";

//Create a Joi Schema:
let schema = Joi.string().max(5);

class Employee {
	//Pass schema to decorator
	@Valid(schema)
	public id: string

	public name: string;

	constructor() {
		this.name = "John Doe"
		//Invalid value in constructor
		this.id = "Invalid";
	}
}

//Throws Joi.ValidationError
let employee = new Employee();

Validating Constructor Parameters

Validate and Valid decorators can be used to validate constructor parameters.

import { Valid, Validate } from "@aidenhadisi/joi-decorators";

//Create a Joi Schema:
let schema = Joi.string().max(5);

//Mark class with Validate
@Validate()
class Employee {
	public id: string
	public name: string;

	//Mark the parameter with Valid decorator and pass the Joi schema
	constructor(@Valid(schema) id: string) {
		this.name = "John Doe"
		this.id = id;
	}
}

//Throws Joi.ValidationError
let employee = new Employee("Invalid");

Validating Method Parameters

Validate and Valid decorators can be used to validate method parameters.

import { Valid, Validate } from "@aidenhadisi/joi-decorators";

//Create a Joi Schema:
let schema = Joi.string().max(5);

class Employee {
	public id: string
	public name: string;

	constructor() {
		this.name = "John Doe"
		this.id = "valid";
	}

	//Mark the method with validate
	//and mark the parameter with Valid decorator and pass the Joi schema
	@Validate()
	public changeId(@Valid(schema) id: string) {
		this.id = id;
	}
}


let employee = new Employee();

//Throws Joi.ValidationError
employee.changeId("invalid");

Contributing

Contributions are welcome. Feel free to add new features and improve the code.

About

Typescript decorators for Joi validator.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published