Skip to content

Validation Library Guide

Overview

This library provides a comprehensive set of validation schemas to validate various data types and structures in a scalable and flexible manner. Below is the detailed documentation for each schema type available in the library.

Table of Contents

StringSchema

Description

The StringSchema validates string values and allows setting constraints like minimum and maximum length.

Usage

typescript
const schema = SchemaValidator.string().min(3).max(10).required(true);

Example

typescript
const validationResult = schema.validate('example');
console.log(validationResult.isValid); // true
console.log(validationResult.errors);  // []

NumberSchema

Description

The NumberSchema validates number values and allows setting constraints like minimum and maximum value.

Usage

typescript
const schema = SchemaValidator.number().min(18).max(65);

Example

typescript
const validationResult = schema.validate(25);
console.log(validationResult.isValid); // true
console.log(validationResult.errors);  // []

BooleanSchema

Description

The BooleanSchema validates boolean values.

Usage

typescript
const schema = SchemaValidator.boolean().required(true);

Example

typescript
const validationResult = schema.validate(true);
console.log(validationResult.isValid); // true
console.log(validationResult.errors);  // []

ObjectSchema

Description

The ObjectSchema validates objects based on a schema definition for each property.

Usage

typescript
const schema = SchemaValidator.object({
  name: SchemaValidator.string().min(3).max(30),
  age: SchemaValidator.number().min(18),
});

Example

typescript
const validationResult = schema.validate({ name: 'John', age: 25 });
console.log(validationResult.isValid); // true
console.log(validationResult.errors);  // []

ArraySchema

Description

The ArraySchema validates arrays and allows setting constraints on the array's length and its elements' schema.

Usage

typescript
const schema = SchemaValidator.array(SchemaValidator.string().min(2).max(20));

Example

typescript
const validationResult = schema.validate(['hello', 'world']);
console.log(validationResult.isValid); // true
console.log(validationResult.errors);  // []

UnionSchema

Description

The UnionSchema validates a value that can match any one of the provided schemas.

Usage

typescript
const schema = SchemaValidator.union([SchemaValidator.string(), SchemaValidator.number()]);

Example

typescript
const validationResult = schema.validate(42);
console.log(validationResult.isValid); // true
console.log(validationResult.errors);  // []

EnumSchema

Description

The EnumSchema validates a value that is one of a predefined set of allowed values.

Usage

typescript
const schema = SchemaValidator.enum(['red', 'green', 'blue']);

Example

typescript
const validationResult = schema.validate('green');
console.log(validationResult.isValid); // true
console.log(validationResult.errors);  // []

DateSchema

Description

The DateSchema validates date values and allows setting constraints on the date range.

Usage

typescript
const schema = SchemaValidator.date().min(new Date('2020-01-01')).max(new Date());

Example

typescript
const validationResult = schema.validate(new Date('2022-01-01'));
console.log(validationResult.isValid); // true
console.log(validationResult.errors);  // []

TupleSchema

Description

The TupleSchema validates an array with a fixed length and specific types at each index.

Usage

typescript
const schema = SchemaValidator.tuple([SchemaValidator.string(), SchemaValidator.number()]);

Example

typescript
const validationResult = schema.validate(['hello', 42]);
console.log(validationResult.isValid); // true
console.log(validationResult.errors);  // []

RecordSchema

Description

The RecordSchema validates an object where all keys must match a schema and all values must match another schema.

Usage

typescript
const schema = SchemaValidator.record(SchemaValidator.string(), SchemaValidator.number());

Example

typescript
const validationResult = schema.validate({ a: 1, b: 2 });
console.log(validationResult.isValid); // true
console.log(validationResult.errors);  // []

NullableSchema

Description

The NullableSchema allows a value to be null or to satisfy another schema.

Usage

typescript
const schema = SchemaValidator.nullable(SchemaValidator.string().min(3));

Example

typescript
const validationResult = schema.validate(null);
console.log(validationResult.isValid); // true
console.log(validationResult.errors);  // []

AnySchema

Description

The AnySchema accepts any value without restrictions.

Usage

typescript
const schema = SchemaValidator.any();

Example

typescript
const validationResult = schema.validate(123);
console.log(validationResult.isValid); // true
console.log(validationResult.errors);  // []

LazySchema

Description

The LazySchema allows defining a schema that is evaluated lazily, useful for recursive or conditional schemas.

Usage

typescript
const recursiveSchema = new LazySchema(() =>
  SchemaValidator.object({
    name: SchemaValidator.string(),
    children: SchemaValidator.array(new LazySchema(() => recursiveSchema)).optional(),
  })
);

Example

typescript
const validationResult = recursiveSchema.validate({
  name: 'parent',
  children: [{ name: 'child' }],
});
console.log(validationResult.isValid); // true
console.log(validationResult.errors);  // []

LiteralSchema

Description

The LiteralSchema validates that a value matches a specific literal value.

Usage

typescript
const schema = SchemaValidator.literal('specificValue');

Example

typescript
const validationResult = schema.validate('specificValue');
console.log(validationResult.isValid); // true
console.log(validationResult.errors);  // []

TransformSchema

Description

The TransformSchema allows transforming the value during validation, applying a transformation function before validating.

Usage

typescript
const schema = SchemaValidator.transform(SchemaValidator.string().min(3), value => value.trim());

Example

typescript
const validationResult = schema.validate('   hello   ');
console.log(validationResult.isValid); // true
console.log(validationResult.errors);  // []

Summary

This documentation provides a comprehensive overview of all the available validation schemas in the library. Each schema is designed to be flexible and reusable, enabling developers to build complex validation logic easily.

For more detailed examples and use cases, refer to the specific sections above.

Validation Library Guide has loaded