Skip to content

Joi extension for validating image size and type

License

Notifications You must be signed in to change notification settings

doinginc/joi-image-extension

Repository files navigation

joi-image-extension

A Joi extension for validating image sizes and types.

Requirements

Installation

npm install joi-image-extension --save

Usage

const fs = require('fs')
const BaseJoi = require('joi')
const ImageExtension = require('joi-image-extension')
const concat = require('concat-stream')

const Joi = BaseJoi.extend(ImageExtension)

const schema = Joi
  .image()
  .minDimensions(100, 50)

fs
  .createReadStream('./avatar.jpg')
  .pipe(concat(image => {
    Joi.validate(image, schema, (err, value) => {
      // Handle validation result...
    })
  }))

API

image.minWidth(minimum pixel width)

Set a minimum pixel width for an image.

image.maxWidth(maximum pixel width)

Set a maximum pixel width for an image.

image.minHeight(minimum pixel height)

Set a minimum pixel height for an image.

image.maxHeight(maximum pixel height)

Set a maximum pixel height for an image.

image.minDimensions(minimum pixel width, minimum pixel height)

Set minimum pixel width and height for an image.

image.maxDimensions(maximum pixel width, maximum pixel height)

Set maximum pixel width and height for an image.

image.allowTypes(allowed image types)

Set the allowed image type(s). This can be a single string or an array of strings of lower case extensions listed under "Supported Formats" for the image-size package, e.g. Joi.image().allowTypes('jpg'), Joi.image().allowTypes(['png', 'bmp'])

image.disallowTypes(disallowed image types)

Set the disallowed image type(s). This can be a single string or an array of strings of lower case extensions listed under "Supported Formats" for the image-size package, e.g. Joi.image().allowTypes('jpg'), Joi.image().allowTypes(['png', 'bmp'])

Development

Testing

npm test runs linting (with eslint), unit tests (with mocha), and test coverage (with nyc) all in one. There are also piece-meal scripts for running them one-off:

  • npm run lint
  • npm run mocha
  • npm run coverage && npm run check-coverage

As well as watch scripts for each of them, and for all in combination:

  • npm run watch:lint
  • npm run watch:mocha
  • npm run watch:coverage
  • npm run watch:test

About

Joi extension for validating image size and type

Resources

License

Stars

Watchers

Forks

Packages

No packages published