A Joi extension for validating image sizes and types.
npm install joi-image-extension --save
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...
})
}))
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 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