0.2.2 • Published 3 years ago

@dialexa/pleco-joi v0.2.2

Weekly downloads
-
License
MIT
Repository
github
Last release
3 years ago

Pleco logo

Pleco Joi

Table of Contents

Overview

The Joi validation schemas provide additional protection around what the user inputs.

Joi Validation Schemas

Provided Exports

filterQuerySchema: a function that returns the schema pertaining to the IFilterQuery typescript type or the FilterQuery_* GraphQL type.

The rules for filters are:

  • each filter query can contain nested AND or OR
  • each filter object can have multiple operators
  • each filter can only have the keys specified in the schema
  • the filter can be empty

Usage

import { filterQuerySchema } from '@dialexa/pleco-joi';
import Joi from 'joi';

const vehicleFilterSchema = Joi.object().keys({
  AND: Joi.array().items(Joi.lazy(() => vehicleFilterSchema)),
  OR: Joi.array().items(Joi.lazy(() => vehicleFilterSchema)),
  make: filterQuerySchema('String', Joi.string()),
  model: filterQuerySchema('String', Joi.string()),
  // We can define any Joi schema
  numberOfUsers: filterQuerySchema('Int', Joi.number().integer().min(0)),
  highwayMPG: filterQuerySchema('Int', Joi.number().integer().min(0)),
  cityMPG: filterQuerySchema('Int', Joi.number().integer().min(0)),
  userSurveyRating: filterQUerySchema('Float', Joi.number().min(0).max(100)),
});

sortDirectionSchema: validates that the argument to a sort operation is 'ASC' or 'DESC' (case insensitive). Validating against this schema will also automatically convert the input to uppercase.

Usage

import { sortDirectionSchema } from '@dialexa/pleco-joi';
import Joi from 'joi';

const vehicleSortSchemaKeys = {
  numberOfUsers: sortDirectionSchema,
  userSurveyRating: sortDirectionSchema,
};

const vehicleSortSchema = Joi.object().keys(vehicleSortSchemaKeys).oxor(Object.keys(vehicleSortSchemaKeys));

limitOffsetPageSchema: validates that an object containing optional limit and offset are non-negative integers

Resources

0.2.2

3 years ago

0.2.1

5 years ago

0.2.0

5 years ago

0.2.0-alpha.0

5 years ago

0.1.2

5 years ago

0.1.1

5 years ago

0.1.0

5 years ago