Files
overleaf-cep/services/web/app/src/infrastructure/Validation.js
T
Tim Down 473e74ecf1 Merge pull request #16749 from overleaf/td-upgrade-joi-celebrate
Upgrade Joi and Celebrate to latest

GitOrigin-RevId: 287130f6e476c04f9eb4efdf202729452b081c40
2024-02-05 09:04:16 +00:00

35 lines
785 B
JavaScript

const { Joi: CelebrateJoi, celebrate, errors } = require('celebrate')
const { ObjectId } = require('mongodb')
const objectIdValidator = {
type: 'objectId',
base: CelebrateJoi.any(),
messages: {
'objectId.invalid': 'needs to be a valid ObjectId',
},
coerce(value) {
return {
value: typeof value === typeof ObjectId ? value : new ObjectId(value),
}
},
prepare(value, helpers) {
if (!ObjectId.isValid(value)) {
return {
errors: helpers.error('objectId.invalid'),
}
}
},
}
const Joi = CelebrateJoi.extend(objectIdValidator)
const errorMiddleware = errors()
module.exports = { Joi, validate, errorMiddleware }
/**
* Validation middleware
*/
function validate(schema) {
return celebrate(schema, { allowUnknown: true })
}