A Joi extension for validating image sizes and types.
npm install joi-image-extension --saveconst 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...
})
}))Set a minimum pixel width for an image.
Set a maximum pixel width for an image.
Set a minimum pixel height for an image.
Set a maximum pixel height for an image.
Set minimum pixel width and height for an image.
Set maximum pixel width and height for an image.
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'])
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'])
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 lintnpm run mochanpm run coverage && npm run check-coverage
As well as watch scripts for each of them, and for all in combination:
npm run watch:lintnpm run watch:mochanpm run watch:coveragenpm run watch:test