27 lines
756 B
JavaScript
27 lines
756 B
JavaScript
'use strict'
|
|
|
|
const { semver, semverRange } = require('joi-extension-semver')
|
|
const Joi = require('@hapi/joi').extend(semver).extend(semverRange)
|
|
|
|
const optionalNonNegativeInteger = Joi.number().integer().min(0)
|
|
|
|
module.exports = {
|
|
optionalNonNegativeInteger,
|
|
|
|
nonNegativeInteger: optionalNonNegativeInteger.required(),
|
|
|
|
anyInteger: Joi.number().integer().required(),
|
|
|
|
semver: Joi.semver().valid().required(),
|
|
|
|
semverRange: Joi.semverRange().valid().required(),
|
|
|
|
optionalDottedVersionNClausesWithOptionalSuffix: Joi.string().regex(
|
|
/^\d+(\.\d+)*([-+].*)?$/
|
|
),
|
|
|
|
// TODO This accepts URLs with query strings and fragments, which for some
|
|
// purposes should be rejected.
|
|
optionalUrl: Joi.string().uri({ scheme: ['http', 'https'] }),
|
|
}
|